<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>The Typesafe Blog</title>
        <link>http://typesafe.com/blog</link>
        <description>The Typesafe Blog</description>
        <generator>Play Framework</generator>
        <atom:link href="http://typesafe.com/blog/rss.xml" rel="self"/>
        
            <item>
                <pubDate>Mon, 10 Jun 2013 01:29:00 UTC</pubDate>
                <title>Typesafe Activator 0.2.1 Released at Scala Days 2013</title>
                <link>http://typesafe.com/blog/typesafe-activator-0.2.1-released-at-scala-days-2013</link>
                <guid>http://blog.typesafe.com/typesafe-activator-0.2.1-released-at-scala-days-2013</guid> 
                <description>
                    <![CDATA[<p>Today we are kicking off the fourth annual <a href="http://scaladays.org">Scala Days</a> conference in New York. The week will be jam packed with exciting presentations like Martin Odersky's keynote, Scala with Style and Jonas Boner's session on Going Reactive: Scalable, Highly Concurrent &amp; Fault-Tolerant Systems.</p>
<p>In addition to some very cool Scala Days shwag, each conference attendee will receive a bottle opener USB drive containing the <a href="http://typesafe.com/activator">Typesafe Activator</a> Developer Preview. (Those not at the conference can <a href="http://typesafe.com/platform/getstarted">download</a> it.) Typesafe Activator helps developers get started building applications with Play Framework, Akka, and Scala by including a number of <a href="http://typesafe.com/activator/templates">template applications</a>.</p>
<p>The latest release allows anyone to <a href="http://typesafe.com/activator/template/contribute">contribute their own templates</a>! This provides projects, companies, authors, etc to create a new way for developers to get started with new technologies. We are looking forward to seeing some awesome templates from the community and our partners!</p>
<p>Give the latest <a href="http://typesafe.com/activator">Typesafe Activator</a> a try and let us know how it goes.</p>
<p>By <a href="http://twitter.com/_JamesWard" target="_blank">James Ward</a>, Developer Advocate at Typesafe</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 06 Jun 2013 02:43:00 UTC</pubDate>
                <title>Announcing Slick 1.0.1</title>
                <link>http://typesafe.com/blog/Announcing-Slick-1.0.1</link>
                <guid>http://blog.typesafe.com/Announcing-Slick-1.0.1</guid> 
                <description>
                    <![CDATA[<p>We are happy to announce the release of Slick 1.0.1 for Scala 2.10 which fixes several bugs and provides source-level compatibility with Scala 2.10.1. The public API of Slick 1.0.1 is forward and backward binary compatible with Slick 1.0.0. Please refer to the <a href="http://slick.typesafe.com/news/2013/06/04/slick-1.0.1-released.html" target="_blank">full announcement</a> for more details.</p>
<p>There have been no changes to Slick Extensions (which contains the drivers for Oracle and DB2) since 1.0.0 was released, so we are not publishing a new release. Please use Slick Extensions 1.0.0 togetherwith Slick 1.0.1.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 04 Jun 2013 02:50:00 UTC</pubDate>
                <title>Introducing Scala into a Java Environment</title>
                <link>http://typesafe.com/blog/introducing-scala-into-a-java-environment</link>
                <guid>http://blog.typesafe.com/introducing-scala-into-a-java-environment</guid> 
                <description>
                    <![CDATA[<p dir="ltr">Today we&rsquo;re excited to share a new Scala use case with BrandAirport, a leading provider of Marketing Resource Management systems in Sweden. BrandAirport needed to develop a new version of their &ldquo;Sign and Print Module&rdquo; that would be easier for non-technical users to use; they engaged Mejsla, a Stockholm-based consulting firm to help build this new module. &nbsp;The resulting solution consisted of a brand new Scala module that smoothly integrated with the existing Java environment.</p>
<p dir="ltr">An interesting point of this success story is that BrandAirport did not have any developers with prior knowledge of Scala! They chose to learn Scala along the way, so with the help of both mentoring and Scala literature, a seasoned Java developer picked up Scala well enough to be productive within the first two or three weeks of the project - in spite of only having a part time commitment in the project.</p>
<p>Check out the full case study <a href="http://typesafe.com/assets/casestudies/BrandAirport-Case-Study-v1.0.pdf" target="_blank">here</a> and many thanks to Karl Dickson of Mejsla for sharing the story!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 20 May 2013 01:51:00 UTC</pubDate>
                <title>Partner VirtusLab helps drive Scala success </title>
                <link>http://typesafe.com/blog/virtuslab-help-drive-scala-success</link>
                <guid>http://blog.typesafe.com/virtuslab-help-drive-scala-success</guid> 
                <description>
                    <![CDATA[<p dir="ltr">Our partner, <a href="http://www.virtuslab.com/">VirtusLab</a>, is doing a great deal to spread Scala adoption in Poland and surrounding areas, from providing software solutions that help solve business needs with Typesafe technologies, to launching and supporting <a href="http://scalacamp.pl/">ScalaCamp</a>, a cyclic meeting about Scala programming languages and Scala-based projects. Founder <a href="http://twitter.com/rafalpokrywka">Rafał Pokrywka</a> puts the focus on the business benefits that arise from new technology, and differentiates ScalaCamp from other meetups by zeroing in on innovative and tactical ways companies can use Scala, Akka and Play Framework in the real world.</p>
<p dir="ltr">A big part of increasing Scala adoption is to educate new community members. As such, Rafał joins forces with organizers of other user groups, like PolishJUG, and JVM-focused events, like this year's <a href="http://2013.geecon.org/about">geeCON</a>, to provide the software community a chance to hear about Scala from great speakers in Krakow.</p>
<p dir="ltr">Rafał and his team has created a vibrant and rapidly growing Scala community in Krakow over the past two years, so we were very excited to interview him and ask a few questions about the various projects he's juggling:</p>
<p dir="ltr">Q: <em>How and why did you get involved with Typesafe technologies?</em></p>
<p dir="ltr">A:&nbsp;I suppose it was in quite a typical way. I simply got fed up with all the boilerplate that we had to develop over and over again in plain old Java stack. It was hurting our development efficiency so anything helpful was highly welcome. The trending proliferation of JVM based languages was already quite strong back then and I had heard a lot of good things about Scala. After a little research and with strong suggestions from my colleague, we decided to give it a try writing a test suite at first &ndash; a typical route for an existing project. Then I decided to use Scala for a new project written from scratch. During the development I discovered more and more functional aspects of Scala, and then Akka with its actor model and distribution by configuration. Now we have all of the ongoing projects developed in Scala and I would like to keep it that way. I always look for solutions that help to get the right software done faster, especially when it gives a little fun to the dev team. By saying &ldquo;right software,&rdquo; I mean with high quality and meeting requirements including those for performance and scalability. I hate excessive complexity and bloatware that kills productivity - Typesafe platform is different and falls in the category of lean software and that&rsquo;s why it&rsquo;s my preferred choice right now.</p>
<p dir="ltr">Q: <em>What are some exciting things that VirtusLab is currently working on?</em></p>
<p dir="ltr">A:&nbsp;There is a few projects. One of them is interesting web application within financial sector but dedicated to individual users with lots of processing at the backend and great UI for charting based on HTML5/Canvas. The other project is within natural language processing field - it automatically detects user&rsquo;s problems and questions. Map-Reduce framework with jobs in Scala is used for analysis of text gathered from various sources like social networks and then alert is generated whenever something wrong happens in communication channels. The app allows quick reaction - a crucial thing these days.</p>
<p dir="ltr">One more project I&rsquo;d like to mention is a tool that helps auto-scale your cloud infrastructure depending on traffic and using different strategies &ndash; that&rsquo;s all what I can reveal right now but it looks promising. Our team is eager to work on new challenging projects and show our Scala expertise.</p>
<p dir="ltr">Apart from working with customers and promoting Scala we constantly work on our development efficiency and praise lean software :)</p>
<p dir="ltr">Q: <em>In the past year, what are the prominent changes you have seen in the JVM communities?</em></p>
<p dir="ltr">A:&nbsp;Within our local community there was quite an eruption of different kind of activities. Lots of user group focused on particular fields have emerged and gained traction like <a style="line-height: 1.5em;" href="http://krakowscala.pl/">Krakow Scala User Group</a> and <a style="line-height: 1.5em;" href="http://www.meetup.com/Lambda-Lounge-Krakow/">Lamda Launge</a> while others matured like the <a style="line-height: 1.5em;" href="http://meetup.java.pl/">PolishJUG</a>, <a style="line-height: 1.5em;" href="http://www.meetup.com/sc-krk/">Software Craftsmanship</a> <a style="line-height: 1.5em;" href="http://www.meetup.com/sc-krk/">Krak&oacute;w</a> or<a style="line-height: 1.5em;" href="http://gdgkrakow.pl/"> Krak&oacute;w GDG</a>, just to name a few.</p>
<p dir="ltr">Groups organize code katas, hackathons or workshops on which we&rsquo;ve seen more and more Scala! It&rsquo;s worth mentioning that many of those groups help each other out whenever possible. This deep cooperation is really something unique around here.</p>
<p dir="ltr">Moving out of local scope, Scala is quickly getting more attention recently and more local user groups keep appearing.</p>
<p dir="ltr">Q: <em>At events like GeeCON and ScalaCamp, what have been the hot Scala Topics?</em></p>
<p dir="ltr">A:&nbsp;Some of the things that drew the most attention were Akka of course and functional programming concepts in Scala in general. We also had talks about DSLs and what can be surprising also Monads and Functors :). Lots has been written and blogged about monads, but understanding those concepts helps to understand functional programming better.</p>
<p dir="ltr">We had requests for Scala and Akka workshops and we are planning to host them in a few weeks.</p>
<p dir="ltr">Thanks to cooperating with the community powered<a href="http://geecon.org/"> GeeCON</a> conference and the PolishJUG, we&rsquo;ve been able to get in touch with great speakers from the Scala-space to meet high demand for knowledge - so again collaboration.</p>
<p dir="ltr">Q: <em>What do future plans for ScalaCamp entail? Do you see this expanding to other cities as well?</em></p>
<p dir="ltr">A:&nbsp;The formula of ScalaCamp seems to work but we would like to make it even more interesting and intensive through more un-conference style and through introducing new ideas, interactions and community engagement. I think we will find out what works best but even before that I would like to invite every other Scala User Group in Poland and outside of Poland to organize ScalaCamps locally in their cities. Just contact us and we will share the details and help in any way we can.</p>
<p>Check out <a href="http://www.virtuslab.com">VirtusLab website</a> for more details about partner&rsquo;s services and <a href="http://scalacamp.pl/">ScalaCamp website</a> for more information about future events.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 15 May 2013 03:26:00 UTC</pubDate>
                <title>Akka 2.1.4 Release</title>
                <link>http://typesafe.com/blog/akka-2.1.4</link>
                <guid>http://blog.typesafe.com/akka-2.1.4</guid> 
                <description>
                    <![CDATA[<p>We are pleased to announce the third maintenance release of the 2.1.xseries of the Akka toolkit, improving documentation and fixing several issues including the following:</p>
<ul>
<li>Calling Thread Dispatcher deadlock problems</li>
<li>Stack overflow while loading messages from persistent mailbox</li>
<li>More robust recovery in remoting in case of malformed messages</li>
<li>Proper deployment of typed actors&nbsp;</li>
</ul>
<p><span style="line-height: 1.5em;">... and several smaller fixes</span></p>
<p>The documentation for 2.1.4 is now also available in ePub format. This update is backwards binary compatible, meaning that the JAR files of release 2.1.4 are a drop-in replacement for 2.1.0, 2.1.1 and 2.1.2 but not the other way around. We recommend that all users upgrade at their earliest convenience. Please refer to the <a href="http://letitcrash.com/post/50419602696/akka-2-1-4-released" target="_blank">full announcement</a> for more details.</p>
<p>Happy hAkking!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 14 May 2013 11:51:00 UTC</pubDate>
                <title>Doing Scala Days 2013 in Style</title>
                <link>http://typesafe.com/blog/doing-scala-days-2013-in-style</link>
                <guid>http://blog.typesafe.com/doing-scala-days-2013-in-style</guid> 
                <description>
                    <![CDATA[<p dir="ltr">It&rsquo;s hard to believe that the fourth annual Scala Days is less than a month away. After Lausanne in 2010, Stanford in 2011, London in 2012, we are going to meet next in New York. When we had our first Scala Days in Lausanne in 2010, I remember being blown away and excited by the enthusiasm and passion this group of developers who came together to share their experiences with this relatively new, academic language.</p>
<p dir="ltr">Now, after reading through all the impressive submissions from the community, universities and enterprise IT shops, I&rsquo;m so proud and humbled by how mature and expansive the community has become. I think the conference agenda, from sessions on asynchronous programming to building scalable, highly concurrent and fault-tolerant systems, is truly astounding and I&rsquo;m looking forward to seeing everyone there.</p>
<p dir="ltr">This year, I will give a talk on writing Scala with style, which I think reflects where we are in the course of the language. One of the things that makes Scala special, to me, is it&rsquo;s expressive power; this can be both a blessing and a curse, so I want to share how to make the best of it, and give my personal summary of what I think makes good Scala style. As with most questions of style, the discussion will be quite subjective, and some of it might be controversial. I hope attendees find this session stimulating, and I think it will set the stage nicely for the rest of the conference.</p>
<p dir="ltr">See you in NYC!</p>
<p dir="ltr">By Martin Odersky,&nbsp;Chairman, Chief Architect &amp; Co-Founder of Typesafe</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 30 Apr 2013 12:24:00 UTC</pubDate>
                <title>Launch of New Typesafe.com</title>
                <link>http://typesafe.com/blog/launch-of-new-typesafe</link>
                <guid>http://blog.typesafe.com/launch-of-new-typesafe</guid> 
                <description>
                    <![CDATA[<p>Today, I'm very pleased to announce the launch of the new Typesafe.com</p>
<p>This project has been four months in the making, and reflects our vision, values, and direction as a company &ndash; changing the way software is built while delivering a great developer experience for creating and running reactive applications on the JVM. The new site also features our newest product, Typesafe Activator, an easy way to get started with the <a href="http://www.typesafe.com/platform" target="_blank">Typesafe Platform</a>, Play Framework, Akka and Scala. Activator is currently in developer preview. &nbsp;Please <a href="http://www.typesafe.com/platform/getstarted" target="_blank">download it</a>, check it out and see how easy it is to start building amazing, reactive applications with our technology.</p>
<p>By Mark Brewer, CEO</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 25 Apr 2013 11:33:00 UTC</pubDate>
                <title>The Guardian Transforms Journalism with Typesafe</title>
                <link>http://typesafe.com/blog/the-guardian-leads-with-typesafe</link>
                <guid>http://blog.typesafe.com/the-guardian-leads-with-typesafe</guid> 
                <description>
                    <![CDATA[<p>We all know the newspaper industry has been in a steady transition from print to digital since the web transformed the way readers consume and journalists share news. The&nbsp;<a href="http://www.guardiannews.com/" target="_blank">Guardian</a>&nbsp;is a UK-based newspaper that has been at the forefront of this transformation, changing from a print-based organization to one that is digital-first in philosophy and practice. Implementing this new strategy has involved a series of bold changes not only to the way they do things, but with the tools and software they used to accomplish these tasks.</p>
<p>In our newest case study, Graham Tackley, Head of Architecture for The Guardian, shares how his team uses Scala, Akka and Play Framework to provide a solid, scalable foundation on which to start building these new services. In this piece, Graham shares valuable strategies and lessons learned for moving from an off-the-shelf CMS tool, to a monolithic platform, to an agile and modern application architecture.&nbsp;</p>
<p>Read the <a href="http://files.osmek.com/get/12632.pdf" target="_blank">full case study</a> for more detail, and thanks to Graham for sharing his story.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 19 Apr 2013 03:00:00 UTC</pubDate>
                <title>Typesafe Welcomes Lee Mighdoll of Nest Labs to Advisory Board</title>
                <link>http://typesafe.com/blog/typesafe-welcomes-lee-mighdoll-of-nest-labs-t</link>
                <guid>http://blog.typesafe.com/typesafe-welcomes-lee-mighdoll-of-nest-labs-t</guid> 
                <description>
                    <![CDATA[<p>Today we're very excited to welcome Lee Mighdoll of <a href="http://www.nest.com/" target="_blank">Nest Labs</a> as a Typesafe advisor.</p>
<p>Lee started the online service organization at Nest Labs, maker of the Nest thermostat. &nbsp;Prior to Nest, Lee has served in executive and engineering leadership roles at Apple, Twitter, General Magic,&nbsp;ObjectSpeed and WebTV, and has advised a variety of startups. &nbsp;Lee's current interests are in scalable&nbsp;reliable distributed systems, sensor networks, big data, and machine learning.</p>
<p>At Typesafe, we help companies like Nest build scalable and reliable software, and having Lee on our advisory team will ensure that we continue to fulfill that mission. As we continue to see rapid adoption within other organizations, like Juniper, Twitter, LinkedIn, UBS, the Guardian and more, we're fortunate to have Lee provide insight and guidance.</p>
<p>Welcome, Lee! Happy to have you on board.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 12 Apr 2013 09:00:00 UTC</pubDate>
                <title>Enterprise Scala Adoption Tips</title>
                <link>http://typesafe.com/blog/enterprise-scala-adoption-roadmap-55683</link>
                <guid>http://blog.typesafe.com/enterprise-scala-adoption-roadmap-55683</guid> 
                <description>
                    <![CDATA[<p>As more enterprise organizations adopt Scala/Akka/Play, we find it important to help them engage the community effectively. &nbsp;This involves providing them with information about where they can find resources to empower their developers to learn as much about these technologies as possible, as well as to directly engage with the community on a daily basis. &nbsp;By following these steps, the likelihood of successfully adopting these technologies is much higher.</p>
<p><strong>Step 1: Host a Scala Meetup</strong> By hosting a local Scala user group meetup, you are publicly announcing that your organization is joining the Scala community. It also lets the community know that your organization is looking for ways to help promote and sponsor initiatives around the ecosystem. If one doesn&rsquo;t exist, have someone in your organization take the lead of starting one, showing how committed your company is to the community. This will make your organization's new direction very clear to developers in your area and help generate recruiting leads. If you're interested in having Typesafe help host your meetup, please email marketing@typesafe.com</p>
<p><strong>Step 2: Enable Book Reading</strong> Start an employee book purchase program, and if possible, do it such that no expense reporting by individuals is required so as to remove roadblocks that might keep developers from making the effort. Ideally, when an employee asks for a book on an internal wiki, it should show up on their desk or eReader shortly thereafter. Start a weekly lunchtime book discussion group, where employees either bring a lunch or have it paid for by your organization, and discuss a chapter of a specific book each week. Recommended books include:</p>
<ul>
<li><a href="http://horstmann.com/scala/">Scala for the Impatient&nbsp;</a>(beginners)</li>
<li><a href="http://www.atomicscala.com/">Atomic Scala&nbsp;</a>(beginners)</li>
<li><a href="http://www.artima.com/shop/programming_in_scala_2ed">Programming in Scala</a>&nbsp;(free&nbsp;<a href="http://www.cs.ucsb.edu/~benh/162/Programming-in-Scala.pdf">first edition online</a>, more info about theory)</li>
<li><a href="http://www.manning.com/raychaudhuri/">Scala in Action</a></li>
<li><a href="http://ofps.oreilly.com/titles/9780596155957/">Programming Scala</a></li>
<li><a href="http://www.manning.com/suereth/">Scala in Depth</a>&nbsp;(for experienced Scala developers)</li>
<li><a href="http://www.artima.com/shop/akka_concurrency">Akka Concurrency</a></li>
<li><a href="http://www.manning.com/roestenburg/">Akka in Action</a></li>
<li><a href="http://www.amazon.com/Java-Performance-Charlie-Hunt/dp/0137142528">JVM Performance</a></li>
</ul>
<p><strong>Step 3: Learn Best Practices</strong> Make the following resources available to developers on your team, and organize study groups around them to share knowledge:</p>
<ul>
<li><a href="http://docs.scala-lang.org/style/">Scala Coding Style Standards</a></li>
<li><a href="http://twitter.github.io/effectivescala/">Twitter's Effective Scala</a></li>
<li><a href="http://twitter.github.io/scala_school/">Twitter's Scala School</a></li>
<li><a href="https://www.coursera.org/course/progfun">Coursera Functional Programming Course with Martin Odersky</a></li>
</ul>
<p><strong>4: Get on Twitter</strong> Have developers follow daily happenings in the Scala community via&nbsp;<a href="https://twitter.com/">Twitter</a>. Twitter is the best source for real-time information about what's happening in the Scala community and elsewhere.&nbsp;<em>*See below for some suggestions of Twitter accounts to follow.</em></p>
<p><strong>Step 5: Engage the Blogosphere</strong> Have developers subscribe to prominent Scala blogs, so that they can find out information about what cool new things developers have learned. They will likely hear about these posts via Twitter, Prismatic or some other aggregator, but a great way to begin getting more Twitter followers yourself is to be among the first to post a link to a great new blog post. Encourage your developers to start their own blogs talking about the challenges they've faced and how they've overcome them.</p>
<ul>
<li><a href="http://letitcrash.com/">Let It Crash</a>, the Akka team blog</li>
<li><a href="http://debasishg.blogspot.com/">Debasish Ghosh</a></li>
<li><a href="http://jsuereth.com/archive.html">Josh Suereth</a></li>
<li><a href="http://blog.evilmonkeylabs.com/">Brendan McAdams</a></li>
<li><a href="http://www.cakesolutions.net/teamblogs/">Cake Solutions Team Blog: This Week in Scala</a></li>
<li>Typesafe blog</li>
<li><a href="http://www.jamesward.com/">James Ward</a></li>
</ul>
<p><strong>Step 6: Hop on IRC, Google Groups, Stack Overflow and Podcasts</strong> Inform your developers of IRC Channels and mailing lists where they can directly interact with top developers in real time, including the creators of the technologies themselves. Eventually, they will find themselves able to answer questions from other people or participate in the podcasts themselves and thereby increase your organization&rsquo;s presence in the community.</p>
<p>IRC:</p>
<ul>
<li>#scala</li>
<li>#akka</li>
<li>#playframework</li>
</ul>
<p>Google Groups:</p>
<ul>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/scala-user">scala-user</a></li>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/scala-sips">scala-sips</a></li>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/akka-user">akka-user</a></li>
<li><a href="https://groups.google.com/forum/?fromgroups#!forum/play-framework">play-framework</a></li>
</ul>
<p><a href="http://stackoverflow.com/questions/tagged/scala">Scala topics on Stack Overflow</a></p>
<p>Podcasts:</p>
<ul>
<li><a href="http://scalatypes.com/">ScalaTypes</a></li>
<li><a href="http://www.scalawags.tv/">Scalawags</a></li>
</ul>
<p><strong>Step 7: Attend and Speak at Meetups </strong>Encourage employees to regularly attend Scala meetups, as well as meetups on other topics. Ask them to speak on your company's behalf when they feel comfortable with the subject matter. This will help generate excitement in the community about what your company is doing with these technologies, and help in recruiting new developers interested in what you're doing and the tools you're using.</p>
<p><strong>Step 8: Attend and Speak at Conferences</strong> Attend conferences with Scala content where you can network with other Scala enthusiasts. When you feel comfortable discussing specific topics, submit talk proposals for consideration at these conferences. Even conferences not directly related to Scala are clamoring for talks about these technologies, so the rate of acceptance is relatively high. Important ones that focus on Scala and the broader ecosystem include:</p>
<ul>
<li><a href="http://scaladays.org/">ScalaDays</a></li>
<li><a href="http://nescala.org/">NE Scala</a></li>
<li>PNW Scala (coming soon)</li>
<li><a href="http://scalathon.org/">Scalathon</a></li>
<li><a href="http://www.oracle.com/javaone/index.html">JavaOne</a></li>
<li><a href="https://thestrangeloop.com/">StrangeLoop</a></li>
</ul>
<p><strong>Step 9: Get Involved in Open Source</strong> Have developers fork the GitHub repositories for Scala/Akka/Play and see if there are features, fixes or functionality they can contribute back. GitHub repos for each project can be found at:</p>
<ul>
<li><a href="https://github.com/scala/scala">Scala</a></li>
<li><a href="https://github.com/akka/akka">Akka</a></li>
<li><a href="https://github.com/playframework/play">Play</a></li>
</ul>
<p>By&nbsp;<a href="https://twitter.com/jamie_allen">Jamie Allen</a>, Director of Consulting at Typesafe</p>
<p>*Suggestions of Twitter accounts to follow: <em><a href="https://twitter.com/_jamesward">@_jamesward</a>;&nbsp;<a href="https://twitter.com/adriaanm">@adriaanm</a>;&nbsp;<a href="https://twitter.com/akkateam">@akkateam</a>;&nbsp;<a href="https://twitter.com/aloiscochard">@aloiscochard</a>;<a href="https://twitter.com/andrewheadrick">&nbsp;@andrewheadrick</a>;&nbsp;<a href="https://twitter.com/bantonsson">@bantonsson</a>;&nbsp;<a href="https://twitter.com/brianclapper">@brianclapper</a>;&nbsp;<a href="https://twitter.com/bruceeckel">@bruceeckel</a>;&nbsp;<a href="https://twitter.com/bvenners">@bvenners</a>;&nbsp;<a href="https://twitter.com/corruptmemory">@corruptmemory</a>;&nbsp;<a href="https://twitter.com/d6">@d6</a>;&nbsp;<a href="https://twitter.com/dcsobral">@dcsobral</a>;&nbsp;<a href="https://twitter.com/deanwampler">@deanwampler</a>;&nbsp;<a href="https://twitter.com/debasishg">@debasishg</a>;&nbsp;<a href="https://twitter.com/derekhenninger">@derekhenninger</a>;&nbsp;<a href="https://twitter.com/derekwyatt">@derekwyatt</a>;&nbsp;<a href="https://twitter.com/dickwall">@dickwall</a>;&nbsp;<a href="https://twitter.com/djspiewak">@djspiewak</a>;&nbsp;<a href="https://twitter.com/dmarsh">@dmarsh</a>;&nbsp;<a href="https://twitter.com/drewhk">@drewhk</a>;&nbsp;<a href="https://twitter.com/eed3si9n">@eed3si9n</a>;&nbsp;<a href="https://twitter.com/etorreborre">@etorreborre</a>;&nbsp;<a href="https://twitter.com/extempore2">@extempore2</a>;&nbsp;<a href="https://twitter.com/gclaramunt">@gclaramunt</a>;&nbsp;<a href="https://twitter.com/gkossakowski">@gkossakowski</a>;&nbsp;<a href="https://twitter.com/h3nk3">@h3nk3</a>;&nbsp;<a href="https://twitter.com/havocp">@havocp</a>;&nbsp;<a href="https://twitter.com/helenaedelson">@helenaedelson</a>;&nbsp;<a href="https://twitter.com/higherkinded">@higherkinded</a>;&nbsp;<a href="https://twitter.com/hseeberger">@hseeberger</a>;&nbsp;<a href="https://twitter.com/huitseeker">@huitseeker</a>;&nbsp;<a href="https://twitter.com/hywel_evans">@hywel_evans</a>;&nbsp;<a href="https://twitter.com/iamwarry">@iamwarry</a>;&nbsp;<a href="https://twitter.com/ijuma">@ijuma</a>;&nbsp;<a href="https://twitter.com/jaguarul">@jaguarul</a>;&nbsp;<a href="https://twitter.com/jamesiry">@jamesiry</a>;&nbsp;<a href="https://twitter.com/jamie_allen">@jamie_allen</a>;&nbsp;<a href="https://twitter.com/jboner">@jboner</a>;&nbsp;<a href="https://twitter.com/jorgeo">@jorgeo</a>;&nbsp;<a href="https://twitter.com/jroper">@jroper</a>;&nbsp;<a href="https://twitter.com/jsuereth">@jsuereth</a>;&nbsp;<a href="https://twitter.com/jteigen">@jteigen</a>;&nbsp;<a href="https://twitter.com/kmizu_en">@kmizu_en</a>;&nbsp;<a href="https://twitter.com/mabrewer7">@mabrewer7</a>;&nbsp;<a href="https://twitter.com/marius">@marius</a>;&nbsp;<a href="https://twitter.com/milessabin">@milessabin</a>;&nbsp;<a href="https://twitter.com/mircodotta">@mircodotta</a>;&nbsp;<a href="https://twitter.com/missingfaktor">@missingfaktor</a>;&nbsp;<a href="https://twitter.com/mkelland">@mkelland</a>;&nbsp;<a href="https://twitter.com/mpilquist">@mpilquist</a>;&nbsp;<a href="https://twitter.com/mslinn">@mslinn</a>;&nbsp;<a href="https://twitter.com/n8han">@n8han</a>;&nbsp;<a href="https://twitter.com/nescalas">@nescalas</a>;&nbsp;<a href="https://twitter.com/nraychauduri">@nraychauduri</a>;&nbsp;<a href="https://twitter.com/odersky">@odersky</a>;&nbsp;<a href="https://twitter.com/patriknw">@patriknw</a>;&nbsp;<a href="https://twitter.com/philippkhaller">@philippkhaller</a>;&nbsp;<a href="https://twitter.com/pk11">@pk11</a>;&nbsp;<a href="https://twitter.com/playframework">@playframework</a>;&nbsp;<a href="https://twitter.com/PNWScala">@pnwscala</a>;&nbsp;<a href="https://twitter.com/psnively">@psnively</a>;&nbsp;<a href="https://twitter.com/pvlugter">@pvlugter</a>;&nbsp;<a href="https://twitter.com/rayroestenberg">@rayroestenberg</a>;&nbsp;<a href="https://twitter.com/retronym">@retronym</a>;&nbsp;<a href="https://twitter.com/richdougherty">@richdougherty</a>;&nbsp;<a href="https://twitter.com/rolandkuhn">@rolandkuhn</a>;&nbsp;<a href="https://twitter.com/runarorama">@runarorama</a>;&nbsp;<a href="https://twitter.com/scalaide">@scalaide</a>;&nbsp;<a href="https://twitter.com/scalathon">@scalathon</a>;&nbsp;<a href="https://twitter.com/sirthias">@sirthias</a>;&nbsp;<a href="https://twitter.com/sky1uc">@sky1uc</a>;&nbsp;<a href="https://twitter.com/springrod">@springrod</a>;&nbsp;<a href="https://twitter.com/stefanzeiger">@stefanzeiger</a>;&nbsp;<a href="https://twitter.com/strangeloop_stl">@strangeloop_stl</a>;&nbsp;<a href="https://twitter.com/tbjerkes">@tbjerkes</a>;&nbsp;<a href="https://twitter.com/timkirk5">@timkirk5</a>;&nbsp;<a href="https://twitter.com/tlockney">@tlockney</a>;&nbsp;<a href="https://twitter.com/twittereng">@twittereng</a>;&nbsp;<a href="https://twitter.com/typesafe">@typesafe</a>;&nbsp;<a href="https://twitter.com/viktorklang">@viktorklang</a>;&nbsp;<a href="https://twitter.com/xeno_by">@xeno_by</a>;&nbsp;<a href="https://twitter.com/ymasory">@ymasory</a></em></p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 02 Apr 2013 08:00:00 UTC</pubDate>
                <title>BeamStream Builds on Typesafe</title>
                <link>http://typesafe.com/blog/beamstream-builds-on-typesafe</link>
                <guid>http://blog.typesafe.com/beamstream-builds-on-typesafe</guid> 
                <description>
                    <![CDATA[<p>In a move to transform higher education for both students and educators, Chris Cox launched&nbsp;<a href="http://www.beamstream.com/" target="_blank">BeamStream</a>, a collegiate social collaboration network. The BeamStream platform is designed so students can easily find and interact with professors, making users more productive, organized and connected to the resources they need out of the classroom.</p>
<p>Cox realized early on that picking the right platform and toolset for his innovative new product was critical, and after doing his homework, he settled on Scala, Akka and Play. In our newest case study, Cox explains how he built BeamStream with Typesafe technologies, emphasizing how the importance of performance and scale factored into the decision making process.</p>
<p>Read the <a href="http://files.osmek.com/get/12518.pdf" target="_blank">full testimonial</a> for more detail, and be sure to sign up for the BeamStream <a href="http://www.beamstream.com/" target="_blank">Beta test</a> to learn more about Cox's newest venture!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 25 Mar 2013 04:06:00 UTC</pubDate>
                <title>Developer Contest Winners Pay it Forward</title>
                <link>http://typesafe.com/blog/developer-contest-winners-pay-it-forward</link>
                <guid>http://blog.typesafe.com/developer-contest-winners-pay-it-forward</guid> 
                <description>
                    <![CDATA[<p>Given the wonderful spirit of the community, it's not surprising that our recent <a href="http://blog.typesafe.com/developer-contest-winners-announced" target="_blank">Developer Contest</a> took on a charitable spin!</p>
<p>Martin Odersky started the trend by donating his JAX Ambassador Award prize money for the contest. Then, two of our winners were extremely generous in donating their prize money....</p>
<p>William Billingsley, who submitted a <a href="https://github.com/wbillingsley/play-backgammon" target="_blank">Backgammon application</a>, donated his $200 winnings to <a href="http://www.worldvision.org/" target="_blank">World Vision</a>, a humanitarian organization that works with children and families around the world to combat poverty and hunger. Vibul Imtarnasan, creator of the <a href="https://github.com/mashupbots/plebify" target="_blank">Event Based Task Runner</a>, pledged his $200 to the <a href="http://wikimediafoundation.org/wiki/Home" target="_blank">Wikimedia Foundation</a>, a global movement with the mission to bring free educational content to the world</p>
<p>It's always great to see good deeds continued in the name of charity and education. William and Vibul, on behalf of all of at Typesafe, thank you!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 20 Mar 2013 05:06:00 UTC</pubDate>
                <title>Announcing Scala IDE 3.0</title>
                <link>http://typesafe.com/blog/announcing-scala-ide-30-21084</link>
                <guid>http://blog.typesafe.com/announcing-scala-ide-30-21084</guid> 
                <description>
                    <![CDATA[<p class="p1">After more than one year in development, we are very happy to announce the major release of the next Scala IDE for Eclipse! This release enjoys contributions from 23 different developers, and brings an impressive number of <a href="http://scala-ide.org/docs/current-user-doc/index.html" target="_blank">new features</a> and bug fixes.</p>
<p class="p1">This release brings Scala programming in Eclipse to a whole new level, with great improvements in the editor, a new Scala-aware debugger, more refactorings, a Scala worksheet and additional plugins like ScalaTest support. Read the full release notes on the <a href="http://www.scala-ide.org/blog" target="_blank">Scala IDE blog</a>.</p>
<p class="p1"><strong>Typesafe IDE<br /></strong>In order to make it as easy as possible to try out the new Scala IDE for Eclipse, we updated the Typesafe IDE bundles. Head over to the <a href="http://www.typesafe.com/stack/downloads/scala-ide" target="_blank">download page</a> and get a pre-packaged Eclipse with the Scala tools pre-installed (2.9 or 2.10)! If you prefer to update your existing Eclipse installation, check out the&nbsp;<a href="http://scala-ide.org/download/current.html" target="_blank">IDE download page</a> to get started, or read on to learn more about the highlights.</p>
<p class="p1"><strong>Editor improvements<br /></strong>The 3.0 release greatly improved the Scala editor: the new semantic highlighting feature makes it easy to spot deprecated methods, mutable variables and many other Scala-specific traits. Implicit applications are highlighted, and can be navigated to their definition. Moreover, we put a lot of effort in making the editor faster and more responsive, and moved all processing in the background. We believe that editing is now much faster and more pleasant than before!</p>
<p class="p1"><strong>Scala Debugger<br /></strong>Scala is an incredibly rich language, and its translation to the JVM introduces compilation artifacts that sometimes obscure the original program. The Scala debugger helps by de-mangling names, showing the logical structure of usual Scala collections, stepping over getters and setters (and a bunch of other artifacts), sane handling of for-loops and higher-order functions, etc. Compared to the last milestone, we made the debugger much faster and more robust.</p>
<p class="p1"><strong>New Scala IDE Plugins<br /></strong>In this release we bring an ecosystem of plugins, and make them available through the same update site as the Scala IDE. This makes it easy to discover useful plugins for Scala development. We are extremely happy to see it growing, and thanks to Chee Seng and Bill Venners, Scala IDE users can now install the <a href="http://www.scalatest.org/user_guide/using_scalatest_with_eclipse" target="_blank">ScalaTest plugin</a> and run/debug and inspect scalatest fixtures right in Eclipse.</p>
<p class="p1">The <a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started" target="_blank">worksheet</a> is another Scala IDE plugin, allowing a new breed of interaction with your project and the language. A worksheet is a Scala file that is evaluated on save, and the result of each expression is shown in a column to the right of your program. Worksheets are like a REPL session on steroids, and enjoy 1st class editor support: completion, hyperlinking, interactive errors-as-you-type, auto-format, etc. Whether you want to explore a new library or just whip something up, the worksheet can make it fun. Don&rsquo;t miss it!</p>
<p class="p1">We will continue to work with plugin developers to integrate new and interesting plugins in the ecosystem. Please check the <a href="https://github.com/scala-ide/ecosystem/wiki" target="_blank">ecosystem docs</a> if you want to be part of it!</p>
<p class="p1">We&rsquo;d also like to recognize the hard work of all contributors that helped shape this release. A huge thank you to all contributors and the great community around the Scala IDE for Eclipse!</p>
<p class="p1">By<a href="https://twitter.com/jaguarul" target="_blank"> Iulian Dragos</a>, Scala IDE Lead at Typesafe</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 18 Mar 2013 05:25:00 UTC</pubDate>
                <title>First Scala conference in Japan was amazing!</title>
                <link>http://typesafe.com/blog/first-scala-conference-in-japan-was-amazing</link>
                <guid>http://blog.typesafe.com/first-scala-conference-in-japan-was-amazing</guid> 
                <description>
                    <![CDATA[<p>On Saturday, March 2nd, four typesafers were invited into the halls of Tokyo Institute of Technology for <a href="http://scalaconf.jp/en/" target="_blank">Scalaconf.jp</a>.   The goal of this conference was twofold: first, to promote Scala within the Japanese community, and second to bridge the gap between Japan and the greater Scala community.   This event couldn&rsquo;t have been more successful.</p>
<p>The conference featured 20 talks, including lightning talks, experience reports and best practices.  From Typesafe, Jonas Bon&eacute;r, Jamie Allen, James Roper and myself gave talks on Scala, Akka and Play.   The most telling talks, however, were the experience reports on using Scala in real world applications.</p>
<p>The conference featured talks from <a href="http://www.slideshare.net/scalaconfjp/scala-in-our-brms" target="_blank">Mitsubishi UFJ Information Technology</a>, <a href="http://www.slideshare.net/scalaconfjp/scala-17003170" target="_blank">Geisha Tokyo Entertainment</a>, <a href="http://www.slideshare.net/asami224/mddcloud" target="_blank">Everforth</a>, <a href="http://www.cyberagent.info/" target="_blank">CyberAgent</a>, <a href="https://docs.google.com/a/typesafe.com/presentation/d/164bFti9EUSv8RNSqEzQJrFFrazLaj907VWbIxEip1o4/edit" target="_blank">Tech to Value</a>, <a href="http://tototoshi.github.com/slides/how-we-write-and-use-scala-libraries-scalaconfjp2013/" target="_blank">M3</a>, <a href="http://info.dwango.co.jp/english/index.html" target="_blank">DWANGO</a>, <a href="http://www.slideshare.net/daiksy/scala-conf2013" target="_blank">Furyu</a>, <a href="http://www.slideshare.net/scalaconfjp/scala-activerecord-16946754" target="_blank">Advanced Soft Engineering</a>, <a href="http://www.intellilink.co.jp/" target="_blank">NTT Data Intellilink</a> and <a href="http://www.slideshare.net/ikeike443/scala-conf2013" target="_blank">Shanon</a>.   These reports were eye-opening for a lot of us at Typesafe.  Not only is Scala active and thriving in Japan, these folks are doing some cutting edge things with Scala, and contributing back into the Open Source community.</p>
<p>One of my favorite questions from the conference was during the Geisha Tokyo Entertainment talk, when one concerned developer asked the audience:  &ldquo;Do you have any horror stories from using Scala?&rdquo; The answer: &ldquo;None.&rdquo;</p>
<p>The second day of the conference was a hackathon.  Here, many developers got together to work on new, or existing open source projects.   At the end, we had a competition to see what the most impressive project was.   Here's a list of what came out:</p>
<ul>
<li>A DSL for generating HTML (called <a href="https://github.com/hexx/htmlda" target="_blank">htmlda</a>, based on <a href="http://kmizu.github.com/jsonda/">Jsonda</a>), with play integration.</li>
<li>An Akka-based link between a running JavaFX application and a play webserver</li>
<li>An unfiltered web-socket application (called <a href="https://github.com/eed3si9n/closed-captioning" target="_blank">closed captioning</a>) that aggregates a twitter feed and irc chat.   This was used during the conference for live Japanese &lt;-&gt; English translation</li>
<li>A <a href="http://www.w3.org/TeamSubmission/turtle/" target="_blank">turtle</a> parser and case-class serialiser (winner of the competition).</li>
<li>A Yammer statistics collection service for Akka servers.</li>
<li>A wiki written in Play, stored as a local git repo, that renders both Markdown and an emacs format.</li>
</ul>
<p>The conference was sold out, with 200 attendees and 70 people on the waiting list.  We hope to see the energy and innovation continue!</p>
<p>The talks and their slides are available at <a href="http://scalaconf.jp/en/program/index.html" target="_blank">Scalaconf.jp</a></p>
<p>Lastly, if you're interested in getting involved with the Japanese Scala community, here's a list of prominent members and their OSS projects:</p>
<p>Kazuhiro Sera<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/seratch">https://twitter.com/seratch<br /></a></span>GitHub: <a href="https://github.com/seratch">https://github.com/seratch</a><br /><span class="s3">Author of&nbsp;<span class="s2"><a href="https://github.com/seratch/scalikejdbc" target="_blank">ScalikeJDBC</a></span></span>, an SQL-Based DB Access Library for Scala</p>
<p>Toshiyuki Takahshi<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/tototoshi">https://twitter.com/tototoshi<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/tototoshi">https://github.com/tototoshi<br /></a></span>Author of play-json4s, play-ascii-art-plugin and contributor of ScalikeJDBC</p>
<p>Manabu Nakamura (AKA Gakuzzzz)<br />Twitter:&nbsp;<a href="https://twitter.com/gakuzzzz"><span class="s2">https://twitter.com/gakuzzzz</span></a>&nbsp;<br /><span class="s1">GitHub:&nbsp;</span><span class="s2"><a href="https://github.com/t2v">https://github.com/t2v</a><br /></span>Author of&nbsp;<a href="https://github.com/t2v/play20-auth"><span class="s3">Play20-auth</span></a>, a Play2.x module for Authentication and Authorization</p>
<p>Kota Mizushima<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/kmizu">https://twitter.com/kmizu<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/kmizu">https://github.com/kmizu<br /></a></span>Deputation of ScalaJP, chairman of Scala Conference in Japan and author of&nbsp;<span class="s3"><a href="https://github.com/kmizu/jsonda">Jsonda</a></span></p>
<p><span class="s3"><a href="https://twitter.com/mumoshu"></a></span>Yusuke Kuoka (AKA @mumoshu)<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/mumoshu">https://twitter.com/mumoshu<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/mumoshu">https://github.com/mumoshu<br /></a></span>Author of&nbsp;<a href="https://github.com/mumoshu/play2-memcached"><span class="s3">play2-memcached</span></a>, a Memcached Plugin for Play Framework 2.0</p>
<p>Kenji Yoshida (AKA @xuwei_k)<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/xuwei_k">https://twitter.com/xuwei_k<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/xuwei-k">https://github.com/xuwei-k<br /></a></span>Scala, Scalaz, and Play20 contributor and SBT expert</p>
<p>Chris Birchall<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/cbirchall">https://twitter.com/cbirchall<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/cb372">https://github.com/cb372<br /></a></span>Author of&nbsp;<a href="https://github.com/cb372/scala-ascii-art"><span class="s3">scala-ascii-art</span></a>&nbsp;and ScalikeJDBC contributor</p>
<p>Sanshiro Yoshida (AKA nekoharu-san in)<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/halcat0x15a">https://twitter.com/halcat0x15a<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/halcat0x15a">https://github.com/halcat0x15a<br /></a></span>Author of&nbsp;<a href="https://github.com/halcat0x15a/twitter4z"><span class="s3">Twitter4z</span></a>, a Scalaz wrapper for Twitter API</p>
<p>Yoshihiro Imai<br />Twitter:&nbsp;<span class="s2"><a href="https://github.com/yoshihiro503">https://github.com/yoshihiro503<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/yoshihiro503">https://github.com/yoshihiro503<br /></a></span>Author of Coq2Scala and active member of the Nagoya Scala community</p>
<p>Tomohito Ozaki:<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/yuroyoro">https://twitter.com/yuroyoro<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/yuroyoro">https://github.com/yuroyoro<br /></a></span>Author of&nbsp;<a href="https://github.com/yuroyoro/svm"><span class="s3">svm</span></a>, a Scala Version Manager</p>
<p>Kato Kazuyoshi<br />Twitter:&nbsp;<span class="s2"><a href="https://twitter.com/kzys">https://twitter.com/kzys<br /></a></span>GitHub:&nbsp;<span class="s2"><a href="https://github.com/kzys">https://github.com/kzys<br /></a></span>Great contribution to Scaladoc improvement in Scala 2.9.X</p>
<p><span style="font-family: Arial; font-size: 10pt;">RKTM<br /></span><span style="font-family: Arial; font-size: 10pt;">Twitter:&nbsp;</span><a href="https://twitter.com/RKTM" style="font-family: Arial; font-size: 10pt;">https://twitter.com/RKTM<br /></a><span style="font-family: Arial; font-size: 10pt;">GitHub:&nbsp;</span><a href="https://github.com/RKTM" style="font-family: Arial; font-size: 10pt;">https://github.com/RKTM<br /></a><span style="font-family: Arial; font-size: 10pt;">An active member of Nagoya Scala community</span></p>
<p>By <a href="https://twitter.com/jsuereth" target="_blank">Josh Suereth</a>, Senior Software Engineer at Typesafe</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 13 Mar 2013 06:00:00 UTC</pubDate>
                <title>Scala Days 2013 NYC Update</title>
                <link>http://typesafe.com/blog/scala-days-nyc-update</link>
                <guid>http://blog.typesafe.com/scala-days-nyc-update</guid> 
                <description>
                    <![CDATA[<p>We've been blown away by how quickly attendees, speakers and sponsors have rallied to support the upcoming <a href="http://blog.typesafe.com/scala-days-nyc-is-here" target="_blank">Scala Days conference</a> in New York City. In the past two weeks, the community has submitted truly compelling session proposals, including examples of Scala implementations in the real world, some excellent tools &amp; libraries and core Scala insights.</p>
<p>For more information on sessions, speakers, hotels and a preliminary agenda, head over to the <a href="http://scaladays.org/" target="_blank">Scala Days website</a>,&nbsp;and stay tuned for continuous track updates.&nbsp;</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 12 Mar 2013 05:30:00 UTC</pubDate>
                <title>GenJavaDoc: Generate True JavaDoc for Scala Projects</title>
                <link>http://typesafe.com/blog/genjavadoc-generate-true-javadoc-for-scala-pr</link>
                <guid>http://blog.typesafe.com/genjavadoc-generate-true-javadoc-for-scala-pr</guid> 
                <description>
                    <![CDATA[<p>The Akka API is offered both for Java and Scala users, and most of it is actually reusing the exact same methods - a feat enabled by Scala's carefully crafted Java interoperability. Until now there has been only  one tool which could extract API documentation from Scala sources:  ScalaDoc generates very nice and accessible documentation for Scala  projects. When it comes to a Java audience this tool has two flaws in  that it ignores Java source files and in that the generated output is  much richer than and not compatible with JavaDoc output.</p>
<p>Since  having proper JavaDoc artifacts is necessary for IDE support and we  also do not wish to impose ScalaDoc on Java developers, we developed a  Scala compiler plugin which transports the documentation comments from  the Scala sources to Java output files such that native JavaDoc can be  produced from them. This process has been applied to the Akka  documentation, please <a href="http://doc.akka.io/japi/akka/snapshot/">check it out</a>!</p>
<p>The  compiler plugin is published to Maven Central and available under the  Apache 2 license, for more information <a href="https://github.com/typesafehub/genjavadoc">head over to github</a>.  We encourage all authors of Scala libraries which are intended to be  consumed from Java to try it out and provide us feedback.</p>
<p>By <a href="https://twitter.com/rolandkuhn">Roland Kuhn</a>, Akka Tech Lead at Typesafe</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 28 Feb 2013 05:00:00 UTC</pubDate>
                <title>Running Play Apps on the Cloud with Cloudify</title>
                <link>http://typesafe.com/blog/running-play-apps-on-the-cloud-with-cloudify</link>
                <guid>http://blog.typesafe.com/running-play-apps-on-the-cloud-with-cloudify</guid> 
                <description>
                    <![CDATA[<p>When it comes to running Play Framework apps on the cloud, there are many great options; one of those options is <a href="http://www.gigaspaces.com/cloudify-open-paas-stack" target="_blank">Cloudify</a>. In this guest post, <a href="https://twitter.com/uri1803" target="_blank">Uri Cohen</a> shares how developers can deploy their apps on the cloud with GigaSpaces' unique open PaaS Stack. Read on to learn more!</p>
<p>--</p>
<p><strong>The Challenge</strong></p>
<p>Running multi-tier, complicated apps on the cloud can be very tricky. There are many concerns to cater for in order for such an application to be successfully deployed and managed on the cloud.</p>
<p>Let&rsquo;s take a relatively simple example, of an application that includes the following stack: Apache as a load balancer / static content server, a few Play instances as the web application tier and a replicated MySql cluster for storing the application&rsquo;s data (say 1 primary and 2 replicas).</p>
<p>Let&rsquo;s look and some of the things you have to cater for when managing this stack on a cloud environment:</p>
<ul>
<li>Starting VMs: goes without saying. You will compute resources to run your application.</li>
<li>Installing and configuring the started VMs: Every VM needs to be installed and configured properly. For example, for VMs on which Play runs, you need to have JDK 6 and Play itself installed, and open the relevant ports for the Play to be accessible. For the Apache VMs, you will need to have Apache2 installed alongside its dependencies and relevant modules (e.g. mod_proxy).</li>
<li>Starting and orchestrating application components: Naturally, your application tiers depend on one another and have to be aware of one another. For example, before starting the Play servers, you will have to make sure the MySql cluster is up and running, and that the Play servers are aware of the host names and ports of the relevant MySql servers.</li>
</ul>
<p>Repairing: Once everything is up and running, things can and will break. Processes will die for no apparent reason, VMs will come and go, and you need your application to continue to work even when this happens. Monitoring key metrics and scaling your application tiers based on them: Think about a (very positive) scenario where your load spikes due to your application or service being very successful. You need to be able to tell what&rsquo;s the load on your app across its various tiers and for very specific metrics (e.g. request latency), and take action based on it to make sure your users keep getting a decent service level. For example, add additional replicas to MySql, or increase the number of Play instances. Updating your application code: There&rsquo;s always the issue of updating your application with new code. You want to do it as fast and painless possible, and as soon as new code is available.</p>
<p>In a cloud environment, which is dynamic and volatile by nature, it&rsquo;s also extremely important to automate all of these processes, so that you can setup environments easily and consistently, switch between environments, test things before you go live, maximize your utilization and minimize downtimes.</p>
<p><strong>Isn&rsquo;t PaaS Sufficient?</strong></p>
<p>Using PaaS solutions like CloudBees, CloudFoundry or Heroku can be a very good option, as it relieves you as an application owner from the intricacies of handling most the above concerns, and does most of the work for you. However in many cases, you want to control things on a more fine grained level, e.g. choose the cloud you&rsquo;re running on, use a middleware component that it not consumable via PaaS, choose the version of components that you&rsquo;re using, the hardware profile of your VMs, the clustering topology of your data tier, the load balancing mechanism, etc. You also want to be able to upgrade tiers (e.g. move from Play 2.0.3 to Play 2.0.4) at your own pace and not wait for the PaaS provider to do it for you.</p>
<p>Last, in some cases, PaaS is not even an option, e.g. when deploying on premise.</p>
<p><strong>Introducing Cloudify</strong></p>
<p>Cloudify is an open source framework for deploying, managing and scaling your applications on any cloud environment. This includes EC2, RackSpace, HP Cloud Services, Azure, private clouds environments based on OpenStack, Apache CloudStack or VMWare. You can even use it on an arbitrary set of servers, virtualized or non-virtualized. It&rsquo;s designed to handle the above concerns for you, while still letting you retain a high degree of control and flexibility.</p>
<p>Similarly to <a href="http://www.opscode.com/chef" target="_blank">Chef</a> and <a href="https://puppetlabs.com/puppet/puppet-open-source/" target="_blank">Puppet</a>, Cloudify allows you to use recipes to describe what your application looks like. But it really augments both, by defining things from an application rather than an infrastructure perspective.</p>
<p>In other words, while Chef and Puppet are excellent at configuring individual servers (&ldquo;given a server, here&rsquo;s how I want it to look like&rdquo;), Cloudify focuses on what your application looks like (&ldquo;here&rsquo;s what my app looks like, now provision the VMs, assign them with roles and install it on the cloud for me&rdquo;).</p>
<p><a href="http://www.cloudifysource.org/guide/2.3/developing/recipes_overview" target="_blank">Cloudify recipes</a> are used to define application tiers (web container cluster, database cluster, caching instances, etc.), the number of instances in each tier, how the tiers depend on one another, and how to install, start, verify and monitor each tier. Since Chef and Puppet are great for infrastructure configuration, you can and are encouraged to use them to do the installation and configuration part of a Cloudify recipe (Cloudify <a href="http://www.cloudifysource.org/guide/2.3/integrations/chef_documentation" target="_blank">is integrated</a> with both tools).</p>
<p>For example, for the Play application that we mentioned above (composed of Play itself, fronted by an Apache load balancer, and backed by a MySql cluster), you&rsquo;d model it as follows with Cloudify</p>
<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><img src="https://lh3.googleusercontent.com/JksKYSzx8dBUWY9Wjm_c8CI7yiUuoqOnX-rucZQt-UbStJeOTPgouDOi3fxCnmJ2k-Exu4c6Pmb7Gj4XiZP1OiASSYXJ7xMjydhQfzRQLr2HRpogras" height="244px;" alt="" width="301px;" /></strong></p>
<p><strong>How It Works</strong></p>
<p>Once you have a Cloudify recipe, the first thing to do is <a href="http://www.cloudifysource.org/guide/2.3/bootstrapping/bootstrapping_process" target="_blank">bootstrap</a> a Cloudify controller environment on the cloud of your choice. This is done easily from the <a href="http://www.cloudifysource.org/guide/2.2/setup/installing_the_cloudify_client" target="_blank">Cloudify CLI</a> and will eventually result in a Cloudify controller running on the cloud of your choice. From that point onwards, the CLI will communicate with the controller over REST. Next, you issue an install-application command that will trigger the controller to analyze the installed recipe, provision the right amount of VMs for it, and orchestrate the deployment of all the recipe components. Later, this controller will monitor the deployed components and VMs, <a href="http://www.cloudifysource.org/guide/2.2/developing/scaling_rules" target="_blank">scale them</a> if needed and make sure to restart any failed components.</p>
<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><img src="https://lh4.googleusercontent.com/y04ZtMb0hjIq6kjY4LKYUN8T2n-iFxXVNtZ-5cwDpjTZHZ2iYGMP6MFKHc5rU1m8Ax1D0nzC9Rz9xvbupZbDiH4bzU3VAjc5eWms3GahOS7xZ0mvedA" height="285px;" alt="" width="613px;" /></strong></p>
<p><strong>What's in Store for Play Users</strong></p>
<p>As one of our favorite web frameworks, one of the first recipes we created was <a href="https://github.com/CloudifySource/cloudify-recipes/tree/master/services/play" target="_blank">for Play</a>. We also created a <a href="https://github.com/CloudifySource/cloudify-recipes/tree/master/apps/computers" target="_blank">sample app recipe</a> for the Play Computers example, which is a full blown application stack that includes MySql, Play and Apache (as a load balancer). Using the Play recipe, you can easily automate the configuration, deployment, failover and scaling of any Play framework app, on any cloud environment (and btw, that also includes private clouds and even non-virtualized environments). If you&rsquo;re interested in the all the details of the Play recipe <a href="http://www.cloudifysource.org/2012/08/09/time_to_play_with_cloudify" target="_blank">this post</a> will give you a good start.</p>
<p><strong>Play Your Recipe with Play!</strong></p>
<p>Another (very cool, IMHO...) tool that you will find very useful, is the Cloudify Player. This is also an <a href="http://github.com/cloudifysource/cloudify-widget" target="_blank">open source project</a>, which is implemented using the Play framework, and uses Cloudify to allow users to easily experience new frameworks and tools over the web. The idea is this: if you have a Cloudify recipe for an application (e.g. Play Computers) or a project (e.g. Cassandra), you can configure a player for it. The result of this is a simple embed code that you can include in any web page, and renders the player. What happens under the hood is that the player communicates with a Play application on the server side. This app manages a pool of VMs deployed on the cloud of your choice (in this case HPCloud) and <a href="http://www.cloudifysource.org/guide/2.3/bootstrapping/bootstrapping_process" target="_blank">&ldquo;bootstrapped&rdquo;</a> with a running Cloudify manager. The server borrows a VM from the pool, connects to the running manager over REST and issues the recipe installation command. After about 30 seconds, you have a running app or service, available for you to try out for 30 minutes. All courtesy of the Play framework and Cloudify.</p>
<p>Here&rsquo;s the actual widget for the Play Computers app <a href="https://github.com/CloudifySource/cloudify-recipes/tree/master/apps/computers" target="_blank">example recipe</a>. Feel free to click the image below, launch the real widget and see it in action for yourself. The embedded video explains how to access the sample app after launching it using the widget.</p>
<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><a href="http://www.cloudifysource.org/player/play-computers.html" target="_blank"><img src="https://lh3.googleusercontent.com/bgEOV3XVNXs0pZkD5lQ7WKVhQcT09r342PmqboeAnmWKHY__SmEWyTfoOIaGpxsiGBddkWu8NYL9BMlNCYFea4cckQr83U0I_StwlczyO5vB-GrwXxiE5-KJ" height="468px;" alt="" width="603px;" /></a></strong></p>
<p>So go ahead and give it a try, we&rsquo;ll be more than happy to <a href="https://cloudifysource.zendesk.com/forums" target="_blank">hear your feedback</a>!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 27 Feb 2013 06:00:00 UTC</pubDate>
                <title>Heluna tackles e-mail spam with Play Framework, Akka and Scala</title>
                <link>http://typesafe.com/blog/heluna-tackles-e-mail-spam-with-play-framewor</link>
                <guid>http://blog.typesafe.com/heluna-tackles-e-mail-spam-with-play-framewor</guid> 
                <description>
                    <![CDATA[<p>Today we're happy to feature a new Scala, Akka and Play Framework success story with the cloud-based antispam service,&nbsp;<a href="https://heluna.com/" target="_blank">Heluna</a>. Heluna's anecdote is one of unplanned success- the unique spam blocking company realized that their legacy infrastructure could not scale horizontally to meet their rapidly growing and successful business. The company wanted a backend&nbsp;infrastructure&nbsp;to improve performance and increase visibility into operational status.</p>
<p>In this&nbsp;<a href="http://typesafe.com/public/case-studies/Heluna%20Case%20Study%20v1.0.pdf" target="_blank">case study</a>, Mark Beeson, Heluna's Founder and Chief Architect, shares how he chose the entire Typesafe platform to create a flexible architecture that can shrink and grow organically as needed, making it simple to spin up more nodes on Amazon EC2. Mark also revamped the Heluna website through a combo of Scala, Play Framework and CouchDB, giving users complete visibility into the backend redis queues to see how their spam is processed in real-time.&nbsp;</p>
<p>You can read the entire case study&nbsp;<a href="http://typesafe.com/public/case-studies/Heluna%20Case%20Study%20v1.0.pdf" target="_blank">here</a>&nbsp;and a big thanks to Heluna for sharing their experience with Scala, Akka and Play!</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 26 Feb 2013 05:55:00 UTC</pubDate>
                <title>Announcing Akka 2.1.1</title>
                <link>http://typesafe.com/blog/announcing-akka-211</link>
                <guid>http://blog.typesafe.com/announcing-akka-211</guid> 
                <description>
                    <![CDATA[<div style="color: #222222; font-family: arial, sans-serif;">We are pleased to announce the first maintenance release of the 2.1.x series of the Akka toolkit, fixing several issues including the following:</div>
<div style="color: #222222; font-family: arial, sans-serif;">
<ul>
<li>A possible thread leak at system shutdown</li>
<li>A bug in the scheduler which would delay tasks too long if scheduled a multiple of the wheel duration&nbsp;(defaults to 51.2 seconds)&nbsp;into the future</li>
<li>Wrong error handling when sending non-serializable or too large remote messages, leading to silent loss and extraneous reconnect</li>
</ul>
</div>
<div style="color: #222222; font-family: arial, sans-serif;">This update is backwards binary compatible, meaning that the JAR files of release 2.1.1 are a drop-in replacement for 2.1.0&mdash;but not the other way around. We recommend that all users upgrade at their earliest convenience. Please refer to the <a href="http://letitcrash.com/post/44059382043/akka-2-1-1-released" target="_blank">full announcement</a> for more details.</div>
<div style="color: #222222; font-family: arial, sans-serif;">Happy hAkking!</div>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 25 Feb 2013 07:40:00 UTC</pubDate>
                <title>Announcing Scala Days NYC</title>
                <link>http://typesafe.com/blog/scala-days-nyc-is-here</link>
                <guid>http://blog.typesafe.com/scala-days-nyc-is-here</guid> 
                <description>
                    <![CDATA[
<p>Last week, the <a href="http://scaladays.org/" target="_blank">Scala Days NYC</a> call for papers was released and proposals are already rolling in!</p>
<p>The fourth annual Scala Days will be held this year at The Hudson Theater in NYC, June 10th-12th. Now is the time to submit speaking sessions and <a href="http://scaladaysnyc.eventbrite.com/" target="_blank">register to attend</a>! The CFP is open until April 15th, and speakers will be announced on a rolling basis.</p>
<p>This year's conference will bring together developers from all corners of the world to share their experiences and new ideas around creating applications with Scala, Akka and Play. Scala Days provides a unique opportunity for the Scala community to interact with the key contributors to the language and related technologies. This year&rsquo;s keynote will be led by Martin Odersky, and featured speakers include Jonas Bon&eacute;r, Viktor Klang and others.</p>
<p>To submit a proposal, please email <a href="mailto:Info@ScalaDays.org">Info@ScalaDays.org</a></p>
<p><a href="mailto:Info@ScalaDays.org"></a>If you&rsquo;re interested in being a Scala Days sponsor, please complete the <a href="http://scaladays.org/Scala-Days-2013-Sponsorship-Form.pdf">Sponsorship Form</a>&nbsp;or send an email to <a href="mailto:Marketing@Typesafe.com">Marketing@Typesafe.com</a> for more info on custom packages.</p>
<p>Hope to see you in New York!</p>
<p>&nbsp;</p>

<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 13 Feb 2013 06:29:00 UTC</pubDate>
                <title>Ticketfly builds powerful reserved seating engine with Scala and Akka</title>
                <link>http://typesafe.com/blog/ticketfly-builds-powerful-reserved-seating-en</link>
                <guid>http://blog.typesafe.com/ticketfly-builds-powerful-reserved-seating-en</guid> 
                <description>
                    <![CDATA[<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Yesterday we blogged about a new customer case study with </span><a href="http://blog.typesafe.com/lucid-software-tackles-scalability-reliabilit" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Lucid Software</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">, and today we&rsquo;re excited to release another successful customer testimonial with the hugely successful ticket company, </span><a href="http://www.ticketfly.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">TicketFly</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">. Ticketfly is an integrated ticketing and digital marketing platform for event promoters and venues, from standing-room-only clubs to festival grounds and arenas with reserved seating. The Ticketfly platform provides a full suite of integrated ticketing, social marketing, email and analytics tools that streamline operations and increase ticket sales. </span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">This compelling use case illustrates how Andrew Headrick, Ticketfly&rsquo;s Platform Architect, selected Scala and Akka to craft a powerful reserved seating engine (something that is notoriously complicated to build because of it&rsquo;s rapidly changing state), that could easily scale, handle bursty and unpredictable traffic patterns and compete with online ticket scalpers. Read the full case study <a href="http://typesafe.com/public/case-studies/Ticketfly%20Case%20Study%20v1.1.pdf" target="_blank">here</a>, and head over to </span><a href="http://www.ticketfly.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Ticketfly</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> to check out their local venues and events. </span></strong></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 12 Feb 2013 09:01:00 UTC</pubDate>
                <title>Developer Contest Winners Announced!</title>
                <link>http://typesafe.com/blog/developer-contest-winners-announced</link>
                <guid>http://blog.typesafe.com/developer-contest-winners-announced</guid> 
                <description>
                    <![CDATA[<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Since the end of last November, we&rsquo;ve been sifting through the many impressive submissions for </span><a href="http://blog.typesafe.com/typesafe-developer-contest" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Typesafe&rsquo;s Developer Contest</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">. As you may recall, we encouraged the community to submit sample applications that demonstrate the power and functionality of Typesafe technologies</span><span style="font-size: 15px; font-family: Arial; color: #4a86e8; background-color: transparent; vertical-align: baseline;">.</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> Martin Odersky kindly pledged his JAX Java Ambassador Award as prize money, with $1000, $500 and $200 for the first, second and five third place entries, respectively. &nbsp;</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We received well over 70 submissions for the contest, ranging from an </span><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">SMS application, a push notification tool for mobile devices, a social network monitoring framework to a race car app! The submissions were as varied and interesting as they were sophisticated; it was so cool to see what folks were able to pull together with Scala, Akka and Play in such a short period of time! Needless to say, the judges were impressed.</span><br /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;"> </span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Martin, Jonas Bon&eacute;r, Viktor Klang, Peter Hausel, Josh Suereth and </span><a href="http://blog.typesafe.com/rod-johnson-to-judge-developer-contest" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">guest judge Rod Johnson</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> reviewed each submission and selected the winners. Here are the results:</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Drum roll, please...</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">1st: </span><a href="https://github.com/bmdhacks/akka_whiteboard" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">Distributed Akka Whiteboard</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Brian Degenhardt designed a beautifully simple distributed Akka application. While the application looks clean and effortless, it&rsquo;s functionality is very sophisticated and demonstrates the use of Akka in Play. The whiteboard is written in Scala and illustrates the versatility of Actors (in this case, an iPhone client talking to an Akka server) in about 200 LOC. </span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">The whiteboard is so simple and elegant - we were very impressed by Brian&rsquo;s programming skills; he really took note of the specific scope of the competition, and for these reasons definitely deserves the first place slot. Congratulations, Brian!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">2nd: </span><a href="https://github.com/intechgrp/CarRaceDashboard" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">Car Race Dashboard</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Fabrice Croiseaux and Antoine Detante have designed an app that is simply awesome, and a very, </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-style: italic; vertical-align: baseline;">very</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> close runner up to Brian&rsquo;s whiteboard. </span><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">The application&rsquo;s goal is to allow a user to follow a Formula 1 car race in real time.</span><p /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">The screen displays the following information:</span><br /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">- Position of all cars on a map</span><br /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">- Real time information such as speed, rank, current lap, car damage and others</span><br /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">- Computed statistics like average speed, total distance, best lap</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">This app is far more than just a sample, and even has real world applicability! &nbsp;The Car Race Dashboard features great animation of real world grand prix races; and the judges were truly wowed!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">3rd: </span><a href="https://github.com/ruchijindal/scalajobz" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">Scalajobz</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Ruchi Jindal&rsquo;s app is another great application and adds significant value to the Scala community as it advertises jobs! &nbsp;Well written, with a nice user interface.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">3rd:</span><a href="https://github.com/wbillingsley/play-backgammon" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;"> Backgammon</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">It&rsquo;s Backgammon! William Billingsley&rsquo;s application has great graphics and allows two people to play Backgammon via a browser interface. &nbsp;Very slick.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">3rd: </span><a href="https://github.com/semberal/homelibrary" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">Home Library</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Lukas Sembera submitted a genuinely useful book cataloging application that could be repurposed to catalog literally anything. &nbsp;Definitely an application that everyone would find useful, and it&rsquo;s a well written to boot!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">3rd: </span><a href="https://github.com/EugeneBorshch/mbtiles-server" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">MBTiles Streaming</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Yevgeniy Borshch has written an excellent sample that demonstrates map integration.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">3rd: </span><a href="https://github.com/mashupbots/plebify" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-weight: bold; vertical-align: baseline;">Event Based Task Runner</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Vibul Imtarnasan wrote an event based task runner using Scala and Akka, demonstrating Camel integration that can be used to poll or wait for events which will trigger the execution of configured tasks/services. &nbsp;This is a great sample that I&rsquo;m sure many people will utilize.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Thanks to all who submitted, we were truly blown away by the tremendous amount of creativity and thought that went into this contest. The judges felt that that Brian Degenhardt&rsquo;s Distributed Whiteboard was ultimately the winner due to it&rsquo;s beautiful simplicity and clear demonstration of the power of Scala and Akka. &nbsp;We&rsquo;ll be sending out Typesafe t-shirts to all participants soon! </span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by </span><a href="https://twitter.com/hywel_evans" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Hywel Evans</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">, Solutions Architect at Typesafe</span></strong></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 12 Feb 2013 06:00:00 UTC</pubDate>
                <title> Lucid Software tackles scalability, reliability and performance with Typesafe</title>
                <link>http://typesafe.com/blog/lucid-software-tackles-scalability-reliabilit</link>
                <guid>http://blog.typesafe.com/lucid-software-tackles-scalability-reliabilit</guid> 
                <description>
                    <![CDATA[<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Today we&rsquo;re eager to share a new case study from </span><a href="https://www.lucidchart.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Lucidchart</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Lucid Software is a software development company whose flagship product, Lucidchart, provides a graphical web application in the browser so companies can visually communicate processes and ideas in real-time. Due to the significant growth in number of users, the Lucidchart team needed a new architecture foundation that was both productive and high performance; they turned to Scala, Akka and Play Framework to migrate from a monolithic architecture to a service oriented architecture approach. &nbsp;</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You can read the complete testimonial </span><a href="http://typesafe.com/public/case-studies/Lucid%20Software%20Case%20Study%20v1.0.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">, or head over our </span><a href="http://typesafe.com/resources/case-studies" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Resources page</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">.</span></strong></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 11 Feb 2013 05:28:00 UTC</pubDate>
                <title>Announcing Slick 1.0 - Type-safe Database Queries for Scala</title>
                <link>http://typesafe.com/blog/announcing-slick-10-type-safe-database-querie</link>
                <guid>http://blog.typesafe.com/announcing-slick-10-type-safe-database-querie</guid> 
                <description>
                    <![CDATA[<p>We are excited to announce the release of <a href="http://slick.typesafe.com">Slick 1.0</a> for Scala 2.10, the first major update since 0.11 was released last August. This is an important milestone for us and for the Scala ecosystem, being the first production-ready version of Slick based on a stable Scala release. A lot of work has gone into improving and stabilizing the new features introduced in 0.11, with dozens of <a href="https://github.com/slick/slick/issues?page=1&amp;state=closed">bug fixes</a>, greatly improved <a href="http://slick.typesafe.com/doc/1.0.0/">documentation</a> and deprecation of obsolete APIs.</p>
<p>Slick 1.0 also adds some important new features:</p>
<p><strong>Auto-Generated Keys</strong></p>
<p>Slick has always supported auto-generated primary keys through the use of the <em>O.AutoInc</em> column option:</p>
<div class="CodeRay">
  <div class="code"><pre>object A extends Table[(Int, String)](&quot;A&quot;) {
  def id = column[Int](&quot;ID&quot;, O.PrimaryKey, O.AutoInc)
  def data = column[String](&quot;DATA&quot;)
  def * = id ~ data
}
    
A.data insertAll (&quot;foo&quot;, &quot;bar&quot;)</pre></div>
</div>

<p>However, when you insert data into such a table, you frequently want to get back the generated key in order to use it immediately to reference the new data. Slick 1.0 now supports this use case with an intuitive syntax:</p>
<div class="CodeRay">
  <div class="code"><pre>val ids = A.data returning A.id insertAll (&quot;foo&quot;, &quot;bar&quot;)</pre></div>
</div>

<p><strong>New Drivers</strong></p>
<p>Typesafe provides Slick drivers for Oracle and DB2 databases in the new <a href="http://slick.typesafe.com/doc/1.0.0/extensions.html">Slick Extensions</a> package, along with commercial support for Typesafe Subscribers.</p>
<p><strong>Capabilities &amp; TestKit</strong></p>
<p>Database drivers for Slick implement different profiles which expose all supported features, but there are far too many small differences between minor features supported by different database systems to express using profiles. Instead, these features are now described using capability flags defined by the profiles. These provide a more formal specification of a driver's capabilities. The unsupported capabilities are listed in each driver's API documentation and you can check for the availability of a capability at runtime.</p>
<p>In addition to the main Slick artifacts we also publish the <a href="http://slick.typesafe.com/doc/1.0.0/testkit.html">Slick TestKit</a> which contains most of Slick's unit tests in a reusable package. It uses the capabilities declared by a driver to find out which tests to run, so you can use it to test your own driver implementations, too. Check out the <a href="https://github.com/slick/slick-testkit-example">slick-testkit-example</a> project on GitHub for a demo.</p>
<p><strong>More</strong></p>
<p>Many other small improvements have gone into Slick 1.0, for example proper support for BLOBs on PostgreSQL, a fully-featured sequence emulation for MySQL, and improved SQL statement logging. You can find more details in the <a href="http://slick.typesafe.com/news/2013/02/07/slick-1.0.0-released.html">announcement on the Slick website</a>.</p>
<p>By <a href="https://twitter.com/StefanZeiger">Stefan Zeiger</a> - Slick Tech Lead at Typesafe.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 11 Feb 2013 04:00:00 UTC</pubDate>
                <title>&quot;Week of Scala&quot; update!</title>
                <link>http://typesafe.com/blog/week-of-scala-update</link>
                <guid>http://blog.typesafe.com/week-of-scala-update</guid> 
                <description>
                    <![CDATA[<p>In case you missed&nbsp;<a href="http://blog.typesafe.com/week-of-scala-with-manning-publications" target="_blank">Week of Scala</a>, <a href="http://www.manning.com/" target="_blank">Manning Publications</a> is now offering readers a 50% discount on all 14 books listed in the promotion. Just enter <strong>scalawkup&nbsp;</strong>at checkout and&nbsp;save on all on Scala, Akka, Play and Java related eBooks and pBooks!</p>
<p>The offer expires Feb 12, 2013 at 12 midnight EST.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 06 Feb 2013 06:15:00 UTC</pubDate>
                <title>Announcing Play Framework 2.1 - The High Velocity Web Framework</title>
                <link>http://typesafe.com/blog/announcing-play-framework-21-the-high-velocit</link>
                <guid>http://blog.typesafe.com/announcing-play-framework-21-the-high-velocit</guid> 
                <description>
                    <![CDATA[<p><a href="http://www.playframework.com">Play Framework 2.1</a> has been released! The goal of Play is to empower developers to quickly build scalable apps with Java and Scala, so we've&nbsp;<a href="http://www.playframework.com/documentation/2.1.0/Highlights">jam packed this release with features</a> to make that a reality.</p>
<p>Let's take a look at few of the new updates.</p>
<p><strong>Dependency Injection for Controllers</strong></p>
<p>In the past, the URL to code mappings in Play only supported calling static methods on a controller.  This made it difficult to use Dependency Injection (e.g. Spring Framework and Guice) to setup an application at runtime based on configuration.  Play 2.1 now supports a new routes syntax that enables calling injected controllers instead of static methods.  Simply prefix the controller method in the routes files with an "@" symbol, like:</p>
<div class="CodeRay">
  <div class="code"><pre>GET     /                  @controllers.Application.index()</pre></div>
</div>

<p>Then in your <em>Global</em> class use the <em>getControllerInstance</em> method to return the instance:</p>
<div class="CodeRay">
  <div class="code"><pre>public &lt;A&gt; A getControllerInstance(Class&lt;A&gt; clazz) {
    return ctx.getBean(clazz);
}</pre></div>
</div>

<p>For a complete example that uses Spring 3, check out Guillaume Bort's <a href="https://github.com/guillaumebort/play20-spring-demo">play20-spring-demo project on GitHub</a>.</p>
<p><strong>Better Scalability, Non-Blocking Async, and Scala 2.10</strong></p>
<p>For Scala developers the most exciting new feature in Play 2.1 is probably the upgrade to Scala 2.10.  This brings with it a ton of new language features.  One new feature that makes it easier to build scalable Play apps is the new <em>Futures</em> and <em>Promises</em> API, which was initially created in Akka.  This enables a very concise programming model for doing non-blocking, asynchronous composition of services.  In a nutshell, this enables your server to handle a ton more requests since it only uses threads when it absolutely needs them.  Here is a simple example that makes two JSON requests, one to GitHub and one to Twitter, then when it has the responses it renders a web page containing data from both:</p>
<div class="CodeRay">
  <div class="code"><pre>def social = Action {
  Async {
    val twitterPromise = WS.url(&quot;http://search.twitter.com/search.json&quot;).withQueryString((&quot;q&quot;, &quot;playframework&quot;)).get()
    val githubPromise = WS.url(&quot;https://api.github.com/legacy/repos/search/playframework&quot;).get()
    for {
      twitterResponse &lt;- twitterPromise
      githubResponse &lt;- githubPromise
    } yield Ok(views.html.social.render((twitterResponse.json \\ &quot;text&quot;).map(_.as[String]), (githubResponse.json \\ &quot;name&quot;).map(_.as[String])))
  }
}</pre></div>
</div>

<p>The amazing thing about this is that under the covers none of the web requests block when they are in a waiting state!  Of course, you can also get the same behavior in Java using Play's Functional APIs.</p>
<p><strong>Modular Routing Makes Large Projects Easier to Manage</strong></p>
<p>As projects grow it is important to break them into sub-projects.  Now you can easily include a sub-project's routes into the master project using the new "-&gt;" syntax in the routes file. For instance, to include all of the routes defined in a subproject, under a "/foo" URL prefix, simply add the following to your routes file:</p>
<div class="CodeRay">
  <div class="code"><pre>-&gt;    /foo      foo.Routes</pre></div>
</div>

<p>This enables many developers to easily collaborate on large, multi-project code bases without stepping on each others toes.  For more details, read <a href="http://www.playframework.com/documentation/2.1.0/SBTSubProjects" target="_blank">Working with Sub-Projects</a> in the documentation.</p>
<p><strong>Built For Modern &amp; Scalable Apps</strong></p>
<p>These are just a few of the <a href="http://www.playframework.com/documentation/2.1.0/Highlights" target="_blank">many new features in Play 2.1</a>.  Over the past year, the Play Framework has been successfully used in some very demanding scenarios, like <a href="http://blog.typesafe.com/scaling-the-klout-api-with-scala-akka-and-pla">Klout's billion API transactions per day</a>, <a href="http://www.typesafe.com/public/case-studies/Gilt%20Live%20Case%20Study%20v1.0.pdf" target="_blank">Gilt Group's real-time inventory updates via WebSockets</a>, and of-course for the <a href="http://www.typesafe.com" target="_blank">Typesafe website</a>.  This new release makes it easier to build modern and scalable apps while being developer friendly.  Head on over to the <a href="http://www.playframework.com" target="_blank">all-new playframework.com</a> to download Play 2.1 and build something amazing!</p>
<p>By <a href="https://twitter.com/jroper" target="_blank">James Roper</a> - Play Framework Developer at Typesafe.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 04 Feb 2013 09:01:00 UTC</pubDate>
                <title>“Week of Scala” with Manning Publications</title>
                <link>http://typesafe.com/blog/week-of-scala-with-manning-publications</link>
                <guid>http://blog.typesafe.com/week-of-scala-with-manning-publications</guid> 
                <description>
                    <![CDATA[<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">At Typesafe, we are incredibly fortunate to have some of the top scholars in the Scala, Akka and Play Framework academic communities contributing to our technologies. As our roots are in academia, we are committed to supporting the ebooks that help developers learn the skills they need to be successful adopting new open source tools. </span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We&rsquo;re excited to launch&nbsp;</span></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">'Week of Scala,' </span></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">a joint promotion with <a href="http://www.manning.com/" target="_blank">Manning Publications</a> </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">where we highlight a new book each day that is special to us and hand-picked by the Typesafe team. We also collaborated with Manning to select a second book for each day of the week, and </span></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">will be offering our choices at a 50% discount on their site! You can even read excerpts from some of the books online for free by clicking on the links below.</span></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We hope you enjoy the deals! We&rsquo;ll be Tweeting and updating our blog with the daily discount codes throughout the week, so stay tuned. Also, be sure to drop by the <a href="http://www.coderanch.com/forums/f-91/Scala" target="_blank">CodeRanch Week of Scala Forum</a> to chat with these authors and other Scala junkies any time this week.</span></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Here&rsquo;s the schedule:</span></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: strong;"><strong style="font-weight: strong;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Monday, February 4, 2013 </span></strong></strong></p>
<p><span style="font-size: small;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: strong;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">scalawkd1</span></strong></span></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;"> </span><a href="http://www.manning.com/suereth/" target="_blank"><img src="https://lh3.googleusercontent.com/MluDhZU-LHCNlSKhIl-odFF9zQZyJkUzQvO16pgsGbx561gjO7QlJ1XfjLFL55bn96ha9_EsQgwkaw099STjgX6qomJn3ftxcThDAwIlARyHo54LYbV1_R4" height="148px;" alt="" width="117px;" /><br /><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Scala in Depth</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Josh D. Suereth, Senior Software Engineer at Typesafe*</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-style: italic; vertical-align: baseline;">"Scala in Depth</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> is the </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-style: italic; vertical-align: baseline;">Effective Java</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> of Scala, the book every serious Scala developer just has to read. I highly recommend it as your second Scala book." -Jonas Bon</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&eacute;r</span></strong></p>
<p><span style="font-size: small;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><span style="font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;"><a href="http://files.osmek.com/show/12293.pdf" target="_blank">here</a>! </span></strong></span></p>
<p><span style="font-size: small;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong><span style="font-weight: normal;">You also might be interested in:</span></strong></strong></span></p>
<p><span style="font-size: small;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong><span style="font-weight: normal;">&nbsp;</span></strong><em><a href="http://www.manning.com/ghosh/" target="_blank">DSLs in Action</a>&nbsp;</em></strong></span></p>
<p><span style="font-size: small;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><em>&nbsp;</em></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;">by Debasish Ghosh</strong></span></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Tuesday, February 5, 2013</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">scalawkd2</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/ghosh/"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;">&nbsp;</strong></a><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/hilton/" target="_blank"><img src="https://lh6.googleusercontent.com/2ZDRV93hKeo3fWxRWrh8iohtAm2sM1n5V6l6uR98gy6WoQkhMRfS7sVe-8eSDYtFGr3u4V6hS7Z2aC3Y5Icr7Z2yHqDmWXAZQkcLE8Xw1Y-gX5KRkHaIP3M" height="148px;" alt="" width="105px;" /><br /><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Play for Scala</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Peter Hilton, Erik Bakker, and Francisco Canedo</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&ldquo;If you&rsquo;re interested in getting started with Play 2 from a Scala perspective, this is absolutely the book to get!&rdquo; -</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Jonas Bon</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&eacute;</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">r</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12292.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">!</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/crowther2/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">HTML5 in Action</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Rob Crowther, Joe Lennon, Ash Blue and Greg Wanish</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Wednesday, February 6, 2013</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code:&nbsp;</span></strong></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">scalawkd3</span></strong></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"> &nbsp;</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&nbsp;</span></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><a href="http://www.manning.com/roestenburg/" target="_blank"><img src="https://lh3.googleusercontent.com/RXrbn7q5fMg4Fo7T47xl22_akCyrf-3PtYjArso-dC3s1dMl3cfs7MQ3dfNNn3Niy9awAspsjhr3u0z2OecY8ztFrfIIeW3hY4awcBjjiXDHeySOILj1_ck" height="148px;" alt="" width="118px;" /></a></strong></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; color: #1155cc; font-style: italic; vertical-align: baseline;"><a href="http://www.manning.com/roestenburg/" target="_blank">Akka in Action</a></span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Raymond Roestenburg and Rob Bakker</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&ldquo;This is a great book to read if you want to get started by Akka and understand how to use it in the real world. Written by one of the first production users of Akka.&rdquo; -Jonas Bon&eacute;r</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12289.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/ibsen/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Camel in Action</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Claus Ibsen and Jonathan Anstey</span><br /></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Thursday, February 7, 2013</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: strong;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">scalawkd4</span></strong></span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;">&nbsp;</strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/raychaudhuri/" target="_blank"><img src="https://lh3.googleusercontent.com/5ImHAR0U17oGv3P3O1SNJ_n6fJRG-lVvfP6zHq9qFdtO7-IIXmdXS3WjIf3MkTb1IapVq8MFWPiKn5vbxJJe-WqBBBfdY26NGtJEpYTNBb-54skVxICOhEw" height="148px;" alt="" width="118px;" /></a></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/raychaudhuri/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Scala in Action</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Nilanjan Raychaudhuri, Developer at Typesafe*</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">"</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-style: italic; vertical-align: baseline;">Scala in Action </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">provides a great beginning to Scala, with particular focus on what blended functional &amp; object-oriented programming looks like." -Josh D. Suereth</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12294.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/mikowski/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Single Page Web Applications</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-style: italic; vertical-align: baseline;"> &nbsp;</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Michael S. Mikowski and Josh C. Powell</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Friday, February 8, 2013</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">scalawkd5</span></strong></strong></strong></span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/bjarnason/" target="_blank"><img src="https://lh6.googleusercontent.com/H6mmKeUhY-xH57c7Hck_4JfJJFP4q6BivPzMSM2WaYDhV_Nw2k0W6t4jIMooUFRddCljS3V740BMVrapt--CgHlV8sMFg9owVT7QY8u6969feUsRGezPJiw" height="148px;" alt="" width="118px;" /><br /><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Functional Programming in Scala</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Paul Chiusano and R&uacute;nar Bjarnason</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&ldquo;</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">If you are interested in learning how to fully utilize Scala's functional side, then this is the book to get. Will teach you everything from basic to advanced use of functional programming.&rdquo; </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">-Jonas Bon</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&eacute;</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">r</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12290.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/fogus/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">The Joy of Clojure</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Michael Fogus and Chris Houser</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Saturday, February 9, 2013</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong>scalawkd6</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/leroux/" target="_blank"><img src="https://lh5.googleusercontent.com/s4TQy75YwJPYsreh47d9a05ihQmbmbNQSPeuo5iz2Qjs9qRoGGTRllcysKB2oYBqhsu6dSUCNuoGKrutDwlOg5ySK5yVWdEJxrSFnMIlkcJcS6zHb2eWeck" height="148px;" alt="" width="118px;" /><br /><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Play for Java</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Nicolas Leroux and Sietse de Kaper</span><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&ldquo;</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">If you want to get started with using Play 2 from a Java perspective then you should start reading this book.&rdquo; </span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">-Jonas Bon</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">&eacute;</span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">r</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/carver/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">The Responsive Web</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Matthew Carver</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">Sunday, February 10, 2013</span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-weight: normal;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">Discount Code: </span></strong></strong><strong style="font-family: Arial; font-size: 15px; font-weight: strong;"><span style="font-family: Arial; background-color: transparent; vertical-align: baseline;">scalawkd7</span></strong></span></strong></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><a href="http://www.manning.com/carrero2/" target="_blank"><img src="https://lh4.googleusercontent.com/3WMxmtIkhYxkivOfXW2tWugtvzzUvGIEgaHv1ZROul4BB_t_OR5HUaXwB5jECLKWsEHeAnXB1B8HgKFENYFDNE1USO9zvcvYcGbzPMQAkHdf1AoLlJxrI2I" height="148px;" alt="" width="118px;" /><br /><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">Scalatra in Action</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Ivan Porto Carrero, Ross A. Baker, Dave Hrycyszyn, Stefan Ollinger, and Jared Armstrong</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12295.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">:</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">You also might be interested in:</span><br /><a href="http://www.manning.com/evans/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; font-style: italic; vertical-align: baseline;">The Well-Grounded Java Developer</span></a><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">by Benjamin J. Evans and Martijn Verburg</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;">&nbsp;</strong><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">*To read an excerpt, click </span><a href="http://files.osmek.com/show/12296.pdf" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">here</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">:</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><br /></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We&rsquo;d like to thank Manning Publications for making &ldquo;Week of Scala&rdquo; possible, as well as the folks at </span><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;"><a>CodeRanch</a></span><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;"><a> </a>for helping us promote this deal!</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"><br /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Happy Reading!</span></strong></strong></p>
<p><strong style="font-family: Arial; font-size: 15px; font-weight: normal;"> </strong></p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 28 Jan 2013 06:00:00 UTC</pubDate>
                <title>Klout’s Big Data Collection Pipelines with Play Framework</title>
                <link>http://typesafe.com/blog/klouts-big-data-collection-pipelines-with-pla</link>
                <guid>http://blog.typesafe.com/klouts-big-data-collection-pipelines-with-pla</guid> 
                <description>
                    <![CDATA[<p>The fantastic engineering folks at Klout wrote a <a href="http://engineering.klout.com/2013/01/iteratees-in-big-data-at-klout/" target="_blank">great blog post</a> last Friday on the usage of Iteratees in <a href="http://typesafe.com/technology/play" target="_blank">Play Framework</a> calculating social influence of users across several social networks.</p>
<blockquote>Our users and clients expect data to be up to date and accurate and it has been a significant technical challenge to reliably meet these goals. In this blog post we describe the usage of <a href="http://www.playframework.org/documentation/2.0/Iteratees" target="_blank">Play! Iteratees</a> in our redesigned data collection pipeline. This post is not meant to be a tutorial on the concept of Iteratees, for which there are many great posts already such as <a href="http://jazzy.id.au/default/2012/11/06/iteratees_for_imperative_programmers.html" target="_blank">James Roper's post</a> and <a href="http://jsuereth.com/scala/2012/02/29/iteratees.html" target="_blank">Josh Suereth's post</a>. Rather, this post is a detailed look at how Klout uses Iteratees in the context of large scale data collection and why it is an appropriate and effective programming abstraction for this use case. In a later post we will describe our distributed <a href="http://akka.io/" target="_blank">Akka</a>-based messaging infrastructure, which allowed us to scale and distribute our Iteratee based collectors across clusters of machines.</blockquote>
<p>Head over the the <a href="http://engineering.klout.com/" target="_blank">Klout blog</a> to read the rest of the post. Thanks to <a href="https://twitter.com/textualchocolat" target="_blank">Naveen Gattu</a> for providing such an excellent post!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 22 Jan 2013 07:00:00 UTC</pubDate>
                <title>Scala: Past, Present, and Future - An Interview with Jon Pretty of Scala Technology</title>
                <link>http://typesafe.com/blog/scala-past-present-and-future-an-interview-wi</link>
                <guid>http://blog.typesafe.com/scala-past-present-and-future-an-interview-wi</guid> 
                <description>
                    <![CDATA[<p><strong style="font-family: Times; font-size: medium; font-weight: normal;"><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">Recently </span><a href="http://www.jamesward.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; vertical-align: baseline;">James Ward</span></a><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">, Developer Advocate at Typesafe, sat down with Jon Pretty at </span><a href="http://www.scalatechnology.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; vertical-align: baseline;">Scala Technology</span></a><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;"> to hear about his path to Scala and what he&rsquo;s looking forward to in Scala 2.10. Jon is an experienced Scala developer, consultant and evangelist. He first launched commercial Scala applications in 2005, and has overseen numerous successful Scala deployments in the UK Government and other enterprises.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">How long has Scala Technology been helping developers adopt Scala and why did you head that direction?</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We started using Scala in 2004. &nbsp;At the time, as two-man team of recent computer science graduates, it was a purely technical choice: we wanted to gain a technical advantage in our consultancy business by making use of the latest bleeding-edge technology, and Scala showed huge promise. &nbsp;There was no business case back then for developing software using a language so unproven in real-world applications, so we had to create our own proof: &nbsp;within a couple of months we had launched the first commercial application developed in Scala. &nbsp;This gave us a start, but we were always selling the end-solutions, not the technology: business still had little appetite for Scala.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">It took another five years for this to change, as Twitter gained popularity and the world suddenly saw how Scala was helping them grow rapidly; when the first Scala Days conference was held; and when Martin Odersky was taking the initial steps towards forming Typesafe. &nbsp;After half a decade, everyone was starting to take note of Scala and to see the potential we had identified back in 2004. &nbsp;This was a watershed moment for us: a new market was opening up, and we decided to focus our energy back on the technology. &nbsp;And thus, Scala Technology was formed, giving us an opportunity to use the vast experience we had built up over the years, and to work with people who shared our passion in Scala.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">What have you seen lately? &nbsp;Who is adopting Scala today and why?</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Much has been said of Scala's uptake in corporate environments, where the robustness of statically-typed languages has always dominated. &nbsp;But this shadows a lot of smaller-scale adoption by nimble startups, who might traditionally have chosen dynamic languages like Ruby or Python to build their prototypes or minimum-viable products.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">There's a growing realization that Scala can not only give the traditional &ldquo;agile&rdquo; languages a close run at quickly getting a project off the ground, but it allows that product to be taken more easily to the next level. In the fast-changing conditions of a typical high-tech startup, being able to adapt is crucial, and Scala's ability to be refactored quickly, safely and with confidence makes it a perfect fit for this environment.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">We've worked with both large and small businesses, though startups often present unique requirements, not just on the technology front but commercially too: &nbsp;Being able to accommodate different funding models and flexibility on costs and managing risk matter more to small businesses, so we're familiar with exploring different ways to manage that.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">If you look a few years down the road, how does Scala adoption change?</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">Scala has huge momentum behind it right now, but it lacks the same exposure, tools, native libraries and support as the likes of Java and C#. &nbsp;In a couple of years, this will have changed: I expect Scala's tooling support to have caught and overtaken Java's, and before long, Scala will be viewed as one of the top ten mainstream languages. &nbsp;Most people will still be running Scala on the JVM, but I expect an increasing number of users to be deploying Scala on other platforms.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">What are you most excited about in Scala 2.10?</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">The most notable new feature in Scala 2.10 is probably the addition of macros. &nbsp;But while they are very powerful, macros are the best solution for only a small niche of problems, so I'm more excited about Scala 2.10's subtler but more pervasive enhancements. &nbsp;Of these, support for dependent method types in the type system stands out as genuinely useful, opening library developers up many new possibilities, such as the </span><a href="http://spray.io/blog/2012-12-13-the-magnet-pattern/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Magnet Pattern</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">. &nbsp;I've used dependent method types extensively in building an intuitive and extensible open-source API for I/O processing in the </span><a href="http://rapture.io/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; background-color: transparent; vertical-align: baseline;">Rapture I/O library</span></a><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">String interpolation also provides another useful weapon in Scala's DSL armory. As I've watched Scala's development over the years, new features providing a "quick win" (however cool they might seem at first) have never been favored over those which provide a complete solution integrated throughout the Scala language.</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">String interpolation is no exception, and although many people will have seen simple examples illustrating variable expressions inserted into string literals, fewer will be aware that Scala 2.10 lets users define their own interpolations in just a few lines of code. &nbsp;And it doesn't stop there: you can then pattern match against your custom interpolations, extracting and binding the expressions within, just as you can with case classes!</span><p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; vertical-align: baseline;">---</span><p /><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">My thanks to Jon for taking the time out of his busy schedule to answer these questions. Check out Jon&rsquo;s company, </span><a href="http://www.scalatechnology.com/" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; vertical-align: baseline;">Scala Technology</span></a><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">, as well as his own </span><a href="https://github.com/propensive" target="_blank"><span style="font-size: 15px; font-family: Arial; color: #1155cc; vertical-align: baseline;">open-source projects on GitHub</span></a><span style="font-size: 15px; font-family: Arial; vertical-align: baseline;">!</span></strong></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 10 Jan 2013 06:59:00 UTC</pubDate>
                <title>Send Akka Consultant Candidates our Way and Win</title>
                <link>http://typesafe.com/blog/send-akka-consultant-candidates-our-way-and-w</link>
                <guid>http://blog.typesafe.com/send-akka-consultant-candidates-our-way-and-w</guid> 
                <description>
                    <![CDATA[<p>We're on the hunt for qualified Akka consultant/instructors in the Bay Area to join an amazing team and help our clients become successful with Typesafe technology. Candidates must live in the SF Bay Area, be familiar with our core technologies and have real world Akka experience.&nbsp;You can view the full job description <a href="http://typesafe.com/company/careers">here</a>.</p>
<p>If you know someone who fits the bill, please send them our way by emailing <a href="mailto:careers@typesafe.com">careers@typesafe.com</a>.  If we hire your candidate, you win a MacBook!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 08 Jan 2013 06:00:00 UTC</pubDate>
                <title>Announcing Scala 2.10: A Simpler Way to Tackle Complex Problems</title>
                <link>http://typesafe.com/blog/announcing-scala-210-a-simpler-way-to-tackle</link>
                <guid>http://blog.typesafe.com/announcing-scala-210-a-simpler-way-to-tackle</guid> 
                <description>
                    <![CDATA[<p>We are very excited about the <a href="http://www.scala-lang.org/node/27499" target="_blank">first release in the Scala 2.10</a> series. This release makes it even simpler to tackle the tough challenges that developers face every day, ranging from the syntactic nicety of String Interpolation to expressing massive asynchronous computations in sequential code style.</p>
<p>Many new features enable library and framework developers to provide a simpler yet richer developer experience for their users. For example, the <a href="http://www.playframework.org/" target="_blank">Play Framework</a> harnesses Scala 2.10's new asynchronous programming model to compose services efficiently and concisely. Similarly, other library developers are using Scala 2.10's experimental Macros and Reflection features to further reduce complexity in applications. Even String Interpolation is easily extensible by library developers in Scala 2.10!</p>
<p>Here are some of Scala 2.10's new features that you can start using right now.</p>
<p>&nbsp;</p>
<p><strong>String Interpolation: Simple Type Safe String Substitution</strong></p>
<p>Often times a developer needs to compose strings of text by substituting values for place holders. Scala 2.10 adds a new String Interpolation library that works with the power of compile-time type checking in Scala. Here are two examples.</p>
<p>To insert the contents of a variable in a string, simply prefix the string literal with an "s" and prefix the variable with a "$".</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>println(s&quot;The word of the day is ‘$wordOfTheDay’.&quot;)</pre></div>
</div>

</blockquote>
<p>String interpolation also supports arbitrary expressions when wrapped with braces. Using <strong>printf</strong> style formatting, the string interpolator executes the expression and enforces type safety.</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>// log only two digits after the decimal to display as seconds
log.info(f&quot;Time elapsed: ${millisElapsed/1000.0}%.2fs.&quot;)</pre></div>
</div>

</blockquote>
<p>The <a href="http://scala-ide.org/" target="_blank">Scala IDE</a> now supports Scala expressions in String Interpolations.</p>
<p>&nbsp;</p>
<p><strong>Futures &amp; Promises: A Concise Async Programming Model</strong></p>
<p>The <a href="http://scala-lang.org/" target="_blank">Scala team</a> at <a href="http://epfl.ch/" target="_blank">EPFL</a> and the <a href="http://akka.io/" target="_blank">Akka</a> team collaborated on a new API which standardizes the API for asynchronous programming using the <strong>Future</strong> and <strong>Promise&nbsp;</strong>paradigms. With valued input from Twitter and many other developers building massively asynchronous systems, the result is a <a href="http://docs.scala-lang.org/overviews/core/futures.html" target="_blank">very convenient API</a> for expressing powerful asynchronous computations. Additionally, Akka's actors are now included in the distribution.</p>
<p>Developers who are building complex integration apps with Play and Akka are raving about the new Scala 2.10 <strong>Future</strong> API because it allows them to fire off hundreds of HTTP calls, then compose the results and render a web page. Composing numerous asynchronous calls in Scala 2.10 using a for-comprehension provides a concise programming model that feels natural but also manages resources efficiently and deals with errors gracefully. For instance, an asynchronous request handler in Play, that makes three asynchronous requests to render a page, may look like:</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>def profile(user: User) = Action {
      Async {
        for {
          lastPostId &lt;- user.fetchLastPostId
          posts      &lt;- fetchPosts(user, lastPostId)
          avatar     &lt;- user.fetchAvatar
        } yield Ok(views.html.profile(user, posts, avatar))
      }
    }</pre></div>
</div>

</blockquote>
<p>Under the covers, Akka, Scala, and Play all work together to efficiently manage concurrency and resource utilization while maintaining a simple and concise programming model.</p>
<p>&nbsp;</p>
<p><strong>Value Classes: Objects On a Diet</strong></p>
<p>Enhancing classes to include additional functionality while avoiding runtime overhead is now possible in Scala 2.10 with <a href="http://docs.scala-lang.org/overviews/core/value-classes.html" target="_blank">Value Classes</a>. For instance, if you need to be able to convert every <strong>Int</strong> to its hexadecimal representation, then a Value Class can do this without having to create unnecessary instances. For example, the following <strong>RichInt</strong> class is a Value Class that allows you to wrap an&nbsp;<strong>Int</strong>&nbsp;to add a&nbsp;<strong>toHexString</strong>&nbsp;method,&nbsp;without the overhead of allocating an extra object.</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>class RichInt(val self: Int) extends AnyVal {
 def toUpperHexString: String = java.lang.Integer.toHexString(self).toUpperCase}</pre></div>
</div>

</blockquote>
<p>In the following example the new <strong>RichInt</strong> is automatically optimized by Scala so that the underlying instance stays in <strong>Int</strong>! This provides faster execution and less memory usage.</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>val x = new RichInt(2) // at run time, x is simply an integer!
x.toUpperHexString</pre></div>
</div>

</blockquote>
<p>Scala also provides a way to automatically use Value Classes. For instance, to make it so all <strong>Int</strong> classes can be used as a <strong>RichInt</strong> simply make the <strong>RichInt</strong> Value Class <strong>implicit</strong>:</p>
<blockquote>
<div class="CodeRay">
  <div class="code"><pre>implicit class RichInt(val self: Int) extends AnyVal { … }
2.toUpperHexString // no explicit wrapping required anymore!</pre></div>
</div>

</blockquote>
<p>Together with Implicit Classes, Value Classes make it simple to enhance objects in a type safe and concise way!</p>
<p><strong>Even More: Scala 2.10 is Simply Better</strong></p>
<ul>
<li>Scala now provides a way to control different levels of language features so that those just learning to swim don't get thrown into the deep end of the pool. We've <a href="http://docs.scala-lang.org/sips/pending/modularizing-language-features.html" target="_blank">come up with a way</a> of putting you in control of which of the features your codebase relies on. This simplifies the initial experience that developers have with Scala and allows organizations to scale their use of the language.</li>
<li>The pattern matcher was rewritten from scratch to produce more robust code and provide more user-friendly error messages.</li>
<li>The <a href="http://docs.scala-lang.org/sips/pending/type-dynamic.html" target="_blank">Dynamic trait</a> provides a convenient construct for using dynamically typed objects when it makes sense (for example, accessing untyped data over REST).</li>
<li>The bytecode generator now uses the industry-standard ASM library to generate bytecode much faster and for a wider variety of JDK versions including the Java 1.5, 1.6 and 1.7 versions.</li>
<li>Scaladoc now shows implicitly added members, inheritance diagrams and member grouping. Check out the <a href="http://www.scala-lang.org/api/current/index.html#scala.concurrent.Future" target="_blank">Future documentation</a> to see it in action!</li>
<li>Scala 2.10 includes a few experimental features, including <a href="http://docs.scala-lang.org/overviews/macros/overview.html" target="_blank">Macros</a> and <a href="http://docs.scala-lang.org/overviews/reflection/overview.html" target="_blank">Reflection</a>. While these are expected to change in the Scala 2.11 series, it hasn't stopped people from doing <a href="http://scalamacros.org/news/2012/11/05/status-update.html" target="_blank">very</a> <a href="http://docs.scala-lang.org/sips/pending/type-dynamic.html" target="_blank">cool</a> <a href="https://github.com/retronym/macrocosm" target="_blank">things</a> with them!</li>
</ul>
<p>&nbsp;</p>
<p>At Typesafe we are very excited about the Scala 2.10 release and everything it does to make developers more productive and apps more efficient! You can try out Scala 2.10.0 by downloading the <a href="http://www.scala-lang.org/downloads" target="_blank">standalone distribution</a> (which includes the REPL) or get started in Eclipse using the <a href="http://download.scala-ide.org/" target="_blank">Scala Eclipse Plugin</a>. We think Scala 2.10 sets a new standard for building highly sophisticated and amazing apps in a simple, concise manner; we think you'll agree. More power less code!</p>
<p>By <a href="https://twitter.com/adriaanm" target="_blank">Adriaan Moors</a> - Scala Tech Lead at Typesafe.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 07 Jan 2013 09:04:00 UTC</pubDate>
                <title>Typesafe Newsletter - December 2012 Wrap Up</title>
                <link>http://typesafe.com/blog/typesafe-newsletter-november-2012-wrap-up-59470</link>
                <guid>http://blog.typesafe.com/typesafe-newsletter-november-2012-wrap-up-59470</guid> 
                <description>
                    <![CDATA[<p>Typesafe periodically assembles the top news items related to Typesafe, Scala, Akka, and Play Framework. <a href="http://typesafe.com/newsletter" target="_blank">Subscribe now</a> to get it via email!  Here is the Typesafe Newsletter from December 2012:</p>
<p><strong>Why Learn Scala in 2013?</strong></p>
<p>2012 was a big year for the Scala programming language! If you haven't learned Scala yet perhaps 2013 should be the year. We've assembled a list of some of the best articles of 2012 that address the "why learn Scala" question. <a href="http://blog.typesafe.com/why-learn-scala" target="_blank">Read more...</a></p>
<p><strong>Akka 2.1.0 Released</strong></p>
<p>The new Akka 2.1.0 release makes for a nice holiday gift! Akka 2.1.0 now includes cluster support, forming a powerful substrate on which elastic cloud-based applications are built. There are a ton of other new features like support for Apache Camel. <a href="http://blog.typesafe.com/akka-210-released" target="_blank">Read more...</a></p>
<p><strong>Jonas Bon&eacute;r, Typesafe CTO, is Sweden's Top Developer</strong></p>
<p>Every year Computer Sweden creates a list of their country&rsquo;s top developers. This year we are thrilled that Jonas Bon&eacute;r, the Typesafe CTO, has been named Sweden&rsquo;s Top Developer! Jonas created Akka and co-founded Typesafe. He is still actively contributing code to the Akka project while also figuring the next big problems in software. <a href="http://translate.google.com/translate?hl=en&amp;sl=sv&amp;tl=en&amp;u=http%3A%2F%2Fcomputersweden.idg.se%2F2.2683%2F1.475388%2Fjonas-ar-sveriges-basta-utvecklare" target="_blank">Read more...</a></p>
<p><strong>SpringSource Releases Spring Scala</strong></p>
<p>Many Java developers use the Spring Framework as the foundation for their applications so it&rsquo;s great to see direct support for using Spring from Scala. The combination of Spring and Scala means that code for composing applications is concise and elegant. <a href="http://blog.springsource.org/2012/12/10/introducing-spring-scala/" target="_blank">Read more...</a></p>
<p><strong>Rod Johnson is "writing purely in Scala"</strong></p>
<p>The creator of the Spring Framework and now Typesafe board member, Rod Johnson, was recently interviewed on the TechCast podcast. In the podcast Rod talks about his move from Java to Scala and how he now writes code "purely in Scala." <a href="http://blog.typesafe.com/rod-johnson-talks-scala-in-techcast-75" target="_blank">Read more...</a></p>
<p><strong>Odersky's Functional Programming Course Has 1.7m Lecture Views</strong></p>
<p>This past fall Martin Odersky taught an online class about Functional Programming Principles in Scala. The course was a huge success with more than 50,000 developers viewing lecture videos a total of 1.7 million times! <a href="http://blog.typesafe.com/recounting-the-functional-programming-princip" target="_blank">Read more...</a></p>
<p>2012 was a great year!  Stay tuned for more exciting news in 2013 by <a href="http://typesafe.com/newsletter" target="_blank">subscribing to the Typesafe Newsletter</a>!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 03 Jan 2013 06:00:00 UTC</pubDate>
                <title>Akka 2.0.5 Released</title>
                <link>http://typesafe.com/blog/akka-205-released</link>
                <guid>http://blog.typesafe.com/akka-205-released</guid> 
                <description>
                    <![CDATA[<p>We have released an update to <a href="http://akka.io/" target="_blank">Akka</a>, addressing several small bugs and fixes. The most notable changes are:</p>
<ul>
<li>Allow null as reply from a TypedActor</li>
<li>Properly set stateData when stopping an FSM Actor</li>
<li>Fix a regression introduced in version 2.0.4 within the embedded ForkJoinPool implementation (only relevant for direct users of the JSR166y API)</li>
</ul>
<p>Please see <a href="http://letitcrash.com/post/39473217866/akka-2-0-5-released" target="_blank">the full announcement</a> for more details.</p>
<p>Happy hAkking!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 28 Dec 2012 06:00:00 UTC</pubDate>
                <title>Why Learn Scala in 2013?</title>
                <link>http://typesafe.com/blog/why-learn-scala</link>
                <guid>http://blog.typesafe.com/why-learn-scala</guid> 
                <description>
                    <![CDATA[<p>2012 was a big year for the Scala programming language - with monumental releases, adoption by major enterprises and social sites alike and a <a href="http://days2012.scala-lang.org/" target="_blank">Scala Days</a> conference that knocked the socks off years past, we'd like to take a quick moment to highlight a few things that address the "why learn Scala" question you may be asking yourself.&nbsp;</p>
<p><strong>19 Pages of Scala Jobz!</strong></p>
<p>The Knoldus Software team has created the <a href="http://www.scalajobz.com" target="_blank">Scala Jobz app</a> (built with Scala and Play) to provide a central listing of Scala jobs.  There are already 19 pages of jobs!  There is no doubt that the job market for Scala developers is huge and growing quickly!</p>
<p><strong>Should You Learn Scala?</strong></p>
<p>Jean Yang, a Ph.D. Computer Science student at MIT, <a href="http://jxyzabc.blogspot.fr/2012/11/should-you-learn-scala.html" target="_blank">makes a great case for learning Scala</a>, arguing that its libraries and interoperability with Java make it ideal for mainstream adoption. Jean points out that learning Scala makes you more marketable as a developer, since companies like Twitter, LinkedIn, Foursquare and Quora are all looking for hires with Scala skills.</p>
<p><strong>Scala Second Impressions</strong></p>
<p>If you made the leap to Scala and found features lacking or simply were not persuaded, then check out Rod Hilton's <a href="http://www.nomachetejuggling.com/2012/10/26/scala-second-impressions/" target="_blank">Scala Second Impressions</a> blog post. Rod previously shared his early thoughts on Scala about a year ago, and originally had some issues with the compiler, APIs and general youth of the language. But his new article revises these assumptions and makes the delightful statement that "Scala is awesome!"</p>
<p><strong>Scala is like Git</strong></p>
<p>Sander Mak discusses complexity issues surrounding Scala on <a href="http://branchandbound.net/" target="_blank">Branch and Bound</a>, tackling the topic of how the language is often portrayed as being too hard to pick up. Sanders <a href="http://branchandbound.net/blog/scala/2012/12/scala-is-like-git/" target="_blank">compares these statements to similar arguments around Git</a>, giving the Scala complexity discussion an entirely new perspective.</p>
<p><strong>Scala, the Next Frontier</strong></p>
<p>Finally, if you missed <a href="http://gigaom.com/author/gigabarb/">Barb Darrow's</a> article on GigaOm titled "<a href="http://gigaom.com/cloud/how-martin-odersky-rewrote-the-rules-of-coding-for-a-mobile-world/" target="_blank">How Martin Odersky rewrote the rules of coding for a mobile world</a>", it's definitely worth reading. Barb outlines the benefits of Scala in a real-world context and links the language to advancements in mobile and cloud environments. Her portrayal of Odersky as "belonging in the same pantheon of programming gods as <a href="http://en.wikipedia.org/wiki/James_Gosling" target="_blank">James Gosling</a>, the father of Java itself; <a href="http://www.computerhistory.org/fellowawards/hall/bios/Niklaus,Wirth/" target="_blank">Niklaus Wirth</a>, who wrote Pascal (and with whom Odersky studied); <a href="http://www.microsoft.com/about/technicalrecognition/anders-hejlsberg.aspx" target="_blank">Anders Hejlsberg</a>, of Turbo Pascal fame; and <a href="http://en.wikipedia.org/wiki/Bjarne_Stroustrupand%20others." target="_blank">Bjarne Stoustrup</a>, who wrote C++ and other languages," makes us pretty proud!</p>
<p><strong>New Year's Resolution to Learn Scala in 2013</strong></p>
<p>If you've made a resolution to learn Scala in 2013, then get started with the&nbsp;<a href="http://www.scala-lang.org/node/1305" target="_blank">Scala Learning Resources</a>&nbsp;and <a href="http://typesafe.com/newsletter" target="_blank">subscribe to the monthly Typesafe newsletter</a> to follow the latest news. &nbsp;Here's to a Scalacious 2013! &nbsp;Happy New Year!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 26 Dec 2012 06:00:00 UTC</pubDate>
                <title>Akka 2.1.0 Released</title>
                <link>http://typesafe.com/blog/akka-210-released</link>
                <guid>http://blog.typesafe.com/akka-210-released</guid> 
                <description>
                    <![CDATA[<p>We are pleased to announce the availability of Akka 2.1.0 &lsquo;Mingus.&rsquo; This is the next step of Akka&rsquo;s evolution, following the major transformation that was 2.0&mdash;you are invited to look back at the&nbsp;<a href="http://blog.typesafe.com/introducing-akka-20-2756">announcement from March 6, 2012</a>.&nbsp;<span style="font-family: arial, sans-serif;">The 2.0 release laid the groundwork, with a completely message-based internal structure that enables your actor-based services to interact regardless of where they are hosted. As a result, you can scale up and out by configuration at deployment time.</span>&nbsp;Today&rsquo;s release adds cluster support, forming a powerful substrate on which elastic cloud-based applications are built.</p>
<p>We adapted the Riak and DynamoDB designs to enable Akka nodes to act in concert, but instead of hosting passive units of data, they now support millions of active units of computation&mdash;actors. Of course, we hardened and polished the features that made 2.0 such a great release:&nbsp;supervision hierarchies, death watch and distribution by configuration. On top, we added cluster-aware message routers that will automatically add or remove routing targets when you scale your application to match varying performance needs; this is done by adding or removing cluster nodes. It should be noted that these elastic routers are mere users of the new cluster APIs,&nbsp;<span style="font-family: arial, sans-serif;">which means that you can also develop tailored cluster-aware features for your applications if needed.</span>.</p>
<p>This brings me to an important point: we marked the cluster support &ldquo;experimental&rdquo; because these new APIs have not yet had enough exposure to the great variety of distributed computing problems tackled world-wide. Therefore, we deemed it unwise to freeze our design at this point, and instead will allow it to be refined during the next development cycle based on our users&rsquo; feedback. We will keep those changes to a minimum.</p>
<p>Additional key features of Aka 2.1.0 include:</p>
<ul>
<li>Integration with the Scala Standard Library: futures have been unified with SIP-14 and akka-actor.jars will be part of the Scala distribution from 2.10 onward</li>
<li>Akka Camel support</li>
<li>Encrypted Akka remoting using SSL/TLS</li>
<li>OSGi support</li>
<li>A module for multi-node testing to support you in developing clustered applications&mdash;experimental in the same sense as cluster support</li>
<li>A Java API for the TestKit</li>
</ul>
<p>A series of blog posts highlighting the new features has been published over the past weeks on our team blog, see <a href="http://letitcrash.com/tagged/spotlight21">the &ldquo;spotlight21&rdquo;&nbsp;tag</a>.&nbsp;The more technically inclined may also want to peruse the&nbsp;<a href="http://letitcrash.com/post/38544819129/akka-2-1-0-released">release announcement on letitcrash.com</a>.</p>
<p>We are proud to say that this release contains contributions from many members of our very active community. A special thanks goes to Raymond Roestenburg, Oliver Schulz, Gert Vanthienen, Peter Badenhorst, Piotr Gabryanczyk, Gerolf Seitz, Rick Latrine, Michael Pilquist, Brian Scully, Helena Edelson, Mathias Doenitz, Amir Moulavi and Joshua Gao.</p>
<p>Happy hAkking!</p>
<p><em>Guest post by <a href="https://twitter.com/rolandkuhn">Roland Kuhn</a>.</em></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 20 Dec 2012 07:08:00 UTC</pubDate>
                <title>Recounting the Functional Programming Principles with Scala MOOC</title>
                <link>http://typesafe.com/blog/recounting-the-functional-programming-princip</link>
                <guid>http://blog.typesafe.com/recounting-the-functional-programming-princip</guid> 
                <description>
                    <![CDATA[<p>This fall we did a free online class on <a href="https://www.coursera.org/course/progfun" target="_blank">Functional Programming Principles in Scala</a> on the <a href="https://www.coursera.org/" target="_blank">Coursera</a> platform. It was a great experience to have done a class like that and in more dimensions than one it exceeded our expectations greatly.</p>
<p>One of the interesting aspects of running a MOOC (massive open online course) is that you get a lot of data out of it. We got statistics on many aspects from the Coursera site. Overall, we had more than 50,000 people registered for the course, who viewed lecture videos 1.7 million times, and handed in 230,000 submissions of homework assignments (people could submit multiple times, and assignments were automatically graded).  There were 11,400 posts on the discussion forums, where students could ask questions and discuss aspects of the course.  9,600 students successfully completed the course and earned a certificate of completion. That's a much higher success rate than average for an online course.</p>
<p>We also ran a survey among the people enrolled in the course. More than 7,000 participants filled out the questionnaire.  Here's a detailed <a href="http://docs.scala-lang.org/news/functional-programming-principles-in-scala-impressions-and-statistics.html" target="_blank">writeup of the course and the survey results</a>.</p>
<p>For those of you who want to have a little bit of fun with the numbers, we've made all of the data publicly available, and we've made a small Scala project out of it. In particular, we put the code that we used to produce the above plots on <a href="https://github.com/heathermiller/progfun-stats" target="_blank">github (progfun-stats)</a>.</p>
<p>Overall, it was an intense 7 weeks for us as well as the course students. Organizing a MOOC is no small matter. We could not have done it without the help of many people at EPFL, at Typesafe, and the many active and knowledgeable contributors to the forums all over the world.</p>
<p>Hard as the work of preparing and running the course was, the amount of positive feedback we got made it worth for us many times over.  We believe this medium has a lot of potential and, so far, we are only scratching the surface.</p>
<p>Martin Odersky and Heather Miller</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 17 Dec 2012 06:40:00 UTC</pubDate>
                <title>Rod Johnson Talks Scala in TechCast #75</title>
                <link>http://typesafe.com/blog/rod-johnson-talks-scala-in-techcast-75</link>
                <guid>http://blog.typesafe.com/rod-johnson-talks-scala-in-techcast-75</guid> 
                <description>
                    <![CDATA[<p>Typesafe is very proud to have <a href="http://blog.typesafe.com/typesafe-appoints-rod-johnson-to-board-of-dir">Rod Johnson on our board of directors</a> but what really gets us excited is when he talks about his use of Scala.  Recently Rod did just that when he was interviewed on <a href="http://emergingtech.chariotsolutions.com/2012/12/techcast-75-interview-with-rod-johnson-part-2-focus-on-scala/">TechCast #75</a>.  We just love it when he says "I'm writing purely in Scala." &nbsp;In this podcast he talks about why he likes Scala and when Java developers should consider using Scala. &nbsp;This podcast is only 24 minutes so <a href="http://emergingtech.chariotsolutions.com/2012/12/techcast-75-interview-with-rod-johnson-part-2-focus-on-scala/">give it a listen</a>&nbsp;and&nbsp;let us know what you think.  Thanks Rod and <a href="http://chariotsolutions.com/">Chariot Solutions</a> for the awesome TechCast episode!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 05 Dec 2012 09:59:00 UTC</pubDate>
                <title>Typesafe Newsletter - November 2012 Wrap Up</title>
                <link>http://typesafe.com/blog/typesafe-newsletter-november-2012-wrap-up</link>
                <guid>http://blog.typesafe.com/typesafe-newsletter-november-2012-wrap-up</guid> 
                <description>
                    <![CDATA[<p>Here is the top Typesafe, Akka, Play, and Scala news for November 2012.  <a href="http://typesafe.com/newsletter" target="_blank">Subscribe now</a> to get the Typesafe newsletters in your inbox each month.</p>
<p><strong>Scala Leads InfoQ's "Next JVM Language" Poll</strong><br /> <a href="http://www.infoq.com/research/next-jvm-language" target="_blank">InfoQ is polling developers</a> about their "Next JVM Language" and currently Scala leads with 78% saying it's ready for adoption.  It is great to have so many developers excited about the future of Scala!</p>
<p><strong>New Release Candidates for Akka, Play, and Scala</strong><br /> Typesafe's open source projects have posted new release candidates:</p>
<ul>
<li><a href="https://groups.google.com/d/topic/akka-user/_TbfXr3wM3w/discussion" target="_blank">Akka 2.1 RC3</a></li>
<li><a href="https://groups.google.com/d/topic/play-framework/MGM3Mrdw6WY/discussion" target="_blank">Play Framework 2.1 RC1</a></li>
<li><a href="http://www.scala-lang.org/downloads/" target="_blank">Scala 2.10 RC3</a></li>
</ul>
<p>Please try out these releases and let us know if you run into any problems.</p>
<p><strong>Videos from Scala eXchange 2012</strong><br /> The <a href="http://skillsmatter.com/event/scala/scala-exchange-2012" target="_blank">Scala eXchange 2012 conference</a> was packed with great content!  In case you weren't there you can still watch the session recordings by going to the <a href="http://skillsmatter.com/event/scala/scala-exchange-2012" target="_blank">session list</a> and clicking a "View the podcast here..." link.  Make sure you check out <a href="http://skillsmatter.com/podcast/scala/keynote-martin-odersky" target="_blank">Martin Odersky's Keynote</a> and the other great talks!</p>
<p><strong>Video Leadership Series and Typesafe YouTube Channel</strong><br />We've launched a new <a href="http://blog.typesafe.com/typesafe-launches-thought-leadership-video-se" target="_blank">Video Leadership Series</a> and the <a href="http://www.youtube.com/user/typesafeglobal">Typesafe YouTube Channel</a>. The <a href="http://www.youtube.com/watch?v=hiurd7KaSEI" target="_blank">first video in the series</a> was recently recorded at Intel during a San Francisco Scala meetup. James Baldwin, General Manager of the Engineering Division of Intel Media, opens the video with an overview of the value Intel sees Scala playing in the future of software development.</p>
<p><strong>Typesafe Developer Contest Wraps Up with 65 Contenders</strong><br /> The <a href="http://www.typesafe.com/resources/developer-contest" target="_blank">Typesafe Developer Contest</a> challenged developers to build beautiful apps with Play, Akka, and Scala. It was great to see so many developers participate! All 65 submissions are currently being judged and the winners will be announced on the <a href="http://blog.typesafe.com/" target="_blank">Typesafe Blog</a>.</p>
<p><strong>Gradle 1.3 Improves Scala Support</strong><br /> The <a href="http://www.gradle.org/docs/1.3/release-notes" target="_blank">Gradle build tool version 1.3</a> has been released with improved Scala support, including faster Scala compilation and better Scala IDE support.</p>
<p>Make sure you <a href="http://typesafe.com/newsletter" target="_blank">subscribe to the Typesafe Newsletter</a> to get future newsletters by email!</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 28 Nov 2012 07:44:00 UTC</pubDate>
                <title>Typesafe Launches Thought Leadership Video Series</title>
                <link>http://typesafe.com/blog/typesafe-launches-thought-leadership-video-se</link>
                <guid>http://blog.typesafe.com/typesafe-launches-thought-leadership-video-se</guid> 
                <description>
                    <![CDATA[<p>Today we are launching the Typesafe Thought Leadership Video Series, a collection of videos showcasing forward-looking opinions from our staff, partners and customers. <a href="http://www.youtube.com/watch?v=hiurd7KaSEI">The first video</a> was recently recorded at Intel during a San Francisco Scala meetup. James Baldwin, General Manager of the Engineering Division of Intel Media, opens the video with an overview of the value Intel sees Scala playing in the field of development, followed by a brief introduction to Scala 2.10 by Martin Odersky, Scala creator and Typesafe co-founder.</p>
<p>We hope this series will inspire, challenge and motivate all those developers out there looking for the next generation software solution. When we launched Typesafe, we made a commitment to remain at the forefront of software development and to set the agenda for the next wave of programming solutions aimed to tackle the problems of tomorrow. This video series will showcase this commitment by giving all of you a peek into what we think are going to be the next challenges as well opinions on crucial development topics from experts in the field.</p>
<p>We welcome your suggestions on who you'd like to see on camera as well as any questions you might want us to ask these experts! Give us a shout-out <a href="http://twitter.com/typesafe">on Twitter</a>.</p>
<p>Check out the full version of the first video of the Typesafe Thought Leadership Series on <a href="http://www.youtube.com/user/typesafeglobal">our YouTube channel</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 16 Nov 2012 05:49:00 UTC</pubDate>
                <title>Akka 2.0.4 Released</title>
                <link>http://typesafe.com/blog/168846687</link>
                <guid>http://blog.typesafe.com/168846687</guid> 
                <description>
                    <![CDATA[<p class="p1">We have released an update to the <a href="http://akka.io" target="_blank">Akka middleware</a>, which fixes several bugs and is binary compatible with previous releases in the 2.0.x series. The most notable changes are:</p>
<ul>
<li>Fix a divide-by-zero bug in routers</li>
<li>Fix a wrap-around bug in HashedWheelTimer which would expire timeouts early</li>
<li>Stop using Unsafe.throwException to allow running on Android</li>
<li>Configurable worker pool size in remoting to allow running with fewer threads</li>
</ul>
<p class="p2">We strongly recommend updating all projects using the 2.0 series to this version.&nbsp;Please see <a href="http://letitcrash.com/post/35712458043/akka-2-0-4-released" target="_blank">the full announcement</a> for more details.</p>
<p class="p2">Happy hAkking!</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 01 Nov 2012 05:28:00 UTC</pubDate>
                <title>Akka 2.1 Feature Spotlights</title>
                <link>http://typesafe.com/blog/akka-21-spotlights</link>
                <guid>http://blog.typesafe.com/akka-21-spotlights</guid> 
                <description>
                    <![CDATA[<p>The first release candidate of Akka 2.1 was <a href="https://groups.google.com/d/msg/akka-user/edUPXFEmpfU/-ZJ82CUSiDIJ" target="_blank">released last week</a>!  Now is a great time to take it for a spin and <a href="https://groups.google.com/group/akka-user" target="_blank">give feedback</a> before 2.1.0 goes final!</p>
<p>A series of short blog posts will "Spotlight" the new Akka 2.1 features on the <a href="http://letitcrash.com/tagged/spotlight21" target="_blank">Akka Team Blog</a> during the upcoming weeks.  In fact, there are already four Akka 2.1 Spotlights:</p>
<ol>
<li><a href="http://letitcrash.com/post/32340419628/2-1-spotlight-shiny-new-actor-dsl" target="_blank">Try the new shiny actor DSL in the REPL</a></li>
<li><a href="http://letitcrash.com/post/34112069608/2-1-spotlight-circuit-breaker" target="_blank">A circuit breaker for asynchronous calls</a></li>
<li><a href="http://letitcrash.com/post/34300103146/2-1-spotlight-cluster-membership" target="_blank">Get notifications when new nodes joins and leaves the cluster</a></li>
<li><a href="http://letitcrash.com/post/34691842108/2-1-spotlight-cluster-death-watch" target="_blank">Cluster failure detection hooked hooked up with death watch</a></li>
</ol>
<p>More exciting posts are in the pipeline.  So stay tuned and watch the <a href="http://letitcrash.com/tagged/spotlight21" target="_blank">Akka Team Blog</a> for more Spotlights!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 31 Oct 2012 05:17:00 UTC</pubDate>
                <title>Typesafe Newsletter - October 2012</title>
                <link>http://typesafe.com/blog/typesafe-newsletter-october-2012</link>
                <guid>http://blog.typesafe.com/typesafe-newsletter-october-2012</guid> 
                <description>
                    <![CDATA[<p>Typesafe periodically assembles the top news items related to Typesafe, Scala, Akka, and Play Framework. <a href="http://typesafe.com/newsletter" target="_blank">Subscribe now</a> to get it via email!  Here is the Typesafe Newsletter from October 2012:</p>
<p><strong>Scala Moves From "Trial" to "Adopt" in ThoughtWorks Tech Radar</strong></p>
<p>In their latest Technology Radar, ThoughtWorks has moved Scala from the "Trial" category to "Adopt" which according to them means "We feel strongly that the industry should be adopting these items."  <a href="http://www.thoughtworks.com/articles/technology-radar-october-2012" target="_blank">Read more...</a></p>
<p><strong>Rod Johnson, Spring Framework Creator, Joins Typesafe's Board</strong></p>
<p>Typesafe is very excited to have Rod Johnson now on the Board of Directors.  Rod brings vast experience building successful developer frameworks.  <a href="http://blog.typesafe.com/typesafe-appoints-rod-johnson-to-board-of-dir" target="_blank">Read more...</a></p>
<p><strong>The Typesafe Developer Contest Open Until November 30</strong></p>
<p>There is still time to enter your Scala, Akka, and Play sample applications in the Typesafe Developer Contest!  The deadline is November 30th and now that Rod Johnson is part of Typesafe, he will be doing a strict code review on all submissions.  Well...  Actually he will just be joining the panel of judges but how cool is that?  <a href="http://www.typesafe.com/resources/developer-contest" target="_blank">Read more...</a></p>
<p><strong>JavaOne 2012 Was Packed with Typesafe Goodness</strong></p>
<p>There were over 15 sessions at JavaOne 2012 that featured Scala, Akka, and Play Framework!  Oracle has posted the video recordings of many of these sessions. Here are a few that you may want to check out (video links are under "Presentation Download"):</p>
<ul>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=6338" target="_blank">Scala 2.10 with Martin Odersky</a></li>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=3470" target="_blank">Scala Tricks by Venkat Subramaniam</a></li>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=3454" target="_blank">Concurreny Without Pain in Pure Java by Venkat Subramaniam</a></li>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=4345" target="_blank">Up, Up, and Out: Scaling Software with Akka by Viktor Klang</a></li>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=6008" target="_blank">Modern Java Web Development with Play Framework 2.0 by Peter Hausel</a></li>
<li><a href="https://oracleus.activeevents.com/connect/sessionDetail.ww?SESSION_ID=3845" target="_blank">Introduction to the Play Framework by James Ward</a></li>
</ul>
<p><strong>DZone Publishes a Scala Refcard</strong></p>
<p>DZone Refcardz are a great way to get started with a new technology and so it is great to see a new Scala Refcard by Jesper de Jong.  <a href="http://refcardz.dzone.com/refcardz/scala" target="_blank">Go grab your free PDF of the Scala Refcard!</a></p>
<p><strong>Scala 2.10 RC1 &amp; Akka 2.1 RC1 Have Been Released</strong></p>
<p>The first release candidates of Scala 2.10 and Akka 2.1 have been released!  These early releases provide a great way to experiment with new features and catch any last minute bugs.  Let us know what you think about <a href="http://www.scala-lang.org/node/13096" target="_blank">Scala 2.10 RC1</a> and <a href="https://groups.google.com/d/msg/akka-user/edUPXFEmpfU/-ZJ82CUSiDIJ" target="_blank">Akka 2.1 RC1</a>!</p>
<p><strong>Klout Scales Out with Scala, Akka, and Play</strong></p>
<p>Klout knew that building on the Typesafe Stack would allow them to easily scale their popular social influence technology.  Now they are processing over one billion requests per day through their Play Framework web API server and managing concurrency through Akka. By writing the code in Scala they kept things simple and focused on the core business values instead of the plumbing. <a href="http://blog.typesafe.com/scaling-the-klout-api-with-scala-akka-and-pla" target="_blank">Read more...</a></p>
<p>It's been an exciting month!  Make sure you <a href="http://typesafe.com/newsletter" target="_blank">subscribe to the Typesafe Newsletter</a> to get future newsletters by email!</p>
]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 30 Oct 2012 05:50:00 UTC</pubDate>
                <title>New Scala Worksheet Release</title>
                <link>http://typesafe.com/blog/new-scala-worksheet-release</link>
                <guid>http://blog.typesafe.com/new-scala-worksheet-release</guid> 
                <description>
                    <![CDATA[<p>We are excited to announce the <a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started">Scala Worksheet V0.1.2</a> for the <a href="http://typesafe.com/stack/scala_ide_download">Scala IDE V2.1-M2</a>. If this is the first time you're hearing about the Worksheet, make sure you check it out.  All feedback is that it is an exceptional productivity booster for your daily Scala coding.</p>
<p>In a nutshell, a worksheet is a Scala file that is evaluated on save, and the result of each expression is shown in a column to the right of your program. This makes it easy to see the execution results of each statement in a Scala app without having to step through a debugger. Worksheets are like a REPL session on steroids. The Scala Worksheet also supports editor completion, hyperlinking, interactive errors-as-you-type, and auto-formatting. &nbsp;This new release includes a number of fixes related to the worksheet instrumentation.</p>
<p>The worksheet plugin is available for both Scala 2.9 and Scala 2.10.0-RC1. &nbsp;It can be installed on both Eclipse 3.7 (Indigo) and Eclipse 4.2 (Juno). &nbsp;Get started by either&nbsp;<a href="http://typesafe.com/stack/scala_ide_download">downloading the ready-to-use Typesafe Scala IDE</a> or <a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started">reading the Scala Worksheet installation instructions</a>.</p>
<p>For more details about this release, check out&nbsp;<a href="http://scala-ide.org/blog/worksheet-0.1.2.html">the Scala Worksheet article on the Scala IDE blog</a>.</p>
<p>Enjoy the latest release and provide any feedback via the <a href="http://groups.google.com/group/scala-ide-user/">scala-ide-user mailing list</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 29 Oct 2012 06:12:00 UTC</pubDate>
                <title>Rod Johnson to Judge Developer Contest</title>
                <link>http://typesafe.com/blog/rod-johnson-to-judge-developer-contest</link>
                <guid>http://blog.typesafe.com/rod-johnson-to-judge-developer-contest</guid> 
                <description>
                    <![CDATA[<p>Halloween is this week and now you will really have something to be afraid of... &nbsp;Rod Johnson will be one the judges for the <a href="http://www.typesafe.com/resources/developer-contest">Typesafe Developer Contest</a>! &nbsp;Imagine the horror of getting a code review from the guy who created Spring! &nbsp;(Don't let that scare you away, he's promised to go easy on everyone.)</p>
<p>Rod is truly an authority on Java architecture, a thought leader on open source development and business models, and a popular speaker at conferences around the world. We're honored that he's participating as a judge in our contest.</p>
<p>You can still submit your sample applications that demonstrate the power and functionality of the Typesafe Stack for the chance to win $1000, $500 and $200 for the first, second and third placed entries respectively.  And don't forget that every complete entry receives a free t-shirt!</p>
<p>In addition to Rod, entries will be judged by our panel of experts: Martin Odersky, Jonas Bon&eacute;r, Viktor Klang, Peter Hausel and Josh Suereth.</p>
<p>Get the <a href="http://www.typesafe.com/resources/developer-contest">full details on the developer contest</a> and submit your app before the November 30th deadline!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 26 Oct 2012 05:03:00 UTC</pubDate>
                <title>Scala, Akka, and Play Framework at Devoxx 2012</title>
                <link>http://typesafe.com/blog/scala-akka-and-play-framework-at-devoxx-2012</link>
                <guid>http://blog.typesafe.com/scala-akka-and-play-framework-at-devoxx-2012</guid> 
                <description>
                    <![CDATA[<p>This year's Devoxx is going to be packed with great sessions about the Typesafe technologies! There is a nice mix of sessions from the community and from project leads. &nbsp;Here is the comprehensive list of all Devoxx 2012 sessions related to Scala, Akka, and Play Framework:</p>
<p><strong>University Sessions</strong></p>
<ul>
<li><a href="http://www.devoxx.com/display/DV12/First+steps+with+Scala" target="_blank">First Steps with Scala</a> by Dick Wall and Bill Venners</li>
<li><a href="http://www.devoxx.com/display/DV12/Play+Framework+-+Crash+Course">Play Framework - Crash Course</a> by Peter Hausel (Typesafe), Sadek Drobi and Guillaume Bort</li>
<li><a href="http://www.devoxx.com/display/DV12/Scala+advanced+concepts+and+best+practices">Scala Advanced Concepts and Best Practices</a> by Dick Wall and Bill Venners</li>
</ul>
<p><strong>Tools in Action</strong></p>
<ul>
<li><a href="http://www.devoxx.com/display/DV12/Rapid+Application+Development+with+Play+2">Rapid Application Development with Play 2</a> by Peter Hausel&nbsp;(Typesafe)</li>
</ul>
<p><strong>BOFs</strong></p>
<ul>
<li><a href="http://www.devoxx.com/display/DV12/Scala+Enthusiasts+Gathering">Scala Enthusiasts Gathering</a> by BeScala</li>
<li><a href="http://www.devoxx.com/display/DV12/Scala+Puzzlers">Scala Puzzlers</a> by Andrew Phillips</li>
</ul>
<p><strong>Labs</strong></p>
<ul>
<li><a href="http://www.devoxx.com/display/DV12/Practical+-+Scala+Koans">Practical - Scala Koans</a> by Dick Wall and Bill Venners</li>
</ul>
<p><strong>Conference Sessions</strong></p>
<ul>
<li><a href="http://www.devoxx.com/display/DV12/Effective+Scala">Effective Scala</a> by Joshua Suereth&nbsp;(Typesafe)</li>
<li><a href="http://www.devoxx.com/display/DV12/Simplicity+in+Scala+Design">Simplicity in Scala Design</a> by Bill Venners</li>
<li><a href="http://www.devoxx.com/display/DV12/Functional+Compilers++From+CFG+to+EXE">Functional Compilers: From CFG to EXE</a> by Daniel Spiewak</li>
<li><a href="http://www.devoxx.com/display/DV12/Up+up+and+Out++Scaling+software+with+Akka">Up, up, and Out - Scaling Software with Akka</a> by Jonas Bon&eacute;r&nbsp;(Typesafe)</li>
</ul>
<p>Make sure you also check out the <a href="http://www.meetup.com/play-be/events/88027862/">Belgian Play Meetup</a> and the Typesafe booth!  See you at Devoxx 2012!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 16 Oct 2012 05:30:00 UTC</pubDate>
                <title>DZone&apos;s First Scala cheatsheet for Refcardz</title>
                <link>http://typesafe.com/blog/dzones-first-scala-cheatsheet-for-refcardz</link>
                <guid>http://blog.typesafe.com/dzones-first-scala-cheatsheet-for-refcardz</guid> 
                <description>
                    <![CDATA[<p>We were excited to learn that Jesper de Jong, a member of the Dutch Scala Enthusiasts user group, is spearheading the first Scala cheatsheet for Refcardz, released today. Refcardz is a great resource for developers to stay on top of emerging technology, so we&rsquo;re proud a member of our community has taken time to write a guide.</p>
<p>If you&rsquo;re just getting started with Scala, we encourage you to head over to DZone and download: Scala: The Scalable JVM Language:&nbsp;<a href="http://refcardz.dzone.com/refcardz/scala" target="_blank">http://refcardz.dzone.com/refcardz/scala</a></p>
<p>Happy coding!</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 15 Oct 2012 07:07:00 UTC</pubDate>
                <title>R.I.P. Phil Bagwell</title>
                <link>http://typesafe.com/blog/rip-phil-bagwell</link>
                <guid>http://blog.typesafe.com/rip-phil-bagwell</guid> 
                <description>
                    <![CDATA[<p>Typesafe's Phil Bagwell passed away on October 6, 2012. &nbsp;We, and the entire community, are deeply saddened by this loss. &nbsp;Our hearts go out to his family and everyone who knew him.</p>
<p>Below are the words spoken by Typesafe co-founder and creator of Scala, Martin Odersky, at Phil's funeral earlier today:</p>
<p><em>Like many of his friends&nbsp;I am terribly sad to see him go so untimely soon. But I am also&nbsp;thankful for having known him and for the things he brought into our&nbsp;lives.</em></p>
<p><em>I met Phil 11 years ago. He came into my office and told me he wanted&nbsp;to write up some nifty ideas on datastructures in an academic conference paper.&nbsp;It was the first time he ventured into that terrain after a successful career in industry.&nbsp;So his question was: How could he make sure the program committee would not steal his ideas?</em></p>
<p><em>I told him that program committees are not in the habit of doing that,&nbsp;but in any case, if he had concerns, he could publish a technical&nbsp;report from EPFL, so the precedence of his ideas would be&nbsp;established. So that's what he did. We started to discuss, and I asked&nbsp;him whether he could write a datastructure for a functional&nbsp;programming language that was essentially as efficient as an array. He&nbsp;tweaked his ideas and produced a paper which appeared at the IFL&nbsp;conference in 2002 with the title "Fast Functional Lists".&nbsp;</em></p>
<p><em>Fast forward 10 years and the majority of functional languages out&nbsp;there have a version of the data structure Phil invented. &nbsp;Arguably,&nbsp;the rise of functional programming in the last 5 years would not have&nbsp;been possible without it. So, Phil happened to influence the&nbsp;development of functional programming to no small degree even though&nbsp;he never wrote programs in a functional language himself.</em></p>
<p><em>We then got back together about 5 years ago, when Phil told me that he&nbsp;would like to help us market the Scala language we were working on. &nbsp;Us academics understood as little of marketing then as Phil&nbsp;understood of academic publishing when he first walked into my&nbsp;office. Phil taught us that marketing is about people, taking their&nbsp;concerns seriously and making them your own. He was great at that.</em></p>
<p><em>One outstanding thing he did was organize the Scala Days&nbsp;conferences. We had the first one in 2010 in Lausanne, and Phil made it&nbsp;a huge success, with people being super-enthusiastic and excited. He&nbsp;then repeated this feat twice more, in Stanford, and in London, every time with increasing numbers of speakers and participants. Sadly, the&nbsp;London conference he could no longer attend himself, although his&nbsp;presence was very much felt.</em></p>
<p><em>The first Scala Days conference sparked so much enthusiasm that we decided&nbsp;to form a company to support the language, which soon after merged to&nbsp;become Typesafe. &nbsp;Phil was part of it from day one. &nbsp;It's fair to&nbsp;say, that, without Phil, there would not have been a Scala Days&nbsp;conference, nor a company like Typesafe.</em></p>
<p><em>In all this, Phil is remembered for his touch with people. It's no&nbsp;understatement to say that Phil was the bright light of every group he&nbsp;worked with, whether at EPFL or at Typesafe. Phil was a very kind&nbsp;person, he genuinly understood people, he cared for them, and was&nbsp;attentive to their needs. He was also always positive, seeing the&nbsp;bright side of things and insisting that people have fun. For me, he&nbsp;was a personal friend, that would teach me new ways to approach&nbsp;things, and to whom I could speak about everything in complete&nbsp;confidence. I will very much miss him, and I will keep him fondly&nbsp;in my memories.</em></p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 10 Oct 2012 06:30:00 UTC</pubDate>
                <title>sbt has a brand new release:  0.12.1</title>
                <link>http://typesafe.com/blog/sbt-has-a-brand-new-release-0121</link>
                <guid>http://blog.typesafe.com/sbt-has-a-brand-new-release-0121</guid> 
                <description>
                    <![CDATA[<p>We're excited to announce the latest sbt release. &nbsp;Please go to the <a href="http://www.scala-sbt.org/release/docs/" target="_blank">new documentation site</a> for details on <a href="http://www.scala-sbt.org/release/docs/Getting-Started/Setup.html" target="_blank">how to install this latest version</a>.  This is the latest release in the sbt 0.12 series, which is binary compatible with the previous sbt 0.12.0 and allows upgrading without upgrading plugins or settings. This release includes the following fixes/features:</p>
<p><strong>General improvements to incremental compilation:&nbsp;</strong></p>
<ul>
<li>With 0.12.1, general incremental compilation should be faster. This is but one step of many towards better builds.</li>
</ul>
<p><strong>Improved caching and cache documentation:</strong></p>
<ul>
<li>Please read the new <a href="http://www.scala-sbt.org/release/docs/Detailed-Topics/Dependency-Management-Flow.html" target="_blank">Dependency Management Flow</a> document for details on how you can improve your experience with sbt&rsquo;s caching and dependency management in Ivy.</li>
</ul>
<p><strong>Fixes to <a href="http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing.html#forking-tests" target="_blank">forking tests</a>.</strong></p>
<p>Enjoy the latest release and provide any feedback to: <a href="mailto:simple-build-tool@googlegroups.com">simple-build-tool@googlegroups.com</a></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 02 Oct 2012 08:17:00 UTC</pubDate>
                <title>Scaling the Klout API with Scala, Akka, and Play</title>
                <link>http://typesafe.com/blog/scaling-the-klout-api-with-scala-akka-and-pla</link>
                <guid>http://blog.typesafe.com/scaling-the-klout-api-with-scala-akka-and-pla</guid> 
                <description>
                    <![CDATA[<p><a href="https://twitter.com/dyross">David Ross</a> has a great post on the <a href="http://klout.com">Klout</a> engineering blog today on their use of Akka, the event-driven middleware at the heart of the Typesafe Stack:</p>
<p>"Back in March, we had just released the Scala Play! Framework API infrastructure that we had been writing the previous few months. Previously, disparate teams were responsible for their own serving infrastructure; now, having a central platform has empowered Klout to scale to <strong>a billion API requests per day</strong> and export powerful new functionality to partners. &nbsp;Six months after launch, we&rsquo;ve made some serious improvements to the API&rsquo;s scalability and availability using <strong>Akka&rsquo;s rich toolset for concurrent programming</strong>. Though Akka is mostly famous for its implementation of the Actor Model, I&rsquo;m going to talk about two other Akka features, Futures and Agents."</p>
<p>Read the <a href="http://corp.klout.com/blog/2012/10/scaling-the-klout-api-with-scala-akka-and-play/">complete story on the Klout engineering blog</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 01 Oct 2012 03:00:00 UTC</pubDate>
                <title>Typesafe Appoints Rod Johnson to Board of Directors</title>
                <link>http://typesafe.com/blog/typesafe-appoints-rod-johnson-to-board-of-dir</link>
                <guid>http://blog.typesafe.com/typesafe-appoints-rod-johnson-to-board-of-dir</guid> 
                <description>
                    <![CDATA[<p>Typesafe today announced that Rod Johnson, co-founder of SpringSource, has joined the company&rsquo;s board of directors. Additionally, Typesafe announced a fivefold increase in training revenue, underscoring the increasing adoption of Scala currently underway. As an example of massive interest in Scala, Typesafe co-founder Martin Odersky&rsquo;s free, 7-week course titled, &ldquo;Functional Programming Principles in Scala&rdquo; has attracted more than 45,000 registrants on Coursera. The company will be presenting 4 of the 18 Scala-related conference sessions during JavaOne.</p>
<p>Read more <a href="http://typesafe.com/company/news" target="_blank">here</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 28 Sep 2012 02:00:00 UTC</pubDate>
                <title>Typesafe Unveils Scala1 App for JavaOne</title>
                <link>http://typesafe.com/blog/typesafe-unveils-scala1-app-for-javaone</link>
                <guid>http://blog.typesafe.com/typesafe-unveils-scala1-app-for-javaone</guid> 
                <description>
                    <![CDATA[<p>Today, <a href="http://typesafe.com">Typesafe</a> is excited to unveil its new Scala1 app so attendees can track Scala related content and speakers, and engage with other enthusiasts at the <a href="http://www.oracle.com/javaone/index.html" target="_blank">JavaOne</a> conference. &nbsp;There is also a Playground in the app so hackers can make changes to the functionality! &nbsp;</p>
<p>You can read more about it <a href="http://typesafe.com/company/news/24876" target="_blank">here</a> and the apps are available for download here:&nbsp;<a href="http://itunes.apple.com/us/app/scala1/id562464417?mt=8&amp;ign-mpt=uo%3D4" target="_blank">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.magneticbear.scala1" target="_blank">Android</a></p>
<p>Enjoy the conference!</p>
    ]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 26 Sep 2012 06:34:00 UTC</pubDate>
                <title>Typesafe Console becomes part of the Stack</title>
                <link>http://typesafe.com/blog/typesafe-console-becomes-part-of-the-stack-87576</link>
                <guid>http://blog.typesafe.com/typesafe-console-becomes-part-of-the-stack-87576</guid> 
                <description>
                    <![CDATA[<p>The <a href="http://console-demo.typesafe.com/" target="_blank">Typesafe Console</a> will become a part of the <a href="http://typesafe.com/stack/" target="_blank">Typesafe Stack</a> in the upcoming release (stay tuned for details on the timing of the next release). <p />The Console is an enterprise-grade dashboard for monitoring your application built on the Typesafe Stack, including Akka event-driven middleware.<p />The Console will be part of a commercially licensed, but free for developers distribution of the Stack. Once an application goes into production, there is a requirement to purchase the Stack with <a href="http://typesafe.com/products/typesafe-subscription" target="_blank">commercial support</a> from Typesafe.<p />You can find more information about the Console <a href="http://typesafe.com/products/console" target="_blank">here</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 20 Sep 2012 05:11:00 UTC</pubDate>
                <title>Typesafe IDE Update</title>
                <link>http://typesafe.com/blog/typesafe-ide-update</link>
                <guid>http://blog.typesafe.com/typesafe-ide-update</guid> 
                <description>
                    <![CDATA[<p class="p1">The new Typesafe IDE downloads have been a blast, and lots of people have downloaded them in the past few days. Unfortunately, we had a couple of issues:</p>
<ul>
<li>The memory size setting for Windows 32 bit was too large, leading to errors when starting the JVM</li>
<li>The PermGen space was too small leading to crashes on some systems</li>
</ul>
<p class="p2">The good news is that we issued a fix and the new downloads are ready on the <span style="color: #1155cc;"><a href="http://typesafe.com/stack/scala_ide_download" target="_blank">Stack download page</a></span>. &nbsp;Per usual, please file tickets&nbsp;in the&nbsp;<a href="http://www.assembla.com/spaces/scala-ide/tickets"><span style="color: #1155cc;">upstream</span></a><a href="http://www.assembla.com/spaces/scala-ide/tickets"><span style="color: #1155cc;">&nbsp;</span></a><span style="color: #1155cc;"><a href="http://www.assembla.com/spaces/scala-ide/tickets">project</a>.</span></p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Sat, 15 Sep 2012 02:30:00 UTC</pubDate>
                <title>Scala IDE 2.1.0 Milestone 2</title>
                <link>http://typesafe.com/blog/scala-ide-210-milestone-2-74556</link>
                <guid>http://blog.typesafe.com/scala-ide-210-milestone-2-74556</guid> 
                <description>
                    <![CDATA[
<p style="border: none;">This week the Scala IDE team has released <a href="http://scala-ide.org/blog/release-notes-2.1-Milestone-2.html"><span style="color: #1155cc;">Milestone</span></a><a href="http://scala-ide.org/blog/release-notes-2.1-Milestone-2.html"><span style="color: #1155cc;"> 2 </span></a>of the upcoming <a href="http://scala-ide.org/docs/helium/index.html"><span style="color: #1155cc;">Helium</span></a> release, with several new features, an <em>ecosystem</em> of Scala-related plugins and a new way to explore Scala with the <a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started"><span style="color: #1155cc;">Scala</span></a><a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started"><span style="color: #1155cc;"> </span></a><a href="https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started"><span style="color: #1155cc;">worksheet</span></a>! You can find out more about all the exciting new features by following the links.</p>
<p style="border: none;"><strong><span style="font-size: large;">Typesafe Scala IDE</span></strong></p>
<p style="border: none;">To make it easier for new users, today we released the <a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;">Typesafe</span></a><a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;"> </span></a><a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;">Scala</span></a><a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;"> </span></a><a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;">IDE</span></a>, a full-featured IDE based on Eclipse! This is an Eclipse distribution that comes pre-configured and pre-installed with all the right Scala plugins. No more tweaking <span style="font-family: Courier New;">eclipse.ini</span>, no more updating site configurations! <a href="http://typesafe.com/stack/scala_ide_download"><span style="color: #1155cc;">Choose</span></a> the right download for your platform (all three major OSs are supported) and start developing Scala right away! You can easily stay up to date by using <em>Check for updates</em> to be sure to never miss any new developments!</p>
<p style="border: none;">We hope you'll enjoy using our IDE and, as usual, please file tickets in the <a href="http://www.assembla.com/spaces/scala-ide/tickets"><span style="color: #1155cc;">upstream</span></a><a href="http://www.assembla.com/spaces/scala-ide/tickets"><span style="color: #1155cc;"> </span></a><a href="http://www.assembla.com/spaces/scala-ide/tickets"><span style="color: #1155cc;">project</span></a>. And, as they say, if there's no screenshot it didn't happen, so here's one:</p>
<p style="border: none;"><div class='p_embed p_image_embed'>
<img alt="Scalaide_image" height="365" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-09-14/eIFahvhojmnieJkfxBnjwFbnhBdBtBtEunIdFooJbDBwgJmaCxfIfEeEfusu/ScalaIDE_image.png.scaled500.png" width="481" />
</div>
</p>

<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 06 Sep 2012 06:13:00 UTC</pubDate>
                <title>An Akka kata with the Scala Meetup group in Stockholm/Gothenburg</title>
                <link>http://typesafe.com/blog/an-akka-kata-with-the-scala-meetup-group</link>
                <guid>http://blog.typesafe.com/an-akka-kata-with-the-scala-meetup-group</guid> 
                <description>
                    <![CDATA[<p>Bj&ouml;rn Antonsson and myself, Henrik Engstr&ouml;m, from the Akka team met up with the <a href="http://www.meetup.com/Scala-Stockholm/">Scala Meetup group in Stockholm</a> to do an Akka coding kata. The Gothenburg group joined in via Skype. This post will describe the kata and the overall experience.</p>
<h2>What&rsquo;s a kata?</h2>
<p>From Wikipedia: &ldquo;<a href="http://en.wikipedia.org/wiki/Kata">Kata</a> is a Japanese word describing detailed choreographed patterns of movements practised either solo or in pairs. &hellip; More recently, kata has come to be used in English in a more general or figurative sense, referring to any basic form, routine, or pattern of behavior that is practiced to various levels of mastery.&rdquo;</p>
<p>Katas have been used to master everything from the traditional tea ceremony, karate and, for the first time afaik, for mastering Akka.</p>
<h2>The Akka kata</h2>
<p>We, in the Akka team, sat down one lunch and discussed what &ldquo;movements&rdquo; we wanted the kata to cover and a good domain to which we could apply those &ldquo;movements.&rdquo; The result was a betting domain in which you should be able to recover everything from small hick-ups to JVM crashes. This would cover some of the essential bits of Akka like:</p>
<ul>
<li>Creating actor systems and actors</li>
<li>Sending and receiving messages</li>
<li>Scheduling tasks</li>
<li>Supervising actors and taking appropriate action</li>
</ul>
<h2>Design Overview - Scaffolding</h2>
<p>The aim of this kata was to point the student in the right direction. To enable this we created some scaffolding code together with a brief introduction of the Akka concepts that they would need to solve the task ahead. You can find the project here:</p>
<p><a href="https://github.com/henrikengstrom/akka-meetup-sthlm">https://github.com/henrikengstrom/akka-meetup-sthlm</a></p>
<p>We also did a very simplified overview of what parts the application consisted of and also what communication between these parts that was needed. You can find the overview here below.<div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-09-06/dfvuwvewrdtyEtzyzpaFviEmmhhvojktxykaHcfGtbBpqtaHcHBDCnfEhyGs/akka_kata.jpeg.scaled1000.jpg"><img alt="Akka_kata" height="329" src="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-09-06/dfvuwvewrdtyEtzyzpaFviEmmhhvojktxykaHcfGtbBpqtaHcHBDCnfEhyGs/akka_kata.jpeg.scaled500.jpg" width="500" /></a>
</div>
</p>
<h2>The Meeting</h2>
<p>We started off the meeting with a very brief introduction of what Akka is and some of the concepts and features that you use when you build systems with Akka. After that there was a more hands on walk through of the parts of Akka that were relevant to this kata - we call this the&nbsp;<a href="https://github.com/henrikengstrom/akka-meetup-sthlm/blob/master/GREEN_BELT_AKKA.md">Akka green belt examination</a>.</p>
<p>Every meeting participant had a computer and everyone had also installed the scaffolding code beforehand so we asked them to pair up two and two and then get started. Bj&ouml;rn and I circled the room, like hawks, answering questions, giving advice while also having a lot of fun. We estimated that they would be able to solve the kata in about two hours time and this seemed like a good estimation. Not everyone was 100% done when we presented the solution proposal, but not far away from a complete solution.</p>
<h2>The Solution Proposal</h2>
<p>There is no correct way of implementing a system - there are many ways! Therefore you should view the proposal we have made as one solution not <em>the</em> solution.</p>
<p>The above also became apparent when we presented the solution to the group. Many had solved the task a little bit different than the way we had. We discussed pros and cons with the alternatives and also got into the differences between designing a standard n-layered system and an actor based system. Overall a very interesting and productive experience - for both us from the Akka team and the participants in the meeting. We, in the team, feel it is extremely valuable to see how users of Akka apply it to their domains. It is only with this feedback loop we can continue to improve and evolve Akka to become even greater than it already is.</p>
<p>When you are done with your kata you can compare your solution to the proposal we have created:&nbsp;<a href="https://github.com/henrikengstrom/akka-meetup-sthlm/tree/solution">https://github.com/henrikengstrom/akka-meetup-sthlm/tree/solution</a></p>
<h2>About the <a href="http://en.wikipedia.org/wiki/Sensei">Senseis</a></h2>
<h3>Henrik Engstr&ouml;m -&nbsp;<a href="https://twitter.com/h3nk3">@h3nk3</a></h3>
<p>After graduating with a M.Sc. degree in Computer Science in 1998 at the Royal Institute of Technology in Stockholm Henrik has been working as a consultant up until his Typesafe employment in 2011. Henrik has not only vast experience from programming languages but also a great domain knowledge within the financial, retail and e-gambling industries. Apart from his major interest, programming, he is also an avid Arsenal supporter, black belt in Shotokan Karate and a hobby wine connoisseur.</p>
<h3>Bj&ouml;rn Antonsson -&nbsp;<a href="https://twitter.com/bantonsson">@bantonsson</a></h3>
<p>Bj&ouml;rn is a passionate software engineer with a M.Sc. in Computer Science from the Royal Institute of Technology in Stockholm, whose experience ranges from the lowest levels of hardware memory models right through the operating system and the JVM as a founder and longtime developer of JRockit, and straight up into high volume financial data systems and large traffic website.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 04 Sep 2012 08:39:00 UTC</pubDate>
                <title>Akka Summer of Blog Winner Announced</title>
                <link>http://typesafe.com/blog/akka-summer-of-blog-winner-announced</link>
                <guid>http://blog.typesafe.com/akka-summer-of-blog-winner-announced</guid> 
                <description>
                    <![CDATA[<p>Congratulations to everyone who participated in the Akka Summer of Blog. Visit the <a href="http://letitcrash.com/post/30867120846/summer-of-blog-and-the-winner-is" target="_blank">Akka team blog</a> to see who won!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 04 Sep 2012 08:24:00 UTC</pubDate>
                <title>Introducing Typesafe Console 1.1</title>
                <link>http://typesafe.com/blog/introducing-typesafe-console-11</link>
                <guid>http://blog.typesafe.com/introducing-typesafe-console-11</guid> 
                <description>
                    <![CDATA[<p>We are proud to announce version 1.1 of the Typesafe Console. You can try it out at <a href="http://console-demo.typesafe.com/">http://console-demo.typesafe.com</a>. Please <a href="http://typesafe.com/company/contact">contact us</a> if you are interested in an evaluation account. We appreciate your feedback so that we can continue to evolve the Console in the right direction. In this blog post we will highlight a few of the new features.<p /><span style="font-size: 15px; font-family: Arial; background-color: transparent; font-weight: bold; vertical-align: baseline;">GUI Improvements</span></p>
<p>There have been a lot of improvements to the GUI and its related functionality since the last final release (v1.0). Below are some highlights.<p /><em>Minimized Node Mode</em></p>
<p><em>&nbsp;</em>The nodes can now be viewed in three modes: minimized, normal and expanded. The minimized mode is the new one and it will enable a good overview of many nodes.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-09-06/pasuwaHwcFIFFaaanbfvFmnJHCoeIsgukzmyefvyABlchEFpJHvdDHetxDtv/akka1.jpg.scaled1000.jpg"><img alt="Akka1" height="58" src="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-09-06/pasuwaHwcFIFFaaanbfvFmnJHCoeIsgukzmyefvyABlchEFpJHvdDHetxDtv/akka1.jpg.scaled500.jpg" width="500" /></a>
</div>
</p>
<p><em>Actor Navigation</em></p>
<p>The actors can now be viewed and navigated in a tree view.</p>
<p><em></em></p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2012-09-06/jhFzBFvjwboiiJzcvIcJAtmgqHrIdhpomFjHBhGpCDaepjlJxleIGjxdCGCa/akka2.png.scaled1000.png"><img alt="Akka2" height="448" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-09-06/jhFzBFvjwboiiJzcvIcJAtmgqHrIdhpomFjHBhGpCDaepjlJxleIGjxdCGCa/akka2.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><em>Graph Selection</em></p>
<p>It is possible to change graphs in each scope view (node, actor system, dispatcher, actor and tag). Available graphs are dependent on in what context they are being shown, i.e. the node view has a set of graphs that may not be available in for example the actor view. &nbsp;</p>
<p>A new graph is selected by clicking on the upside-down-triangle-icon on a graph and then selecting an option with white text:</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-09-06/JHhqzHFimgcmanHaEjtwBJgiiuasHymvingepAtCqsrurywJJuqrtlenuDEE/akka3.png.scaled1000.png"><img alt="Akka3" height="387" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-09-06/JHhqzHFimgcmanHaEjtwBJgiiuasHymvingepAtCqsrurywJJuqrtlenuDEE/akka3.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><em>Infobox Selection</em></p>
<p>The structure and selection of an infobox is exactly the same as for graphs (see above).<p /><em>Zoomed Graph View</em></p>
<p>It is possible to zoom in on a graph. Just click on the icon in the upper right corner and it will open a popup window containing the graph in a zoomed in view.&nbsp;</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-09-06/tjDcdExyHblkeFgehbisjsxaDlbDeaaqtlDqpuBgoaGuCremIvtukjHxFvkz/akka4.png.scaled1000.png"><img alt="Akka4" height="344" src="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-09-06/tjDcdExyHblkeFgehbisjsxaDlbDeaaqtlDqpuBgoaGuCremIvtukjHxFvkz/akka4.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><em>Improved Deviations View with Context Information</em></p>
<p>The deviations view has been improved with time based ordering of the deviations, context information, i.e. from where the user navigated to the deviations view, and also all types of deviations (errors, warnings, deadlocks,unhandled messages and dead letters) can be viewed.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile4.posterous.com/getfile/files.posterous.com/temp-2012-09-06/fkottajmxbuqDicpEdcoHBjmtvjEbqkdHCEkwsguhrxtkxpGDIbyxjyxaEEa/akka5.jpg.scaled1000.jpg"><img alt="Akka5" height="153" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-09-06/fkottajmxbuqDicpEdcoHBjmtvjEbqkdHCEkwsguhrxtkxpGDIbyxjyxaEEa/akka5.jpg.scaled500.jpg" width="500" /></a>
</div>
<strong>MongoDB 2.x Support</strong></p>
<p>This version of the Console has been updated to support MongoDB version 2.x (Special thanks to @<a href="https://twitter.com/prasinous">prasinous</a> who cut a new release of <a href="http://github.com/novus/salat">Salat</a> especially for this release of the Console.)<p /><strong>Additional Information about new features</strong></p>
<p>Please see the <a href="http://resources.typesafe.com/docs/console">full documentation</a> of the Typesafe Console for more information about the new, and old, features that the 1.1 version has.</p>
<h2>Pricing, Evaluation and Contact Information</h2>
<p>Firstly, we invite you to take the <a href="http://console-demo.typesafe.com/">online demo</a> of the Typesafe Console for a test drive.<p />For more information on pricing and arranging an evaluation of the Typesafe Console, as part of the <a href="http://typesafe.com/products/typesafe-subscription">Typesafe Subscription</a>, please <a href="http://typesafe.com/company/contact">contact Typesafe</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 31 Aug 2012 08:26:00 UTC</pubDate>
                <title>Intel hosts Dr. Martin Odersky presenting Scala 2.10 </title>
                <link>http://typesafe.com/blog/dr-martin-odersky-presents-scala-210-at-intel</link>
                <guid>http://blog.typesafe.com/dr-martin-odersky-presents-scala-210-at-intel</guid> 
                <description>
                    <![CDATA[<p class="p1">On October 1st Martin Odersky will be on-site with Intel in San Francisco. Martin will be presenting the latest features from the forthcoming Scala 2.10 release, and this event will give attendees the opportunity to network with members of Intel's new software engineering team, along with members of the company backing Scala, Typesafe.</p>
<p class="p1">In his presentation Martin will be covering some of the exciting Scala 2.10 features, including the new reflection API which allows Scala programmers to explore and interact with a programs structure, and effectively treat the entire program as data itself. Unlike Java's stunted reflection capabilities, Scala 2.10 can obtain a plethora of type information via reflection, and amongst other things is the basis for a powerful macro system that allows for sophisticated compile-time metaprogramming, allowing one to dynamically generate types.</p>
<p class="p1">Intel is building a brand new distributed platform atop Scala, and making heavy use of its powerful features to build elegant APIs which leverage the full power of type system. One way such a technique is being used in practice is to give developers compile-time safety when accessing a backend storage system that by default treated all items as indifferent Objects. Not wanting to deal with these overly nondescript types the engineering team constructed an abstraction that provided a type-safe facade, allowing the compiler to then infer all the type information users of that storage system wanted in their programs. In addition to designing such APIs, Intel makes strong use of community tools such as the Akka concurrency toolkit, which helps in solving some of the inherent problems associated with distributed systems, whilst producing a final product that is fast, reliable and very high-quality.</p>
<p class="p3"><span class="s1"><span class="s2">To attend this event, please sign up <a href="http://www.eventbrite.com/org/2691733154" target="_blank">here</a>. For more information about how Scala is used at Intel or to discuss employment opportunities, please </span></span>contact Fui Meng Liew (<a href="mailto:fui.meng.liew@intel.com"><span class="s2">fui.meng.liew@intel.com</span></a>).</p>
<p />
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 24 Aug 2012 08:12:00 UTC</pubDate>
                <title>Akka Summer of Blog Ending Soon</title>
                <link>http://typesafe.com/blog/akka-summer-of-blog-ending-soon</link>
                <guid>http://blog.typesafe.com/akka-summer-of-blog-ending-soon</guid> 
                <description>
                    <![CDATA[<p>Did you ever think "man, Akka is so cool, I&rsquo;d like to contribute, but writing code which survives the hAkkers&rsquo; review is just too hard"? Here's your chance.</p>
<p>This summer, we've been running a guest blogging contest called the "<a href="http://letitcrash.com/post/27558016741/akka-summer-of-blog">Akka Summer of Blog</a>" on the Akka Team blog at <a href="http://letitcrash.com">letitcrash.com</a>.</p>
<p>The winner of the contest will recieve an exclusive, black Akka Team hoodie, signed by Akka tech lead Viktor Klang (aka&nbsp;&radic;).&nbsp;Every author of an accepted post will receive an Akka T-shirt.&nbsp;</p>
<p>The competition ends Aug 31st, so submit your entries soon. Read all the details&nbsp;<a href="http://letitcrash.com/post/27558016741/akka-summer-of-blog" target="_blank">here</a>. We already have a few posts published, tagged as &laquo;summer of blog&raquo;, which you can use as&nbsp;<a href="http://letitcrash.com/tagged/summer-of-blog" target="_blank">inspiration</a>. Good luck!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 22 Aug 2012 01:30:00 UTC</pubDate>
                <title>Typesafe Announces $14M Series B Financing</title>
                <link>http://typesafe.com/blog/typesafe-announces-14m-series-b-financing</link>
                <guid>http://blog.typesafe.com/typesafe-announces-14m-series-b-financing</guid> 
                <description>
                    <![CDATA[<p>Today represents another important milestone for Typesafe, as we <a href="http://typesafe.com/company/news/24499">announce our $14M Series B financing round</a>, led by <a href="http://www.shastaventures.com/">Shasta Ventures</a> with participation from <a href="http://www.juniper.net/">Juniper Networks</a> and existing investors including&nbsp;<a href="http://www.greylock.com">Greylock Partners</a> and Francois Stieger.&nbsp;Along with this announcement, we are pleased to welcome <a href="http://www.shastaventures.com/team/jason_pressman">Jason Pressman</a> from Shasta Ventures to the Typesafe board of directors.</p>
<p>What do we plan to do with this additional capital? Simply put, we'll continue on the journey we started when we formed Typesafe last year:&nbsp;to build the most scalable software platform for the computing architectures of the future&mdash;multicore, parallel and cloud applications.&nbsp;</p>
<p>This will include additional investments in the <a href="http://typesafe.com/stack">Typesafe Stack</a> -- including&nbsp;<a href="http://typesafe.com/technology/scala">Scala</a>, <a href="http://typesafe.com/technology/akka">Akka</a>, <a href="http://typesafe.com/technology/play">Play</a>, and <a href="http://typesafe.com/technology/slick">Slick</a> -- as well as supporting infrastructure such as the <a href="http://typesafe.com/technology/scala-ide">Scala IDE for Eclipse</a>, <a href="http://typesafe.com/technology/sbt">sbt</a>, and <a href="http://blog.typesafe.com/zinc-and-incremental-compilation">zinc</a>.&nbsp;</p>
<p>We'll continue to enhance the commercial maintenance, support, and management capabilities in the <a href="http://typesafe.com/products/typesafe-subscription">Typesafe Subscription</a> (including the <a href="http://typesafe.com/products/console">Typesafe Console</a>), and Typesafe's training and services capabilities.</p>
<p>And perhaps most importantly, we'll ramp up our efforts to bring Typesafe technologies to a broader audience, so that they can enjoy the benefits experienced by early adopters like Juniper Networks, who commented:</p>
<p style="padding-left: 30px;">"The Typesafe Stack enables us to leverage the most recent advances in large-scale parallel processing and distributed computing while building on existing investments in Java."</p>
<p>If you are new to Typesafe and Scala, don't miss your opportunity to get involved by joining Scala creator Martin Odersky's <a href="http://blog.typesafe.com/free-odersky-online-scala-course">upcoming free 7-week online Scala course at Coursera</a>, which kicks off on September 18.</p>
<p>And yes -- <a href="http://typesafe.com/company/careers">we're hiring</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 13 Aug 2012 06:19:00 UTC</pubDate>
                <title>Zinc and Incremental Compilation</title>
                <link>http://typesafe.com/blog/zinc-and-incremental-compilation</link>
                <guid>http://blog.typesafe.com/zinc-and-incremental-compilation</guid> 
                <description>
                    <![CDATA[<p><a href="https://github.com/harrah/xsbt">sbt</a> is arguably the best tool for building Scala projects, with two of the key features being its incremental compiler and its interactive shell. An incremental compiler will only compile what needs to be recompiled after changes. A warm compiler can compile your code twice as fast, or faster. If you’re committed to using a build tool other than sbt, for whatever reason, then you’ve generally been out of luck for fast incremental compilation&hellip; until now.</p>

<p>We’ve separated out sbt’s incremental compiler and made it more widely available through a build compiler called <a href="https://github.com/typesafehub/zinc">Zinc</a>. Zinc has already been integrated with the <a href="https://github.com/davidB/scala-maven-plugin">Scala Maven Plugin</a> and is currently being integrated with a new build tool developed at Twitter called <a href="https://github.com/twitter/commons/tree/master/src/python/twitter/pants">Pants</a>.</p>

<h2>Zinc</h2>

<p><a href="https://github.com/typesafehub/zinc">Zinc</a> is a stand-alone version of sbt&rsquo;s incremental compiler. It comes with a command-line interface and built-in <a href="http://www.martiansoftware.com/nailgun/">Nailgun</a> integration. Zinc can be used as an alternative to scalac, adding incremental compilation, and as an alternative to fsc, serving as a build daemon.</p>

<p>Running with <a href="http://www.martiansoftware.com/nailgun/">Nailgun</a> provides Zinc as a server, communicating commands via a client, keeping cached compilers in a warm running JVM and avoiding startup and load times. This gives the same benefits and performance as sbt’s interactive shell.</p>

<h2>Scala Maven Plugin</h2>

<p>Compiling with Zinc has been added to version 3.1 of the <a href="https://github.com/davidB/scala-maven-plugin">Scala Maven Plugin</a>, bringing incremental compilation for both Scala and Java to Maven. We’ve also added support for talking to a Zinc server, which can improve compilation speeds dramatically.</p>

<h3>Example</h3>

<p>As a realistic example I’ve taken the first few modules of Akka 2.0 and set them up as a Maven project. The modules are akka-actor, akka-testkit, and akka-actor-tests, with both Scala and Java sources, and akka-testkit has both main and test sources. I’m running this example on a MacBook Air.</p>

<p>Let’s first look at a regular clean compile of all the code, without incremental compilation:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn clean test-compile

[INFO] akka ................ SUCCESS [1.088s]
[INFO] akka-actor .......... SUCCESS [43.187s]
[INFO] akka-testkit ........ SUCCESS [28.756s]
[INFO] akka-actor-tests .... SUCCESS [59.122s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 2:12.289s</pre></div>
</div>


<p>Okay, that gives us a baseline.</p>

<p>Now let’s add incremental compilation. This is enabled by setting the <code>recompileMode</code> configuration option to <code>incremental</code>. Here’s a full clean compile with incremental enabled:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn clean test-compile

[INFO] Compiling 69 Scala sources and 75 Java sources to akka-actor/target/classes...
[INFO] Compiling 9 Scala sources to akka-testkit/target/classes...
[INFO] Compiling 5 Scala sources and 1 Java source to akka-testkit/target/test-classes...
[INFO] Compiling 83 Scala sources and 9 Java sources to akka-actor-tests/target/test-classes...

[INFO] akka ................ SUCCESS [1.074s]
[INFO] akka-actor .......... SUCCESS [47.382s]
[INFO] akka-testkit ........ SUCCESS [32.702s]
[INFO] akka-actor-tests .... SUCCESS [1:18.782s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 2:40.081s</pre></div>
</div>


<p>This takes a little longer because the incremental compiler analyzes the compilation so that it knows how the sources relate to each other. For this project it adds around 20% overhead for a full compile.</p>

<p>Now that we’ve compiled everything, with the incremental analysis ready, let’s try changing just one of the tests in akka-actor-tests, in this case ActorRefSpec.scala, and recompile everything:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn test-compile

[INFO] Compiling 1 Scala source to akka-actor-tests/target/test-classes...

[INFO] akka ................ SUCCESS [1.050s]
[INFO] akka-actor .......... SUCCESS [1.617s]
[INFO] akka-testkit ........ SUCCESS [0.461s]
[INFO] akka-actor-tests .... SUCCESS [13.604s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 16.878s</pre></div>
</div>


<p>Perfect, only the changed file was recompiled.</p>

<p>What about a much more pervasive change? Let’s change the Actor trait, which will affect most of the codebase, and see what happens:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn test-compile

[INFO] Compiling 1 Scala source to akka-actor/target/classes...
[INFO] Compiling 48 Scala sources and 4 Java sources to akka-actor/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/test-classes...
[INFO] Compiling 65 Scala sources and 3 Java sources to akka-actor-tests/target/test-classes...
[INFO] Compiling 46 Scala sources and 4 Java sources to akka-actor-tests/target/test-classes...

[INFO] akka ................ SUCCESS [1.061s]
[INFO] akka-actor .......... SUCCESS [40.546s]
[INFO] akka-testkit ........ SUCCESS [36.294s]
[INFO] akka-actor-tests .... SUCCESS [1:45.205s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 3:03.249s</pre></div>
</div>


<p>So in this case it actually takes longer than a clean compile, which is useful to know. The logging shows the files being compiled, starting with the initial invalidation of Actor.scala and then subsequent compiles triggered from this change.</p>

<h3>Nailing it</h3>

<p>When compiling from sbt’s interactive shell, the JVM is warm and the classloader containing the Scala compiler is reused. This reduces a lot of startup and load time. Zinc supports similar warmth through running as a Nailgun server, and the Scala Maven Plugin supports running as a Zinc client. This can be enabled alongside the incremental recompilation configuration option by setting <code>useZincServer</code> to <code>true</code>.</p>

<p>Let’s look at the same example compiles as above, a clean compile, a change at one of the leaves of the source tree, and a fundamental change, but using a Zinc server. First, we need to start Zinc:</p>

<div class="CodeRay">
  <div class="code"><pre>% zinc -start</pre></div>
</div>


<p>Now a full clean compile:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn clean test-compile

[INFO] akka ................ SUCCESS [1.094s]
[INFO] akka-actor .......... SUCCESS [47.747s]
[INFO] akka-testkit ........ SUCCESS [12.196s]
[INFO] akka-actor-tests .... SUCCESS [48.081s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 1:49.261s</pre></div>
</div>


<p>This is already faster than the earlier clean compiles, with or without incremental compilation, as the same Zinc compiler is reused across the four compile runs.</p>

<p>This will get faster again as the JVM warms up. Let’s try five more full clean compiles and then see what we have:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn clean test-compile

[INFO] akka ................ SUCCESS [1.443s]
[INFO] akka-actor .......... SUCCESS [13.199s]
[INFO] akka-testkit ........ SUCCESS [6.268s]
[INFO] akka-actor-tests .... SUCCESS [33.751s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 54.890s</pre></div>
</div>


<p>Nice! This is almost a third of the time compared to the full clean compile with a cold incremental compiler. The warm incremental compiler, after a handful of compiles, knocks 60% off the time of the baseline clean compile.</p>

<p>Let’s try the change to one of the tests, ActorRefSpec.scala:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn test-compile

[INFO] Compiling 1 Scala source to akka-actor-tests/target/test-classes...

[INFO] akka ................ SUCCESS [1.044s]
[INFO] akka-actor .......... SUCCESS [0.781s]
[INFO] akka-testkit ........ SUCCESS [0.223s]
[INFO] akka-actor-tests .... SUCCESS [2.910s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 5.096s</pre></div>
</div>


<p>The total time is a third of the cold compile time. The akka-actor-tests module which contains the changed file is compiled in 2.9 seconds, compared with 13.6 seconds. Four times faster.</p>

<p>And the change to the Actor trait, triggering widespread recompilation:</p>

<div class="CodeRay">
  <div class="code"><pre>% mvn test-compile

[INFO] Compiling 1 Scala source to akka-actor/target/classes...
[INFO] Compiling 48 Scala sources and 4 Java sources to akka-actor/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/classes...
[INFO] Compiling 5 Scala sources to akka-testkit/target/test-classes...
[INFO] Compiling 65 Scala sources and 3 Java sources to akka-actor-tests/target/test-classes...
[INFO] Compiling 46 Scala sources and 4 Java sources to akka-actor-tests/target/test-classes...

[INFO] akka ................ SUCCESS [1.025s]
[INFO] akka-actor .......... SUCCESS [10.854s]
[INFO] akka-testkit ........ SUCCESS [8.779s]
[INFO] akka-actor-tests .... SUCCESS [57.491s]
[INFO] ------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------
[INFO] Total time: 1:18.289s</pre></div>
</div>


<p>Using the Zinc server gives us sbt-like compilation from Maven, and a warm incremental compiler can compile code twice as fast, or even faster. Incremental compilation can also be used with the continuous compile (scala:cc) goal in the Scala Maven Plugin. For more information about using incremental compilation in Maven see the <a href="http://davidb.github.com/scala-maven-plugin/index.html">documentation for Scala Maven Plugin</a>.</p>

<h2>Pants</h2>

<p><a href="https://github.com/twitter/commons/tree/master/src/python/twitter/pants">Pants</a> is a build tool developed at <a href="https://twitter.com">Twitter</a> and is modeled after <a href="http://google-engtools.blogspot.com/2011/08/build-in-cloud-how-build-system-works.html">Google&rsquo;s build system</a>. It&rsquo;s intended to support selective compilation within large, heterogeneous codebases with an explicitly-modeled DAG structure. Pants is used internally at Twitter and at <a href="https://foursquare.com">foursquare</a>, and is also used to build the <a href="https://github.com/twitter/commons">twitter/commons</a> open-source project.</p>

<p>Until recently, Pants invoked the scala compiler directly. If any file in a DAG node changed, the entire node and anything depending on it had to be rebuilt. Benjy Weinberger from foursquare is currently working on integrating Zinc with Pants, so that it too can enjoy the benefits of incremental Scala compilation:</p>

<blockquote><p>The tricky part of this integration is the fact that Pants contains
its own node-level invalidation logic. Pants also has options to both
‘flatten’ and ‘unflatten’ the build.</p>

<p>The advantage of the non-flat mode is that the compiler only has to
bite off small chunks at a time. In small codebases this is slower
than building everything in a single pass, because you incur the
compiler startup overhead multiple times (although Zinc&rsquo;s cached
compilers can help with this). However in large codebases it can be
impractical to build everything in a single pass. Building a couple of
thousand Scala source files may require 8GB or more of RAM and can
take 20-30 minutes. Breaking the codebase down into a modular DAG, and
applying Zinc&rsquo;s incremental compilation to each node, supports
effective builds and fast rebuilds even in a large codebase.</p>

<p>The combination of Pants and Zinc will allow companies like Twitter
and foursquare to work productively in a single shared, large-scale
codebase, even if any individual developer only builds a small subset
of the codebase.</p></blockquote>

<h2>Summary</h2>

<p>We’ve separated out sbt’s incremental compiler and made it available both stand-alone and ready for integration with other build tools. Using Zinc as a build daemon, similar to sbt’s interactive shell, can dramatically improve build times. Zinc has already been integrated with the Scala Maven Plugin, and we’re expecting incremental compilation to find its way into other build tools for Scala. Zinc is also being integrated with Pants, a build tool for large-scale codebases.</p>

<p>Enjoy!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 08 Aug 2012 12:01:00 UTC</pubDate>
                <title>Introducing Slick</title>
                <link>http://typesafe.com/blog/introducing-slick</link>
                <guid>http://blog.typesafe.com/introducing-slick</guid> 
                <description>
                    <![CDATA[<p>Today we&rsquo;re excited to <a href="http://www.typesafe.com/company/news/24281" title="Typesafe Announces Slick Database Connector">announce</a> the release of the <a href="http://slick.typesafe.com" target="_blank">Scala Language Integrated Connection Kit</a> (Slick).&nbsp; Slick will also be incorporated into future releases of the <a href="http://www.typesafe.com/stack" target="_blank">Typesafe Stack</a>, alongside <a href="http://www.typesafe.com/technology/scala" target="_blank">Scala</a>, the <a href="http://www.typesafe.com/technology/play" target="_blank">Play</a> web framework, and the <a href="http://www.typesafe.com/technology/akka" target="_blank">Akka</a> runtime.</p>
<p>Slick provides a framework for Scala programmers to easily connect to databases (both relational and NoSQL) and other data sources. Slick makes it even easier for developers to build next-generation distributed applications using Scala, and points to the maturation of the ecosystem around Scala. Making Scala easily interoperable with these databases is a testament to the growth in interest from developers of all backgrounds to leverage Scala for the next wave of applications that need to be highly scalable.&nbsp;&nbsp;</p>
<p><a href="http://ovum.com/2012/05/10/typesafe-roadmap-indicates-the-maturing-of-scala/" target="_blank">According to&nbsp;Michael Azoff</a>, principal analyst with Ovum: "Slick, the database connector, will enhance the capabilities of Scala in multiple dimensions including web, parallel scalability across multiple cores, and horizontal scalability across multiple machines."&nbsp;</p>
<p>With more modern, efficient database query and access capabilities, Slick delivers a powerful database integration framework for Scala programmers.&nbsp;</p>
<p>Key features of the Slick database connector include:</p>
<ul>
<li>Work with stored data as if they are normal Scala collection</li>
<li>Retain full control over when a database access happens and which data is transferred</li>
<li>Write your database queries in Scala instead of SQL, thus profiting from the static checking, compile-time safety and compositionality of Scala. </li>
</ul>
<p>Slick features an extensible query compiler that can generate code for different backends. The following database systems are initially directly supported for type-safe queries:</p>
<ul>
<li>Derby/JavaDB</li>
<li>H2</li>
<li>HSQLDB/HyperSQL</li>
<li>Microsoft Access</li>
<li>Microsoft SQL Server</li>
<li>MySQL</li>
<li>PostgreSQL</li>
<li>SQLite</li>
</ul>
<p>Accessing other database systems is possible, with a reduced feature set. &nbsp;Slick features an extensible query compiler that can generate code for different backends, and we look forward to additing support for more data sources in the future.</p>
<p>To learn more about today's announcement, please visit the project web site at: <a href="http://slick.typesafe.com" target="_blank">slick.typesafe.com</a></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 25 Jul 2012 05:00:00 UTC</pubDate>
                <title>What&apos;s New in Typesafe Console 1.1-M4</title>
                <link>http://typesafe.com/blog/typesafe-console-11-m4</link>
                <guid>http://blog.typesafe.com/typesafe-console-11-m4</guid> 
                <description>
                    <![CDATA[<p>We are glad to announce version 1.1 milestone 4 of the <a href="http://typesafe.com/products/console">Typesafe Console</a>,&nbsp;an enterprise-grade dashboard for monitoring your application built on the <a href="http://typesafe.com/stack">Typesafe Stack</a>&nbsp;(including Scala, Akka event-driven middleware, and the Play web framework).</p>
<p>You can try out the new version at <a href="http://console-demo.typesafe.com">http://console-demo.typesafe.com</a>. Please <a href="http://typesafe.com/company/contact">contact us</a> if you are interested in an evaluation account. We appreciate your feedback so that we can continue to evolve the product in the right direction. In this blog post we will highlight a few of the new features.</p>
<p><strong>Time Periods</strong></p>
<p>It is now possible to specify the time period as either rolling or historical. This is done in the search field or by selecting predefined filters (see images below). The specified time period affects all time series graphs and aggregated statistics. (Please note that the <a href="http://console-demo.typesafe.com">demo</a> only keeps 20 minutes of data which means that any searches outside of the last 20 minutes will not return any result.)</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-07-25/jtgvnyFwkkgDnbtrHnFAebgeFishxiInGuopswthidFwCCdgtwgiHaBafucv/image01.png.scaled1000.png"><img alt="Image01" height="53" src="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-07-25/jtgvnyFwkkgDnbtrHnFAebgeFishxiInGuopswthidFwCCdgtwgiHaBafucv/image01.png.scaled500.png" width="500" /></a>
</div>
<div class='p_embed p_image_embed'>
<a href="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-07-25/prwGGiipGjyDBmguiIvupwjjqCCCzBcclaDJxAtDCFvAHtdzcciCdzHDicjI/image05.png.scaled1000.png"><img alt="Image05" height="55" src="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2012-07-25/prwGGiipGjyDBmguiIvupwjjqCCCzBcclaDJxAtDCFvAHtdzcciCdzHDicjI/image05.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><strong>Graphs and Infoboxes</strong></p>
<p>The expanded view of a scope now contains three graphs and infoboxes respectively (see image below). All views have the same layout. Animation, key metrics and throughput in the collapsed view and 3 graphs plus 3 infoboxes in the expanded view.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile7.posterous.com/getfile/files.posterous.com/temp-2012-07-25/cwldbolutDmdyqxmfbomIwwyfsomJdxrrniqywosbzBhqyvgHfEdCflteCDb/image03.png.scaled1000.png"><img alt="Image03" height="420" src="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-07-25/cwldbolutDmdyqxmfbomIwwyfsomJdxrrniqywosbzBhqyvgHfEdCflteCDb/image03.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>When you mouse-over any graph/infobox icons will appear in the upper right corner of that component (see image below). &nbsp;</p>
<p><div class='p_embed p_image_embed'>
<img alt="Image02" height="130" src="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2012-07-25/efuqbqpvFAkAoiEuvgdGcwxucggmaIbhEhJgvFsunfhhgiDejiErvHxCfBiD/image02.png.scaled500.png" width="173" />
</div>
</p>
<p>Clicking on the upside down pyramid icon will either open up a menu from which you can select a graph/infobox (see image below). Selecting an item will change the underlying graph/infobox of that component.</p>
<p><div class='p_embed p_image_embed'>
<img alt="Image08" height="344" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-07-25/gdInfzigFcrCtFkAovmekCGAEvoIHrDqmIespClauBzbIjDncHjyIAEhwbza/image08.png.scaled500.png" width="357" />
</div>
</p>
<p>Clicking on the box icon will open up the underlying graph in a zoomed mode.&nbsp;</p>
<p>&nbsp;</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-07-25/ehkuwDdJfofDrnbykpEEBeuJaoxHsjpfEohkcrnbvBDtqroiaybjqFwoHHni/image00.png.scaled1000.png"><img alt="Image00" height="343" src="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-07-25/ehkuwDdJfofDrnbykpEEBeuJaoxHsjpfEohkcrnbvBDtqroiaybjqFwoHHni/image00.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>&nbsp;</p>
<p><strong>Latency Scatter and Spans</strong></p>
<p>We have also added a latency scatter plot which is one of the most useful new graphs.</p>
<p><div class='p_embed p_image_embed'>
<img alt="Image06" height="136" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-07-25/sfJJgjehvzgpgylJFagBsCIJmFCnbguodutuBBbvutkCFJiJFHDxexflcHtn/image06.png.scaled500.png" width="180" />
</div>
</p>
<p>Each dot represents a span duration. The measured duration depends on selected span type. Default span type is "message", which is the time measured from when the message was sent until the message processing has completed in the receiving actor. You may define marker spans that start and end in any location in the message trace, i.e. it may span over several actors. Another built in span type is "receive", which is the message processing time inside the actor, i.e. the receive function. You specify the span type in the search field.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-07-25/fshCoykBAJlIvBJyfDFtuHxBsdvtlAovfmCkvxemvwnfzhIaeFgDClbrBdzD/image04.png.scaled1000.png"><img alt="Image04" height="51" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-07-25/fshCoykBAJlIvBJyfDFtuHxBsdvtlAovfmCkvxemvwnfzhIaeFgDClbrBdzD/image04.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>Aggregated statistics is now also be grouped by actor system, i.e. you can monitor several actor systems running in the same or separate JVMs.</p>
<p><strong>Deviation View</strong></p>
<p>It's also worth mentioning that the deviation view has been improved.&nbsp;</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-07-25/njxGftHmGxCvIfeHtsIeDdoigtushanmyndzuklEJitgsscebsBxbHfvsImm/image07.png.scaled1000.png"><img alt="Image07" height="424" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-07-25/njxGftHmGxCvIfeHtsIeDdoigtushanmyndzuklEJitgsscebsBxbHfvsImm/image07.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>All deviations are sorted on time with the most current first in the list.</p>
<p><strong>More information</strong></p>
<p>Please see the <a href="http://resources.typesafe.com/docs/console">full documentation</a> of the Typesafe Console for more information.</p>
<p>We invite you to take the <a href="http://console-demo.typesafe.com">online demo</a> of the Typesafe Console for a test drive.</p>
<p>Finally, for more information on pricing and arranging an evaluation of the Typesafe Console, as part of the Typesafe Subscription, please <a href="http://typesafe.com/company/contact">contact Typesafe</a>.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 17 Jul 2012 01:35:00 UTC</pubDate>
                <title>Free Online Scala Course with Martin Odersky</title>
                <link>http://typesafe.com/blog/free-odersky-online-scala-course</link>
                <guid>http://blog.typesafe.com/free-odersky-online-scala-course</guid> 
                <description>
                    <![CDATA[<p>Starting this September, Typesafe co-founder and Scala Creator Martin Odersky will be teaching a free massively open online course (MOOC) entitled <a href="https://www.coursera.org/course/progfun">Functional Programming Principles in Scala</a>.</p>
<p>This course offers the opportunity to learn online directly from the creator of Scala!</p>
<p>You'll discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.&nbsp;</p>
<p>The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. It will be complemented by a series of assignments, most of which are also programming projects.</p>
<p>The first session is 7 weeks long and begins September 18, 2012.&nbsp;The class will consist of lecture videos, which are between 6 and 15 minutes in length. These contain integrated quiz questions per video. There will also be standalone homeworks that are not part of video lectures, and a final exam. The expected workload is 5-7 hours/week.</p>
<p>Students who successfully complete the class will receive a certificate signed by the instructor.</p>
<p>View the full syllabus and&nbsp;<a href="https://www.coursera.org/course/progfun">register to participate for free today&nbsp;at Coursera</a>!</p>
<p>And if you are planning to register, start preparing today with a&nbsp;<a href="http://typesafe.com/resources/scala-for-the-impatient">free sample of the Scala for the Impatient e-book</a> (one of the suggested course texts) from Typesafe.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 25 Jun 2012 05:00:00 UTC</pubDate>
                <title>Juniper Networks Selects Typesafe Stack for Scala and Akka</title>
                <link>http://typesafe.com/blog/juniper-networks-selects-typesafe-stack-for-s</link>
                <guid>http://blog.typesafe.com/juniper-networks-selects-typesafe-stack-for-s</guid> 
                <description>
                    <![CDATA[<p>Today we <a href="http://typesafe.com/company/news/23506" title="Juniper Networks Selects Scala and Akka from Typesafe">announced that Juniper Networks has selected the Typesafe Stack</a>, including both the <a href="http://typesafe.com/technology/scala" title="Scala on Typesafe">Scala language</a> and <a href="http://typesafe.com/technology/akka" title="Akka on Typesafe">Akka middleware</a>, for use in future Juniper software technologies. The agreement includes a multi-year agreement for software licenses (including the <a href="http://typesafe.com/products/console" title="Typesafe Console">Typesafe Console</a>), support, maintenance, training, and consulting.</p>
<p>We think this commitment by Juniper is an exciting validation for Typesafe, and the broader Akka and Scala communities.</p>
<p>Juniper chose the Typesafe Stack for building next-generation networking products because it allows them to:</p>
<ul>
<li>Efficiently utilize today and tomorrow's multi-core hardware</li>
<li>Boost the productivity of their software developers </li>
<li>Create highly available distributed software based on Akka      middleware</li>
</ul>
<p>Will Eatherton, vice president of Engineering, Core Routing Business Unit at Juniper Networks, comments:</p>
<p style="padding-left: 30px;">"The Typesafe Stack, including the Scala programming language and Akka middleware, represents a fresh approach to software development. By leveraging the Typesafe Stack, Juniper developers will be able to quickly and reliably create distributed software based on Akka middleware that can scale to take advantage of modern multi-core processors."</p>
<p>It&rsquo;s been a busy few months at Typesafe. In addition to this Juniper announcement, we recently announced the <a href="http://typesafe.com/company/news/23476" title="Mark Brewer Joins Typesafe as CEO">Mark Brewer has joined Typesafe as CEO</a>, coming from VMware/SpringSource; Typesafe was <a href="http://typesafe.com/company/news/18090" title="Typesafe Named to Gartner's Cool Vendors in Application Development 2012">named to Gartner&rsquo;s Cool Vendors in Application Development 2012</a>; we hosted a <a href="http://typesafe.com/company/news/18062" title="Typesafe Sponsors Scala Days 2012 conference">sold-out Scala Days 2012 conference</a> in London; and we <a href="http://blog.typesafe.com/introducing-typesafe-stack-20" title="Introducing Typesafe Stack 2.0">released the Typesafe Stack 2.0</a> featuring Akka 2.0 and Play web framework 2.0.</p>
<p>For more details on the Juniper news, visit <a href="http://typesafe.com/company/news/23506" title="Juniper Networks Selects Scala and Akka from Typesafe">the press release in our news section</a>. To stay informed on Typesafe news, <a href="https://twitter.com/#!/typesafe" title="Typesafe on Twitter">follow us on Twitter</a>&nbsp;or <a href="http://typesafe.com/" title="Typesafe Newsletter">sign up for our email newsletter</a>.</p>
<p>It&rsquo;s been a great experience working with the talented team at Juniper Networks so far. We&rsquo;re looking forward to continuing this exciting collaboration.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 20 Jun 2012 03:00:00 UTC</pubDate>
                <title>Mark Brewer Joins Typesafe as CEO</title>
                <link>http://typesafe.com/blog/mark-brewer-joins-typesafe-as-ceo</link>
                <guid>http://blog.typesafe.com/mark-brewer-joins-typesafe-as-ceo</guid> 
                <description>
                    <![CDATA[<p>We're excited to announce today that <a href="http://typesafe.com/company/news/23476" title="Typesafe Appoints Mark Brewer as Chief Executive Officer">Mark Brewer has joined Typesafe as our CEO</a>.</p>
<p>Mark joins us from VMware, where he&nbsp;served as VP of Business Operations for VMware&rsquo;s Cloud Application Platform. At VMware, Mark was responsible for a portfolio of platform technologies including SpringSource, RabbitMQ, Gemstone and WaveMaker.</p>
<p>Mark arrived at VMware through the acquisition of SpringSource, where he was&nbsp;VP and GM of Enterprise Services. Mark played a key role in the definition and delivery of SpringSource's enterprise subscription offerings. He joined SpringSource when it acquired Covalent, provider of commercial services for Apache technologies including Tomcat, where he was CEO.</p>
<p>It's pretty evident that Mark's leadership credentials and domain expertise are a great fit for Typesafe. But from the first time we met him, we knew that Mark shared an even more important trait with the rest of the Typesafe team: a passion to fundamentally change the way the world builds software.</p>
<p>Welcome, Mark. We look forward to scaling Typesafe with you.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 15 Jun 2012 06:48:00 UTC</pubDate>
                <title>Scalathon 2012 Conference and Training Discount</title>
                <link>http://typesafe.com/blog/scalathon-2012-conference-and-training-discou</link>
                <guid>http://blog.typesafe.com/scalathon-2012-conference-and-training-discou</guid> 
                <description>
                    <![CDATA[<p>
<p>Preparation for&nbsp;<a href="http://scalathon.org/2012/" target="_blank">Scalathon 2012</a>, July 27-29&nbsp;in Philadelphia,&nbsp;is well underway. In addition to the coding and social attractions of last year's successful event, this year's Scalathon provides opportunities for Scala training.</p>
<p><a href="http://typesafe.com/" target="_blank">Typesafe</a>&nbsp;and our partner&nbsp;<a href="http://www.chariotsolutions.com/" target="_blank">Chariot Solutions</a>&nbsp;are offering three Scala training classes in conjunction with Scalathon. Even better, Scalathon attendees are eligible for substantial discounts on the training fees.</p>
<p>The week prior to Scalathon, Chariot Solutions is offering the&nbsp;Fast Track to Scala&nbsp;course, probably the best way to dive head-first into Scala.</p>
<p>The week&nbsp;of&nbsp;Scalathon, Typesafe is offering&nbsp;Fast Track to Play&nbsp;and&nbsp;Fast Track to Akka, two of the exciting and powerful components of the&nbsp;<a href="http://typesafe.com/stack" target="_blank">Typesafe Stack</a>.</p>
<p>With the discounts, these courses are a terrific value. If you've been waiting for a good opportunity to pester your employer to send you to Scala training, that opportunity is here. See the&nbsp;<a href="http://scalathon.org/2012/training.html" target="_blank">Scalathon Training</a>&nbsp;page for complete details on the training offerings, including money-saving discounts codes.</p>
<p>And even if you can't make the training, please join us at Scalathon 2012. Last year was fun&nbsp;and&nbsp;informative. We're hoping this year will be even better.</p>
</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 11 Jun 2012 03:41:00 UTC</pubDate>
                <title>Free PDF: Scala in Depth</title>
                <link>http://typesafe.com/blog/free-pdf-scala-in-depth</link>
                <guid>http://blog.typesafe.com/free-pdf-scala-in-depth</guid> 
                <description>
                    <![CDATA[<p>We had a great response to our recent (<a href="http://typesafe.com/resources/scala-for-the-impatient">and ongoing</a>) promotion offering a free sample of Cay Horstmann's book Scala for the Impatient. &nbsp;So, we're glad to follow up with another free book sample promotion.</p>
<p>Starting today, <a href="http://typesafe.com/resources/scala-in-depth">Typesafe is offering a free preview of Josh Suereth's new work, Scala in Depth</a>, when you sign up for the Typesafe e-mail newsletter.</p>
<p>Scala in Depth is a unique new book designed to help you integrate Scala effectively into your development process. By presenting the emerging best practices and designs from the Scala community, it guides you through dozens of powerful techniques example by example. &nbsp;There's little heavy-handed theory here&mdash;just dozens of crisp, practical techniques for coding in Scala.&nbsp;</p>
<p>Topics in the full book include:</p>
<ul>
<li>Concise, expressive, and readable code style</li>
<li>Integrating Scala into your existing Java projects</li>
<li>Scala's collections API</li>
<li>How to use actors for concurrent programming</li>
<li>Mastering the Scala type system Scala's OO features&mdash;type member inheritance, multiple inheritance, and composition</li>
<li>Functional concepts and patterns&mdash;immutability, applicative functors, and monads</li>
</ul>
<p>The free sample PDF available from Typesafe includes a subset of the book, including:</p>
<ul>
<li>Chapter 1: Scala - A blended language</li>
<li>Chapter 2: The core rules</li>
<li>Chapter 9: Actors</li>
</ul>
<p>As an added bonus, when you sign up for the Typesafe mailing list and download the book sample, we'll send you a discount code for 38% off the full book in print and eBook formats at <a href="http://manning.com/suereth" title="Manning">manning.com</a>.</p>
<p>We're proud to have Josh as part of the Typesafe team, and glad to offer a sample of his exciting new work. Download your free copy from Typesafe <a href="http://typesafe.com/resources/scala-in-depth">here</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 31 May 2012 06:56:00 UTC</pubDate>
                <title>Play 2.0 Now Available on Cloud Foundry</title>
                <link>http://typesafe.com/blog/play-20-now-available-on-cloud-foundry</link>
                <guid>http://blog.typesafe.com/play-20-now-available-on-cloud-foundry</guid> 
                <description>
                    <![CDATA[<p>
<p>VMware <a href="http://blog.cloudfoundry.com/2012/05/31/cloud-foundry-now-supports-play/" title="VMware Blog: Cloud Foundry Now Supports Play">announced today that Cloud Foundry now supports Play 2.0</a> as a first-class framework.</p>
<p><a href="http://cloudfoundry.com" title="Cloud Foundry">Cloud Foundry</a> is an open platform-as-a-service, providing a choice of clouds, developer frameworks and application services. Initiated by VMware, with broad industry support, Cloud Foundry makes it faster and easier to build, test, deploy and scale applications. It is an open source project and is available through a variety of private cloud distributions and public cloud instances, including CloudFoundry.com.</p>
<p>Play framework, part of the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a>, is a lightweight, stateless, web-friendly framework for Java and Scala. Developers can leverage this event-driven non-blocking IO architecture to build highly scalable applications. Play 2.0 applications can now be deployed to CloudFoundry.com and take advantage of being a fully supported framework that includes auto-reconfiguration, simplified service connections, and automatic database management.&nbsp;</p>
<p>Cloud Foundry joins <a href="http://blog.heroku.com/archives/2011/8/29/play/" title="Heroku blog: Play Framework on Heroku">Heroku</a>, <a href="http://wiki.cloudbees.com/bin/view/RUN/Playframework" title="Play framework on Cloudbees">Cloudbees</a>, <a href="http://blog.jelastic.com/2012/02/13/play-in-the-cloud/" title="Play Framework on Jelastic">Jelastic</a>, and other platform-as-a-service providers with first class support for Play 2.0. &nbsp;Give it a test drive today!</p>
<p>&nbsp;</p>
</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 25 May 2012 06:00:00 UTC</pubDate>
                <title>Migration Manager for Scala is now Open Source</title>
                <link>http://typesafe.com/blog/migration-manager-for-scala-is-now-open-sourc</link>
                <guid>http://blog.typesafe.com/migration-manager-for-scala-is-now-open-sourc</guid> 
                <description>
                    <![CDATA[<p>Today, <a href="http://typesafe.com" title="Typesafe">Typesafe</a> is open sourcing the code behind <a href="http://typesafe.com/technology/migration-manager" title="Migration Manager">Migration Manager</a>, a binary compatibility reporting tool for Scala.</p>
<p>Migration Manager gives Scala project owners the ability to test their projects for binary compatibility with prior versions. Migration Manager has already been used to ensure binary compatibility for the 2.9.x series of Scala releases, and we look forward to seeing other projects in the Scala ecosystem adopt it soon.</p>
<p>While Migration Manager has been <a href="http://typesafe.com/technology/migration-manager" title="Migration Manager">available for download free of charge</a> since its inception, Typesafe has now made the source code available under the Apache License 2.0 <a href="https://github.com/typesafehub/migration-manager">in this GitHub repository</a>.  Please check it out and contribute!</p>
<p>Migration Manager provides the ability to detect binary incompatible changes between two versions of the same project.  This can be done in one of three ways:</p>
<ul>
<li>A rich user interface</li>
<li>A command line tool</li>
<li>An SBT (<a href="http://typesafe.com/technology/sbt" title="Simple Build Tool">Simple Build Tool</a>) plugin</li>
</ul>
<p><strong>Rich User Interface</strong></p>
<p>The rich user interface is the same interface that has been available for the life of the tool.  You can find a more detailed getting started guide at <a href="http://typesafe.com/resources/getting-started/tutorials/migration-manager-step-by-step-guide.html">Migration Manager - Step by Step guide</a>.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-05-25/ttuDqpvawCyEdBaxcJbarJvEvvIHBHrpJbmetpxFhxschCdJwbekHaneIIAr/mima-free.png.scaled1000.png"><img alt="Mima-free" height="388" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-05-25/ttuDqpvawCyEdBaxcJbarJvEvvIHBHrpJbmetpxFhxschCdJwbekHaneIIAr/mima-free.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><strong>Command Line</strong></p>
<p>With the open-source release of the Migration Manager, a command line interface has been added.  You can <a href="http://typesafe.com/technology/migration-manager" title="Migration Manager">download the standalone jar here</a>.</p>
<p>Here&rsquo;s how to invoke it:</p>
<div class="CodeRay">
  <div class="code"><pre>java -jar path/to/mima-reporter-assembly-0.1.3.jar \
  --prev previous.jar \ 
  --curr current.jar
Found 0 binary incompatibiities
===============================</pre></div>
</div>

<p><strong>SBT Plugin</strong></p>
<p>The Migration Manager also provides an SBT plugin for usage within SBT.</p>
<p>To use it, add the following lines to your <code>project/plugins.sbt</code> file:</p>
<div class="CodeRay">
  <div class="code"><pre>resolvers += Resolver.url(&quot;sbt-plugin-releases&quot;, 
  new URL(
&quot;http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/&quot;))(Resolver.ivyStylePatterns)

addSbtPlugin(&quot;com.typesafe&quot; % &quot;sbt-mima-plugin&quot; % &quot;0.1.3&quot;)</pre></div>
</div>

<p>And then in your <code>build.sbt</code>, configure the migration manager so that it knows which artifact to use for testing binary compatibility:</p>
<div class="CodeRay">
  <div class="code"><pre>import com.typesafe.tools.mima.plugin.MimaPlugin.{
    mimaDefaultSettings, 
    previousArtifact
  }

mimaDefaultSettings

previousArtifact := Some(&quot;organization&quot; % &quot;artifact&quot; % &quot;1.0&quot;)</pre></div>
</div>

<p>In the above, the <code>previousArtifact</code> setting is used to resolve the previous version of your project, using the resolvers defined in your project, and compare the current class files to the previous version. To run the test, call the <code>mima-report-binary-issues</code> task from the SBT prompt.</p>
<p><strong>Summary</strong></p>
<p>We&rsquo;re excited to make this open source contribution, and we look forward to collaborating with the Scala community to continue to improve Migration Manager.</p>
<p>For downloads and to learn more, please visit the <a href="http://typesafe.com/technology/migration-manager" title="Migration Manager">Migration Manager</a> page on the Typesafe web site.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 23 May 2012 04:00:00 UTC</pubDate>
                <title>Typesafe Stack 2.0.2</title>
                <link>http://typesafe.com/blog/typesafe-stack-202</link>
                <guid>http://blog.typesafe.com/typesafe-stack-202</guid> 
                <description>
                    <![CDATA[<p>We have released Typesafe Stack 2.0.2, a second update to our recently introduced <a href="http://blog.typesafe.com/introducing-typesafe-stack-20" title="Introducing Typesafe Stack 2.0">Typesafe Stack 2.0</a>.</p>
<p>This is a maintenance release with improvements and bug fixes, and includes <a href="http://typesafe.com/technology/akka" title="Akka">Akka</a> middleware 2.0.1, <a href="http://typesafe.com/technology/scala" title="Scala">Scala</a> 2.9.2, and <a href="http://typesafe.com/technology/play" title="Play framework">Play framework</a>&nbsp;2.0.1.</p>
<p>Highlights of this release include:</p>
<ul>
<li>Updated&nbsp;<a href="http://typesafe.com/technology/sbt" title="SBT">SBT</a>&nbsp;to 0.11.3, with support for Scala 2.10 and new default repositories</li>
<li>Updated Giter8 to 0.4.5, with fixes for github authentication issues and support for SBT 0.11.3</li>
</ul>
<p>The update release is available at the <a href="http://typesafe.com/stack/download" title="Typesafe Stack Download">Typesafe Stack download page</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 08 May 2012 03:14:00 UTC</pubDate>
                <title>Typesafe Console 1.1-M2</title>
                <link>http://typesafe.com/blog/typesafe-console-11-m2</link>
                <guid>http://blog.typesafe.com/typesafe-console-11-m2</guid> 
                <description>
                    <![CDATA[<p>We have released the second milestone of the Typesafe Console after the <a href="http://blog.typesafe.com/introducing-typesafe-console">1.0 launch</a>.</p>
<p>The Typesafe Console is a tailor-made tracing and monitoring solution for event-driven Akka actor based systems. The Typesafe Console captures the events that comprise your application&rsquo;s asynchronous processing, links those events into meaningful trace flows across actors and remote nodes, and makes this information actionable to developers and operations staff through a rich web-based user interface.</p>
<p>You can try the new online demo at <a href="http://console-demo.typesafe.com/">http://console-demo.typesafe.com</a>.</p>
<p>The Typesafe Console is part of the commercial <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>. Please <a href="http://typesafe.com/company/contact">contact us</a> if you are interested in an evaluation account. We appreciate your feedback so that we can continue to evolve the product in the right direction.</p>
<p>In this blog post we will highlight a few of the new features.</p>
<p><strong>What's New in 1.1-M2</strong></p>
<p>It is now possible to specify the time period as either rolling or historical. This is done in the search field or by selecting predefined filters. The specified time period affects all time series graphs and aggregated statistics. (Please note that the <a href="http://console-demo.typesafe.com/">demo</a> only keeps 20 minutes of data.)</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-05-08/AcIEtCJulIiHksJcfHttnJsGbFmxvEkhCqxEruwFbuumvhlvFfdfrCdEicje/blog_search.png.scaled1000.png"><img alt="Blog_search" height="53" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-05-08/AcIEtCJulIiHksJcfHttnJsGbFmxvEkhCqxEruwFbuumvhlvFfdfrCdEicje/blog_search.png.scaled500.png" width="500" /></a>
</div>
<div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-05-08/mtokItxfAfAubygzzqCIrlAvmHgthwhJJDyrFIrixtDFHqBybIAplyzGagnm/blog_filter.png.scaled1000.png"><img alt="Blog_filter" height="55" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-05-08/mtokItxfAfAubygzzqCIrlAvmHgthwhJJDyrFIrixtDFHqBybIAplyzGagnm/blog_filter.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>Several graphs and boxes with numerical information have been added to each view. You can pick 3 graphs and 3 info boxes for display in each view. All views have the same layout. Animation, key metrics and throughput in the collapsed view and 3 graphs plus 3 info boxes in the expanded view.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-05-08/iwBqqiGHlazDAJHgkBslvAnIiEkkksyahnbCndEsEyxnglzxvJpxDhkojEJF/blog_graphs.png.scaled1000.png"><img alt="Blog_graphs" height="446" src="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-05-08/iwBqqiGHlazDAJHgkBslvAnIiEkkksyahnbCndEsEyxnglzxvJpxDhkojEJF/blog_graphs.png.scaled500.png" width="500" /></a>
</div>
Click on the small graph icon to the right and select the elements you are interested in.<div class='p_embed p_image_embed'>
<img alt="Console_select_graph" height="377" src="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-05-08/bqnalqrbtpmezFAebFJIDignHgrhaHafiseeEwmixEbwjcGAlnpwxkGBzBxu/console_select_graph.png.scaled500.png" width="435" />
</div>
</p>
<p>Latency scatter plot is one of the most useful new graphs.</p>
<p><div class='p_embed p_image_embed'>
<img alt="Console_latency_scatter" height="136" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-05-08/rFCFdfcyIcGptDDeelxGDeJvhEolrooCGcpnhojuCpgiHCwpDgpeEjonxhip/console_latency_scatter.png.scaled500.png" width="180" />
</div>
</p>
<div>Each dot represents a span duration. The measured duration depends on selected span type. Default span type is "message", which is the time measured from when the message was sent until the message processing has completed in the receiving actor. You may define marker spans that start and end in any location in the message trace, i.e. it may span over several actors. Another built in span type is "receive", which is the message processing time inside the actor, i.e. the receive function. You specify the span type in the search field.<br /><div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-05-08/FCckAecFDCHfsmmjIrqjpczxpgsomlGtFqJmdoemrHAhjejslibmJeBCJybu/blog_search_span.png.scaled1000.png"><img alt="Blog_search_span" height="51" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-05-08/FCckAecFDCHfsmmjIrqjpczxpgsomlGtFqJmdoemrHAhjejslibmJeBCJybu/blog_search_span.png.scaled500.png" width="500" /></a>
</div>
Aggregated statistics is now also be grouped by actor system, i.e. you can monitor several actor systems running in the same or separate JVMs.</div>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-05-08/CwswAmtbgEosJJmkyoprDoxyImtfhdhcykBlfsgukdJbHqqcgJjhtzBkEJwz/console_actor_system.png.scaled1000.png"><img alt="Console_actor_system" height="419" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-05-08/CwswAmtbgEosJJmkyoprDoxyImtfhdhcykBlfsgukdJbHqqcgJjhtzBkEJwz/console_actor_system.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>It's also worth mentioning that the error view has been improved.&nbsp;</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-05-08/xmiodIEpkocqgAbeJBIbishjBqnmqedDJbpAhDDgjofolfcJHBEFfqxqeIEG/console_errors.png.scaled1000.png"><img alt="Console_errors" height="424" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-05-08/xmiodIEpkocqgAbeJBIbishjBqnmqedDJbpAhDDgjofolfcJHBEFfqxqeIEG/console_errors.png.scaled500.png" width="500" /></a>
</div>
</p>
<p>You find links from all views in the Errors info box, as you can see in above screens for the node and actor system. All deviations are sorted on time with the most current first in the list.</p>
<p><strong>More information</strong></p>
<p>Please see the <a href="http://resources.typesafe.com/docs/console">full documentation</a> of the Typesafe Console for more information.<p />We invite you to take the <a href="http://console-demo.typesafe.com/">online demo</a> of the Typeafe Console for a test drive.<p />Finally, for more information on pricing and arranging an evaluation of the Typesafe Console, as part of the Typesafe Subscription, please <a href="http://typesafe.com/company/contact">contact Typesafe</a>.<span style="font-family: Times; font-size: small;"><strong><br /></strong></span></p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 17 Apr 2012 09:00:00 UTC</pubDate>
                <title>Typesafe Stack 2.0.1</title>
                <link>http://typesafe.com/blog/typesafe-stack-201</link>
                <guid>http://blog.typesafe.com/typesafe-stack-201</guid> 
                <description>
                    <![CDATA[<p>We have just released Typesafe Stack 2.0.1, an update to our <a href="http://blog.typesafe.com/introducing-typesafe-stack-20" title="Typesafe Stack 2.0">recently introduced Typesafe Stack 2.0</a>.</p>
<p>This is primarily a maintenance release with improvements and bug fixes, and includes&nbsp;<a href="http://typesafe.com/technology/akka" title="Akka">Akka</a>&nbsp;2.0.1,&nbsp;<a href="http://typesafe.com/technology/scala" title="Scala">Scala</a>&nbsp;2.9.2,&nbsp;Play framework, and an improved installer.</p>
<div>Here are some of the highlights:</div>
<p />
<div><strong>Typesafe Stack Installer</strong></div>
<div>
<ul>
<li>Updated to Giter8 0.4.3.</li>
<li>Added Scala 2.9.2 to base package</li>
<li>Fixed windows bat files for universal install</li>
</ul>
</div>
<div><strong>Akka Middleware</strong></div>
<div>
<ul>
<li>Updated to Akka 2.0.1</li>
<li>Vastly improved ZeroMQ module. Much better performance. Some bugs fixed.</li>
<li>This release is binary compatible with Akka 2.0</li>
<li>Memory and performance enhancements</li>
<li>Improved Java API</li>
<li>Many more minor bug fixes and documentation enhancements</li>
<li>Full list of enhancements <a href="http://www.assembla.com/spaces/akka/milestones/1190093-2-0-1" title="Akka 2.0.1 enhancements">here</a></li>
</ul>
</div>
<div><strong>Scala</strong></div>
<div>
<ul>
<li>Updated to Scala 2.9.2</li>
<li>ScalaDoc improvements.</li>
<li>Fixed bugs in XML, CharArrayReader and InnerClasses</li>
<li>Fixed memory leaks in presentation compiler</li>
</ul>
</div>
<div>Like usual, this update release is available at the <a href="http://typesafe.com/stack/download" title="Typesafe Stack Download">Typesafe Stack download page</a>. Enjoy!</div>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 13 Apr 2012 08:54:00 UTC</pubDate>
                <title>Scala IDE for Eclipse 2.1 Milestone 1</title>
                <link>http://typesafe.com/blog/scala-ide-for-eclipse-21-preview</link>
                <guid>http://blog.typesafe.com/scala-ide-for-eclipse-21-preview</guid> 
                <description>
                    <![CDATA[<p>Today we released an early preview of the Scala IDE for Eclipse v2.1! While the goal of v2.0 was to provide a reliable environment for your Scala coding, with v2.1 we want to bring your Scala development experience to a whole new level.</p>
<p>In this milestone there are a whole lot of new features for you to try out:&nbsp;implicit highlight,&nbsp;move refactoring, a Scala debugger&nbsp;and&nbsp;semantic highlight&nbsp;are some of the most exciting ones. If you are like us, once you start using them you will no longer be able go back. They are simply too addictive!</p>
<p>Let&rsquo;s have a quick round at the new available features.</p>
<p><strong>Implicit Highlight</strong></p>
<p>Implicits are a powerful Scala construct, but it is often hard to guess when they are applied. With implicit highlight you get immediate visual feedback in the editor and, by pressing Cmd/Ctrl+1, you can turn an implicit into an explicit call.&nbsp;<a href="http://scala-ide.org/docs/helium/features/implicit-highlighting/index.html" target="_blank">Read more&hellip;</a></p>
<p>Mantra: de-obfuscate code!</p>
<p><strong>Move Refactoring</strong></p>
<p>There is a new refactoring available in your toolbox. Move refactoring will let you move a source file between packages or extract a class/object/trait definition (from a file with multiple definitions) and move it to a new location. And, of course, it will make sure to keep your imports sane.&nbsp;<a href="http://scala-ide.org/docs/helium/features/moverefactoring.html" target="_blank">Read more&hellip;</a></p>
<p>Forget copy/paste!</p>
<p><strong>Scala Debugger</strong></p>
<p>You have been asking for better debugging support, we have been listening.</p>
<p>A few weeks ago we started to work on a full-fledged Scala Debugger and today you can have an early look at what is going to offer. As of now, you can already step through closures and have a Scala-aware display of debugging information.&nbsp;<a href="http://scala-ide.org/docs/helium/features/scaladebugger/index.html" target="_blank">Read more&hellip;</a></p>
<p>Profit.</p>
<p><strong>Semantic Highlight</strong></p>
<p>Semantic highlight colors identifiers based on their meaning, which goes a long way into improving readability. All the contextual information about identifiers are available right at the usage site, which means you no longer need to jump to the declaration to tell what kind of Scala element you are looking at.&nbsp;<a href="http://scala-ide.org/docs/helium/features/semantic-highlighting/index.html" target="_blank">Read more&hellip;</a></p>
<p>Embrace semantic highlight and say &ldquo;au revoir&rdquo; to the old habit!</p>
<p><strong>A glance at the future</strong></p>
<p>While we are really excited about this milestone, we are already working on the next &ldquo;big things&rdquo; planned for 2.1. One important addition is the creation of an API to ease the development of plugins on top of the Scala IDE. We are confident that this will incentivize developers, and hopefully we will soon have an exciting plugins&rsquo; ecosystem.</p>
<p>Have a look at the&nbsp;<a href="http://scala-ide.org/docs/dev/roadmap.html" target="_blank">Roadmap</a>&nbsp;and see what is planned next.</p>
<p><strong>Install it now!</strong></p>
<p><a href="http://scala-ide.org/download/milestone.html" target="_blank">Follow this link and grab the update-site!</a></p>
<p>This milestone is available only with&nbsp;<a href="http://www.scala-lang.org/" target="_blank">Scala 2.9</a>&nbsp;and it works with&nbsp;<a href="http://www.eclipse.org/downloads/packages/release/indigo/sr2" target="_blank">Eclipse 3.7 (Indigo)</a>. We developed and tested it using Java 6, but Java 7 can be used&nbsp;<a href="http://scala-ide.org/blog/java-7.html" target="_blank">with some caveats</a>.</p>
<p>We hope you will enjoy using it and, please, let us know what you think. This is the perfect time to help us with ideas and improvement suggestions, or just contribute them.</p>
<p><strong>Thanks</strong></p>
<p>We would like to take the opportunity to thank all contributors for the amazing work they have done to make this milestone possible. Special thanks go to David Bernard, Luc Bourlier, Mirco Dotta, Iulian Dragos, Jeremy Heiner, Dan Kilman, Heather Miller, Jin Mingjian, Eric Molitor, Martin Odersky, Hubert Plociniczak, Matt Russell and Mirko Stocker.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 13 Mar 2012 05:02:00 UTC</pubDate>
                <title>Introducing Typesafe Stack 2.0</title>
                <link>http://typesafe.com/blog/introducing-typesafe-stack-20</link>
                <guid>http://blog.typesafe.com/introducing-typesafe-stack-20</guid> 
                <description>
                    <![CDATA[<p>Today is a big day for Typesafe, as we <a href="http://typesafe.com/company/news/17512" title="Typesafe Releases Typesafe Stack 2.0">announce</a> the availability of <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a> 2.0, including Play 2.0 and Akka 2.0, and the availability of the <a href="http://typesafe.com/products/console" title="Typesafe Console">Typesafe Console</a> as part of the commercial <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>.<p />The Typesafe Stack is a comprehensive platform for building applications in Java and Scala that can scale to the largest workloads in cloud computing and virtualized datacenter environments. The Typesafe Stack includes the <a href="http://typesafe.com/technology/scala" title="Scala">Scala</a> programming language, <a href="http://typesafe.com/technology/akka" title="Akka">Akka</a> event-driven middleware, and now the <a href="http://typesafe.com/technology/play" title="Play">Play</a> web framework, along with a robust suite of development tools.</p>
<p>Since we have a lot to talk about today, we&rsquo;ve broken the news up into a few different blog posts. Here, we provide the highlights with links for you to dig deeper.<p />We&rsquo;ve also posted a <a href="http://typesafe.com/resources/typesafe-stack-whitepaper" title="Typesafe Stack Whitepaper">new whitepaper</a>&nbsp;on our web site that goes into more depth on the Typesafe Stack 2.0, and why it's relevant to today's professional software developers.<p /><strong>Play 2.0</strong><p />We announced in November that Play framework, the highly productive web framework for Scala and Java, would become part of the Typesafe Stack. Now, just a few months later, we are happy to announce that Play 2.0 has arrived and is part of the open source Typesafe Stack 2.0 and the commercial Typesafe Subscription.<p />Play framework 2.0 continues the emphasis on web developer productivity that has always separated Play from the pack. Version 2.0 takes the framework to a new level, with a stable and scalable foundation based on Scala and Akka, and a reactive model based on event-driven, non-blocking IO. All with native support for both Java and Scala applications.<p />Learn more about Play 2.0 in our blog post: <a href="http://blog.typesafe.com/introducing-play-20" title="Introducing Play 2.0">Introducing Play 2.0</a><p /><strong>Akka 2.0</strong><p />Just last week we announced the open source release of Akka 2.0, the event-driven middleware framework for building high performance, reliable, and distributed applications in Java and Scala. Now, it&rsquo;s available as part of the Typesafe Stack and the commercial Typesafe Subscription as well.<p /> Akka 2.0 simplifies the creation of distributed applications that span many nodes in a cloud computing or virtualized datacenter environment, with new features including location transparency, configuration-based deployment, supervision and life-cycle monitoring, and dramatic performance and scalability improvements.<p />Learn more about Akka 2.0 in our blog post: <a href="http://blog.typesafe.com/introducing-akka-20-2756" title="Introducing Akka 2.0">Introducing Akka 2.0</a><p /><strong>Typesafe Console</strong><p />Monitoring distributed event-driven systems at scale can be a challenge. That&rsquo;s why we&rsquo;re excited to introduce the Typesafe Console, an enterprise-grade dashboard for monitoring applications built on the Typesafe Stack. The Typesafe Console is exclusively available to Typesafe Subscription customers.<p />The Typesafe Console provides insight into usage trends and performance characteristics of event-driven Akka actor based systems. It enables your staff to optimize system performance and detect bottlenecks before they become a problem.<p />Learn more about the Typesafe Console in our blog post: <a href="http://blog.typesafe.com/introducing-typesafe-console" title="Introducing Typesafe Console">Introducing Typesafe Console</a><br /><strong></strong></p>
<p><strong>Scala IDE for Eclipse 2.0</strong></p>
<p>Great platforms require great developer tools. &nbsp;That's why we're delighted to have recently released the Scala IDE for Eclipse 2.0, which&nbsp;provides advanced editing and debugging support for the development of pure Scala and mixed Scala-Java applications.</p>
<p>Learn more about the IDE in our blog post: <a href="http://blog.typesafe.com/scala-ide-for-eclipse-20" title="Scala IDE for Eclipse 2.0">Scala IDE for Eclipse 2.0</a></p>
<p><strong>Typesafe Subscription and Services</strong><p />The Typesafe Subscription provides commercial support, maintenance, and deployment tools for the open source Typesafe Stack. With this release, the Typesafe Subscription covers the Play web framework in addition to Scala and Akka, and adds the Typesafe Console for monitoring Typesafe Stack applications. Typesafe also provides training and consulting for Scala, Akka, and now the Play web framework. <p />Learn more about commercial services on our web site:&nbsp;<a href="http://typesafe.com/products" title="Typesafe Products">Typesafe Products and Services</a><p /><strong>Putting It To Work</strong><p />Great technology is meaningless unless it can be productively applied. That&rsquo;s why we&rsquo;re so excited to be working with organizations ranging from the smallest startups to the largest global financial institutions who are adopting the technology in the Typesafe Stack. A case in point is <a href="http://www.klout.com" title="Klout">Klout</a>, the fast growing startup that measures influence online. Felipe Oliveira, Lead Application Services Engineer at Klout, makes the case for our stack well:</p>
<blockquote class="posterous_medium_quote">
<p>We were able to scale to billions of API transactions with a very small team with the extensive use of Play and Akka. Scala has also been a powerful development platform for Klout, offering greater scalability and efficiency than our previous platform.</p>
</blockquote>
<p>Learn more about how Klout is using Play framework and the Typesafe Stack in <a href="http://corp.klout.com/blog/2012/03/sexy-api-from-klout/" title="Klout Blog: Sexy API">this post on the Official Klout Blog</a>.</p>
<p><a href="http://typesafe.com/stack" title="Typesafe Stack">Download</a> the Typesafe Stack today, and get started taking your own business to the next level. We&rsquo;ll be there to support you every step of the way.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 13 Mar 2012 05:01:00 UTC</pubDate>
                <title>Introducing Typesafe Console</title>
                <link>http://typesafe.com/blog/introducing-typesafe-console</link>
                <guid>http://blog.typesafe.com/introducing-typesafe-console</guid> 
                <description>
                    <![CDATA[<p>Today we announced <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a> 2.0, including Akka 2.0 and Play 2.0. This post highlights a significant new commercial offering that complements the Typesafe Stack: the <a href="http://typesafe.com/products/console" title="Typesafe Console">Typesafe Console</a>.</p>
<p>Starting today, the <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe subscription">Typesafe Subscription</a> includes the Typesafe Console, an enterprise-grade dashboard for monitoring your application built on the Typesafe Stack, including Akka event-driven middleware. The Typesafe Console is exclusively available to Typesafe Subscription customers.</p>
<p>The Typesafe Console is a tailor-made tracing and monitoring solution for event-driven Akka actor based systems. The Typesafe Console captures the events that comprise your application&rsquo;s asynchronous processing, links those events into meaningful trace flows across actors and remote nodes, and makes this information actionable to developers and operations staff through a rich web-based user interface.</p>
<p>The Typesafe Console provides insight into usage trends and performance characteristics of the running system. The Console enables your staff to optimize system performance and detect bottlenecks before they become a problem, but also to understand reasons for current or historical problems.</p>
<p>Typesafe Console monitoring has been carefully designed to be always active in high-volume production environments with a minimal impact on performance. For high transaction rate systems it provides measurement sampling to reduce the overhead and amount of data.</p>
<p>In addition to the web user interface, aggregated metrics and detailed trace flows are also accessible through a REST and JMX API, for easy integration with third party monitoring and operations tools. Both historical and current monitoring information is available, which makes it possible to compare across time and analyze trends. The information can be scoped: by node, groups of actors, or even drilling down to individual actors.</p>
<p>The Typesafe Console includes probes to collect the following information from a Typesafe Stack based system:</p>
<ul>
<li>message rates and peaks</li>
<li>individual trace events linked as trace trees or spans</li>
<li>latency between predefined or user defined points</li>
<li>latency distributions</li>
<li>actor supervisor hierarchies</li>
<li>actor mailbox queue size and delays</li>
<li>actor message dispatcher status</li>
<li>status of remoting and system errors</li>
<li>metadata about the system</li>
<li>JVM and OS health</li>
</ul>
<p>You can look at the console for a live demo application&nbsp;<a href="http://console-demo.typesafe.com" title="Typesafe Console Demo">here</a>.</p>
<p><strong>Graphical Console</strong></p>
<div>
<p>This is what the dashboard looks like. Key metrics visualized in nice-looking graphs, animations and numbers.</p>
<div class='p_embed p_image_embed'>
<a href="http://getfile7.posterous.com/getfile/files.posterous.com/temp-2012-03-11/ylBbfGyrzmnghqbAHHtgChAlJAFvguhxtspcmbFdcEqFcznvjEqoeyDaFzAj/console_first.png.scaled1000.png"><img alt="Console_first" height="297" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-03-11/ylBbfGyrzmnghqbAHHtgChAlJAFvguhxtspcmbFdcEqFcznvjEqoeyDaFzAj/console_first.png.scaled500.png" width="500" /></a>
</div>

<p>And here&rsquo;s a closer look at the system overview, which displays information about the whole system.</p>
<div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-03-11/zeuzcidAtGsDmazzDstleigvrblzbqwclpdFlyqdkwypmfgvtsqrkHhleoAI/console_system_overview.png.scaled1000.png"><img alt="Console_system_overview" height="468" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-03-11/zeuzcidAtGsDmazzDstleigvrblzbqwclpdFlyqdkwypmfgvtsqrkHhleoAI/console_system_overview.png.scaled500.png" width="500" /></a>
</div>

<p>A node corresponds to a ActorSystem, and typically also a JVM. The circle gives a quick overview of the current health of the node, and whether any errors have occurred. Details about the errors, including the full tree of trace events are one click away.</p>
<div class='p_embed p_image_embed'>
<a href="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-03-11/IcnAhoBkwIcxohlhmrHrAHmFdICefuteefDgGerGcFlCiwmysdoqyecCDdBc/console_node_expanded.png.scaled1000.png"><img alt="Console_node_expanded" height="544" src="http://getfile7.posterous.com/getfile/files.posterous.com/temp-2012-03-11/IcnAhoBkwIcxohlhmrHrAHmFdICefuteefDgGerGcFlCiwmysdoqyecCDdBc/console_node_expanded.png.scaled500.png" width="500" /></a>
</div>

<p>Actors can be grouped into logical units using tags, and statistics are aggregated for all actors associated with a given tag.</p>
<p>Another interesting way of grouping statistics for the actors is by their message dispatcher. Insight to the dispatcher status, such as number of active threads, is also available.</p>
<p>At the lowest level of detail you can see individual actors.</p>
<p><strong>How to Find a Bottleneck</strong></p>
</div>
<div>
<p>Let&rsquo;s walk through one of many useful features of the console.</p>
<p>Mailbox queues are interesting to monitor in an actor system. An increasing number of messages waiting in mailboxes is an indication of a problem. If mailboxes are growing constantly it is a fatal problem (memory will be exhausted).</p>
<p>Directly in the system overview pane you see&nbsp;Max mailbox size. In this example, the value is not very high, but several messages are waiting in the queue. The&nbsp;Max time in mailbox&nbsp;also makes us curious, because a half second of waiting time is more than we would expect.</p>
<div class='p_embed p_image_embed'>
<img alt="Tour_bottleneck1" height="110" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-03-11/EHgtHGnfoHwGaetgeseHakFbauwrHbzblrnlsqxBywnjydzzihrkcsoGwcyl/tour_bottleneck1.png.scaled500.png" width="234" />
</div>
We click on the&nbsp;Max mailbox size&nbsp;or&nbsp;Max time in mailbox&nbsp;value to go directly to the actor with the potential problem.<br />
<p>In the graphs for the mailbox we can see that we have peaks in both the size and wait time, and it looks like they correlate with the peaks in the message throughput. The good news is that the actor is capable of processing the queue before the next peak of messages. The mailbox size is not increasing continually so it&rsquo;s not a big worry, but the application would not be able to handle a sustained load corresponding to the message rate of the peaks.</p>
<div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-03-11/qrnuAtuHuCcwkuiBshEhyobewDaqtufJlkDkCBJgEsumtlAflBGctuscyvJD/tour_bottleneck2.png.scaled1000.png"><img alt="Tour_bottleneck2" height="237" src="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2012-03-11/qrnuAtuHuCcwkuiBshEhyobewDaqtufJlkDkCBJgEsumtlAflBGctuscyvJD/tour_bottleneck2.png.scaled500.png" width="500" /></a>
</div>

<p>Let&rsquo;s compare with another actor. As you see the mailbox graphs for ActorA and ActorB looks very different. Note the scale of the y-axis.</p>
<div class='p_embed p_image_embed'>
<a href="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2012-03-11/zzvqcjymqJffwGeJekrfgCryuFyDrjDgmnCjstoriEqgztGmqpzkndkbyGyw/tour_bottleneck3.png.scaled1000.png"><img alt="Tour_bottleneck3" height="237" src="http://getfile8.posterous.com/getfile/files.posterous.com/temp-2012-03-11/zzvqcjymqJffwGeJekrfgCryuFyDrjDgmnCjstoriEqgztGmqpzkndkbyGyw/tour_bottleneck3.png.scaled500.png" width="500" /></a>
</div>
<strong>Technical Details</strong></div>
<div>
<p>The monitoring backend is highly influenced by a paper from Google which outlines&nbsp;<a href="http://research.google.com/pubs/pub36356.html">Dapper</a>, a highly scalable tracing service for distributed systems.</p>
<p>In short, metadata is added to the messages as they flow through the system, both across component boundaries as well as across the network. This means that it is possible to follow message chains in the distributed system. All these trace events are captured in a very efficient way using a combination of thread local state and local buffering before they are emitted to storage and off-line analysis.</p>
<div>Trace data is collected in the application using an instrumented version of Akka. The trace events are written to storage and consumed by an analysis server to produce aggregated statistics. The analytics is performed close to real-time, but off-line from the application. The information is visualized in the graphical console.All information is also available through a REST API, which is useful for integration with other monitoring tools or for developing your own dashboard. Most information is also available as JMX MBeans.</div>
<p />
<div>Please see the <a href="http://console-demo.typesafe.com/monitoring/api.html" title="Typesafe Console REST API Description">REST API Description</a>&nbsp;for more on the available APIs.</div>
<p />
<div>There are, at present, three ways of persisting the trace events:</div>
<ul>
<li>Writing directly to&nbsp;<a href="http://www.mongodb.org/">MongoDB</a></li>
<li>Sending to a remote actor, which writes to MongoDB</li>
<li>Sending to a&nbsp;<a href="https://cwiki.apache.org/FLUME/">Flume</a>&nbsp;agent, which transports to a Flume collector, which writes to MongoDB</li>
</ul>
<p>A span is the path between two trace events; especially the duration between these events is interesting. One typical, built-in, span type is the time to send and process messages for actors. It&rsquo;s also possible to define application specific markers for spans that start and end in any location in the message trace, i.e. it may span over several actors. Statistics will be calculated for this in the same way as the built-in span types.</p>
<p><strong>More Information</strong></p>
<p>The graphical console has been developed in collaboration with the web-oriented architecture experts at&nbsp;<a href="http://www.zenexity.com/" title="Zenexity">Zenexity</a>&nbsp;and&nbsp;the console itself is built using the Typesafe Stack, including&nbsp;<a href="http://typesafe.com/technology/play" title="Play framework">Play framework</a>&nbsp;2.0 and&nbsp;<a href="http://typesafe.com/technology/scala" title="Scala">Scala</a>. The underlying tracing and monitoring layer has been developed with <a href="http://typesafe.com/technology/Scala" title="Scala">Scala</a>,&nbsp;<a href="http://typesafe.com/technology/akka" title="Akka">Akka</a> 2.0, and <a href="https://github.com/typesafehub/play2-mini" title="Play2 Mini">Play2 Mini</a>.</p>
</div>
<p>Please see the&nbsp;<a href="http://resources.typesafe.com/docs/console" title="Typesafe Console Documentation">full documentation</a>&nbsp;of the Typesafe Console for more information.</p>
<p>We invite you to take the&nbsp;<a href="http://console-demo.typesafe.com" title="Typesafe Console Demo">online demo of the Typeafe Console</a>&nbsp;for a test drive.<p />Finally, for more information on pricing and arranging an evaluation of the Typesafe Console, as part of the <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>, please <a href="http://typesafe.com/company/contact" title="Contact Typesafe">contact Typesafe</a>.</p>
<p class="p1"><em>While you're here, don't miss our other recent posts introducing the <a href="http://blog.typesafe.com/introducing-typesafe-stack-20"><span class="s1">Typesafe Stack 2.0</span></a>, <a href="http://blog.typesafe.com/introducing-play-20"><span class="s1">Play 2.0</span></a>, and&nbsp;<a href="http://blog.typesafe.com/introducing-akka-20-2756"><span class="s1">Akka 2.0</span></a>.</em></p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 13 Mar 2012 05:00:00 UTC</pubDate>
                <title>Introducing Play 2.0</title>
                <link>http://typesafe.com/blog/introducing-play-20</link>
                <guid>http://blog.typesafe.com/introducing-play-20</guid> 
                <description>
                    <![CDATA[<p>We <a href="http://blog.typesafe.com/typesafe-stack-adds-play-framework">announced</a> in November that <a href="http://www.playframework.org/">Play framework</a>, the highly productive Java and Scala web application framework would become part of the Typesafe Stack. Now, just a few months later, we are happy to announce that Play 2.0 has arrived and is now available as part of the open source&nbsp;<a href="http://typesafe.com/stack">Typesafe Stack</a> 2.0 and the commercial&nbsp;<a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>.</p>
<p>Let's see some of the highlights!<p /><strong>Native Java and Scala Support</strong><p />While the original version of the Play Framework was written primarily in Java (and provided Scala support through a plug-in), Play 2.0 embraces Scala more completely. Not only has Play&rsquo;s core transitioned to Scala, but the new release also makes the Scala language a first class citizen for developing Play applications. As a result, the new version of the framework now provides two equally polished sets of APIs: <a href="https://github.com/playframework/Play20/wiki/ScalaHome">one</a> for Scala developers and <a href="https://github.com/playframework/Play20/wiki/ScalaHome">one</a> for Java developers.<div class='p_embed p_image_embed'>
<img alt="Introducing-play20-01" height="430" src="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-03-15/iElgJEcopqApcDxuuHvvHlscGHmGEIkhDvpJFxtIcwkboEHqtcwBpBjzvsFh/introducing-play20-01.png.scaled500.png" width="500" />
</div>
</p>
<p><em>A Controller class using Java</em><span><br /><div class='p_embed p_image_embed'>
<img alt="Introducing-play20-02" height="481" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-03-15/ajHyydbfwuJIjquojaDfyuHkHsjqwjmvDGFwpkpauJyfHhHrzwdavjsiJHAq/introducing-play20-02.png.scaled500.png" width="500" />
</div>
<em>The same Controller class using Scala</em></span></p>
<p><strong>Rapid Application Development </strong></p>
<p>One of the features that provided the &ldquo;Play feel&rdquo; in the 1.x series of releases was the development console and browser-based error reporting. Play 2.0 greatly extends these capabilities by allowing developers to execute code snippets, tests, and shell scripts in the runtime application context and also by compiling and building many additional parts of a typical web application.<div class='p_embed p_image_embed'>
<a href="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-03-12/lEhlwwGaxhCrclCdyhrcDrfJpsbvAEuljlfkynezuqDgxlHAaAdcrCdsnJpx/console-big.png.scaled1000.png"><img alt="Console-big" height="310" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-03-12/lEhlwwGaxhCrclCdyhrcDrfJpsbvAEuljlfkynezuqDgxlHAaAdcrCdsnJpx/console-big.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><strong>Pushing Type Safety to a New Level</strong></p>
<div>One benefit of using a statically-typed language for writing Play applications is that the compiler can check parts of your code for you. This is why Play 2.0 uses a Scala-based template engine as the default for Play applications - even for developers using Java as their main programming language. This doesn&rsquo;t mean that you have to become a Scala expert to write templates in Play 2.0. But it&rsquo;s there under the covers, working for your benefit.</div>
<p>Play 2.0 takes compilation and type checking even further. Routes (which define URL and action mappings), templates, and even assets are now compiled (using <a href="http://lesscss.org/">LESS</a>, <a href="http://coffeescript.org/">CoffeeScript</a> and the <a href="http://code.google.com/closure/compiler/">Google Closure compiler</a>), providing a unified development workflow for both client side and server side developers. The result of all of this is that more errors will be detected earlier, speeding your development process.&nbsp;It also makes it a lot easier to work on large projects with many developers involved.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-03-12/tpqfrlHytIGJzAmCoqHDFxwdgGbrwvjsvCekqsBJtJnEpDBCHjbtzJGfwHtc/compilation-error-big.png.scaled1000.png"><img alt="Compilation-error-big" height="319" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-03-12/tpqfrlHytIGJzAmCoqHDFxwdgGbrwvjsvCekqsBJtJnEpDBCHjbtzJGfwHtc/compilation-error-big.png.scaled500.png" width="500" /></a>
</div>
</p>
<p><em>Example route compilation failure detection</em><p /><strong>Playing Nicely</strong><p />Play 1.x implemented many of its original ideas (like providing properties for Java classes and hot class reloading) through techniques that required a relatively Play-specific runtime environment. Play 2.0, on the other hand, takes a more standardized approach to runtime deployment. This was made possible partly by writing the core framework in Scala and also by building on top of <a href="https://github.com/harrah/xsbt">SBT</a>, the popular build tool for Scala. <p />Play 2.0 delivers the same simple &ldquo;play new, run, start&rdquo; experience as the 1.x series, while standing on a more extensible foundation. Play 2.0 comes with a preconfigured build script that will work unmodified for most, but if you need to change the way your application is built and deployed, you have the ability to customize and adapt it as needed. As a result, you&rsquo;ll find it even more straightforward to deploy Play 2.0 applications in a wider variety of scenarios.</p>
<p><div class='p_embed p_image_embed'>
<img alt="Play-releases" height="290" src="http://getfile4.posterous.com/getfile/files.posterous.com/temp-2012-03-11/CsgckmahciIjAitxqIeaqGjihhosDirshirjAriAxGnyzjElbHAxDDDadbgk/play-releases.png.scaled500.png" width="405" />
</div>
<strong>Pick and Choose</strong></p>
<p>Because web application design has evolved a lot in the last few years, Play 2.0 features a modular architecture that helps to avoid making hard assumptions about your technology stack. You do not want to use a database? You can disable the DBPlugin. Want to use your own templating engine? Just plug it in. Do not need a full featured web framework with all the bells and whistles? Use <a href="https://github.com/typesafehub/play2-mini">Play as a library</a>. How much of the architecture you want to use in your application is entirely up to you.</p>
<div>
<div>
<div>
<div><div class='p_embed p_image_embed'>
<img alt="Screen_shot_2012-02-20_at_12" height="145" src="http://getfile3.posterous.com/getfile/files.posterous.com/temp-2012-03-11/fniGdkiEdwDHrbvbpJxehEgbuzpEzBJEhxHuEeknoiFwglHhhvnGdbqEIwCC/Screen_Shot_2012-02-20_at_12.01.46_PM.png.scaled500.png" width="310" />
</div>
<em>Disabling plugins in conf/application.conf</em></div>
</div>
&nbsp;</div>
<div><strong>Scales Up, Down, and Out with Akka</strong></div>
<div>&nbsp;<br />Play is based on a lightweight, stateless, web-friendly architecture that features predictable and minimal resource consumption (in terms of CPU, memory, threads) for highly-scalable applications. This is partly thanks to Akka 2.0, the event-driven middleware at the heart of Play 2.0. Developers also have direct access to the many additional features Akka provides, to build highly distributed systems that can scale to meet any level of demand.</div>
<div><div class='p_embed p_image_embed'>
<img alt="Introducing-play20-03" height="261" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-03-15/iCHfncuakIxwAliwxJIxjEujtEnuswwJvDGyGsmibDAfpGjCbneDxuleEjAD/introducing-play20-03.png.scaled500.png" width="500" />
</div>
</div>
</div>
<div><em>In this example you can see how Calculator actor's result can be mapped to a Play result in a non-blocking fashion</em></div>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile6.posterous.com/getfile/files.posterous.com/temp-2012-03-15/frjhfppCtgsHymtgsIpAJuoeoagvsmeebetEbzHeaGmGxydxJBjswiirxfIu/introducing-play20-04.png.scaled1000.png"><img alt="Introducing-play20-04" height="319" src="http://getfile5.posterous.com/getfile/files.posterous.com/temp-2012-03-15/frjhfppCtgsHymtgsIpAJuoeoagvsmeebetEbzHeaGmGxydxJBjswiirxfIu/introducing-play20-04.png.scaled500.png" width="500" /></a>
</div>
</p>
<div><em>In this example you can see how ChatRoomActor is sending messages in chunks to the client using Comet</em></div>
<p />
<div><strong>Advanced IO and Stream Handling</strong></div>
<div>&nbsp;<br />One of the recent trends in web app development is the emphasis on push-based and non-blocking technologies. Play 2.0 uses an <a href="http://www.haskell.org/haskellwiki/Iteratee_I/O">Iteratee IO</a> implementation to provide out-of-the-box support for many advanced push-based/streaming technologies, from WebSockets and Comet to file streaming.</div>
<p><div class='p_embed p_image_embed'>
<img alt="Introducing-play20-05" height="426" src="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2012-03-15/EcarnxdyksBeonxnvglwdshoJcDiwzstdkJvEwmzuypxfvrhJdrvJJlnyxDy/introducing-play20-05.png.scaled500.png" width="500" />
</div>
</p>
<div><em>A scala controller that uses the built-in WebSockets support</em><p /><strong>Ready, Steady, Play!</strong><p />Play 2.0 is the result of an invigorating collaboration between Typesafe (led by Peter Hausel), Play project founder Guillaume Bort, the Play community, and Zenexity, the web oriented architecture consultancy where Play was born. It&rsquo;s been fun and exciting to work alongside such a talented group of software practitioners.<p />We&rsquo;re excited to have Play seamlessly integrated into the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a>, together with Scala, Akka, and the commercial support, maintenance, and deployment tools (like the new Typesafe Console) that make up the <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>.&nbsp;Typesafe also offers <a href="http://typesafe.com/products/training" title="Typesafe Training">training courses</a>&nbsp;and <a href="http://typesafe.com/products/consulting" title="Typesafe consulting">consulting</a>&nbsp;for the new 2.0 release to get your team up to speed on Play framework quickly.</div>
<p />
<div>We believe Play 2.0 represents a watershed moment for the Java and Scala communities, delivering a breakthrough end-to-end web development experience that brings with it new levels of scalability and developer productivity.&nbsp;</div>
<p />
<div>To get you started with Play 2.0, we&rsquo;ve bundled several <a href="https://github.com/playframework/Play20/tree/master/samples">sample</a> applications with the new release. So go Play, and decide for yourself. And have fun!</div>
<p />
<div><em>While you're here, don't miss our other recent posts introducing the <a href="http://blog.typesafe.com/introducing-typesafe-stack-20" title="Introducing Typesafe Stack 2.0">Typesafe Stack 2.0</a>, <a href="http://blog.typesafe.com/introducing-akka-20-2756" title="Introducing Akka 2.0">Akka 2.0</a>, and the <a href="http://blog.typesafe.com/introducing-typesafe-console" title="Introducing the Typesafe Console">Typesafe Console</a>.</em></div>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 05 Mar 2012 04:56:00 UTC</pubDate>
                <title>Spring Integration Scala DSL Announced</title>
                <link>http://typesafe.com/blog/spring-integration-scala-dsl-announced</link>
                <guid>http://blog.typesafe.com/spring-integration-scala-dsl-announced</guid> 
                <description>
                    <![CDATA[<p>Today <a href="http://blog.springsource.org/2012/03/05/introducing-spring-integration-scala-dsl/" title="Introducing Spring Integration Scala DSL" target="_blank">SpringSource announced the first milestone release</a> of the <a href="https://github.com/SpringSource/spring-integration-scala" title="Spring Integration Scala DSL">Spring Integration Scala DSL</a>.</p>
<p>Quoting the SpringSource announcement:</p>
<p>"The Spring Integration Scala DSL is a Domain Specific Language written in Scala with the goals of:</p>
<ul>
<li>providing a strongly-typed alternative to XML configuration for Spring Integration</li>
<li>raising awareness about Spring Integration in Scala community</li>
<li>providing first class integration with various Scala frameworks and products such as <a href="http://typesafe.com/technology/akka" title="Akka">Akka</a></li>
<li>providing seamless integration with Java where Scala developers can still leverage their existing Java investments"</li>
</ul>
<p>The <a href="http://blog.springsource.org/2012/03/05/introducing-spring-integration-scala-dsl/" title="SpringSource blog: Introducing Spring Integration Scala DSL">SpringSource blog post</a> includes examples of the DSL and screencast demonstrations, as well as links to the project's <a href="https://github.com/SpringSource/spring-integration-scala/wiki" title="Spring Integration Scala DSL wiki on Github">GitHub web site</a>, a comprehensive <a href="https://github.com/SpringSource/spring-integration-scala/wiki/Introduction" title="Spring Integration Scala DSL Introduction">Introduction</a>, a guide to <a href="https://github.com/SpringSource/spring-integration-scala/wiki/Getting-Started" title="Getting Started with Spring Integration Scala DSL">Getting Started</a>, a <a href="https://github.com/SpringSource/spring-integration-scala/wiki/Reference" title="Spring Integration Scala DSL">DSL Reference</a> and more.&nbsp;</p>
<p>Chris Mayer at jaxenter.com also <a href="http://jaxenter.com/springsource-announces-scala-dsl-for-spring-framework-41251.html" title="jaxenter: SpringSource announces Scala DSL for Spring Framework ">covered the announcement in an article posted today</a>, noting the release as another step in Scala's "ascent into the world of comprehensive enteprise support".</p>
<p>We're excited to see this project release as another way to accelerate adoption of Scala, Akka, and the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a> among the Spring developer community. &nbsp;Thanks to&nbsp;<a href="https://twitter.com/#!/z_oleg" title="Oleg Zhurakousky on Twitter">Oleg Zhurakousky</a> and the team at VMware SpringSource behind this project.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 17 Feb 2012 03:57:00 UTC</pubDate>
                <title>Jfokus 2012 Recap</title>
                <link>http://typesafe.com/blog/jfokus-2012-recap</link>
                <guid>http://blog.typesafe.com/jfokus-2012-recap</guid> 
                <description>
                    <![CDATA[<p>by Jonas Bon&eacute;r</p>
<p>I'm just back from an exciting few days with the Typesafe team at Jfokus 2012. Jfokus is a conference that rapidly is becoming one of the best developer conferences in Europe. This year was no exception: high energy, great speakers and well produced.&nbsp;</p>
<p><a href="http://typesafe.com" title="Typesafe">Typesafe</a> had a booth where the Akka Team together with Peter Hilton from the Play framework community project were hanging around answering questions about Scala, Akka and Play. The two big announcements were that we released <a href="http://akka.io" title="Akka">Akka 2.0-RC1</a> and <a href="http://www.playframework.org/2.0" title="Play Framework">Play 2.0-RC1</a> on the first conference day. This was great fun and created some buzz around the conference floor. <p />Scala, Akka and Play were well represented in the conference agenda.<p />The first day of pre-conference university track workshops started with Peter Lundberg from Valtech delivering a fully booked hands-on half-day workshop on <a href="http://www.jfokus.se/jfokus/talks.jsp#HANDS-ON%20LAB%3A%20Get%20started%20with%20Play%21%20framework%20for%20web%20development%20in%20Java%20and%20Scala">Getting started with Play! framework for web development in Java and Scala</a>. <p />The actual conference opened with a keynote by Juergen Hoeller from SpringSource on <a href="http://www.jfokus.se/jfokus/talks.jsp#Enterprise%20Java%20in%202012%20and%20Beyond">Enterprise Java in 2012</a> an Beyond in which Juergen talked about Akka and stated Scala as the <a href="https://twitter.com/#!/tommysdk/status/169346684684468224">&ldquo;next-generation language on the JVM&rdquo;</a>. That was directly followed by a great talk on Play 2.0 by Peter Hilton, speaking in front of a packed room of developers.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile4.posterous.com/getfile/files.posterous.com/temp-2012-02-17/scurgtJwvkHtqqHdqrJwFjAtlrcwggezewIxoadjjalFttyhmhfekwtDJlmI/play-jfokus.jpg-large.jpg.scaled1000.jpg"><img alt="Play-jfokus" height="375" src="http://getfile4.posterous.com/getfile/files.posterous.com/temp-2012-02-17/scurgtJwvkHtqqHdqrJwFjAtlrcwggezewIxoadjjalFttyhmhfekwtDJlmI/play-jfokus.jpg-large.jpg.scaled500.jpg" width="500" /></a>
</div>
</p>
<p>Matt Raible did a nice <a href="http://raibledesigns.com/rd/entry/play_framework_2_0_with">writeup of the talk</a> on his blog. <p />Day two started with Matt himself doing a replay of his highly appreciated Devoxx 2011 talk on <a href="http://www.jfokus.se/jfokus/talks.jsp#HTML5%20with%20Play%20Scala%2C%20CoffeeScript%20and%20Jade">HTML 5 with Play Scala, Coffeescript and Jade</a>. Once again he did a great performance and got rave reviews. <a href="http://raibledesigns.com/rd/entry/comparing_web_frameworks_and_html5">Read more</a> about the talk on Matt&rsquo;s blog. The Play talk was directly followed by Akka&rsquo;s Tech Lead Viktor Klang of Typesafe presenting <a href="http://www.jfokus.se/jfokus/talks.jsp#Up%20and%20out%3A%20Scaling%20software%20with%20Actors">Up and Out: Scaling Sofware with Actors</a> in front of a fully packed room of enthusiastic developers.</p>
<p><div class='p_embed p_image_embed'>
<a href="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2012-02-17/wniuawwfAJGeyoJslmfFGdlrkHGAAexsaqqAiHzjIpGvmcvaxmxnkgiFbain/akka-jfokus.jpg-large.jpg.scaled1000.jpg"><img alt="Akka-jfokus" height="375" src="http://getfile1.posterous.com/getfile/files.posterous.com/temp-2012-02-17/wniuawwfAJGeyoJslmfFGdlrkHGAAexsaqqAiHzjIpGvmcvaxmxnkgiFbain/akka-jfokus.jpg-large.jpg.scaled500.jpg" width="500" /></a>
</div>
</p>
<p>His talk was very well received. One interesting thing to note was that when Viktor asked the audience how many had heard about Akka, almost everyone in the room raised their arms, and when he asked how many had used Scala, almost half of the audience did. <p />At the same time, in another room, Heroku&rsquo;s James Ward did a talk on how to using Git to <a href="http://www.jfokus.se/jfokus/talks.jsp#%22git%20push%22%20Java%20%26%20Play%21%20Apps%20to%20the%20Cloud">deploy Play applications to the Cloud using Heroku</a>. James Ward&rsquo;s talk was followed by James Strachan from FuseSource who presented his <a href="http://www.jfokus.se/jfokus/talks.jsp#Introducing%20Scalate%2C%20the%20Scala%20Template%20Engine">Scalate - Scala Templating Engine project</a>.<p />By the end of the second day Typesafe&rsquo;s Heiko Seeberger did a very well received, bold, almost exclusively live-coding session on how to get started with Scala titled <a href="http://www.jfokus.se/jfokus/talks.jsp#Scala%20in%20Action">Scala in Action</a>, followed by a short &ldquo;lightning&rdquo; session by Thomas Alexandre from DevCode on the productivity boost Scala can give you titled <a href="http://www.jfokus.se/jfokus/talks.jsp#One-liners%20are%20your%20friend%3A%20Increasing%20Productivity%20with%20Scala">One-liners are Your Friend: Increasing Productivity with Scala</a>.<p />In total 8 conference talks on Scala, Play and Akka. Great fun. <p />The conference ended with myself and Peter Hilton doing a live stage interview for Oracle&rsquo;s <a href="https://blogs.oracle.com/javaspotlight/">JavaSpotlight podcast</a>, discussing the integration work between Play and Akka that the teams have done to allow Play to be fully asynchronous and non-blocking and giving Akka users a slick thin HTTP DSL module through the Play-Mini module, and much more. The result of this collaboration will be released in the next few weeks. <p />In short, Jfokus 2012 included lots of fun and energy for Typesafe and the Scala, Akka and Play communities. Don&rsquo;t miss next year&rsquo;s Jfokus conference, or for that sake the upcoming <a href="http://days2012.scala-lang.org/">Scala Days conference</a> in London.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 07 Feb 2012 07:05:00 UTC</pubDate>
                <title>New Typesafe Training Course: Fast Track to Play </title>
                <link>http://typesafe.com/blog/new-typesafe-training-course-fast-track-to-pl</link>
                <guid>http://blog.typesafe.com/new-typesafe-training-course-fast-track-to-pl</guid> 
                <description>
                    <![CDATA[<p>by Heiko Seeberger</p>
<p>We recently announced&nbsp;that&nbsp;<a href="http://blog.typesafe.com/typesafe-stack-adds-play-framework" title="Typesafe Stack Adds Play Framework">the Play web framework is joining the Typesafe Stack</a>. Play has always been known for its ease of use and developer productivity. The upcoming <a href="http://www.playframework.org/2.0" title="Play Framework 2.0">Play 2.0 release</a>, which is built on top of the Scala language, Akka event-driven middleware, and the sbt build tool, will continue that tradition while delivering even greater performance and scalability.</p>
<p>While many of the concepts and features from Play 1.x carry through to Play 2.0, there are some changes and new features. Therefore Typesafe's Fredrik Ekholdt, a Scala and web application expert, and Typesafe's Peter Hausel, one of the main Play committers, have designed an all-new <a href="http://www.typesafe.com/training/fasttracktoplay">Fast Track to Play</a> introductory course from the ground up. This one-day course will teach you everything you need to jump start web application development with Play 2.0.</p>
<p>The course program is as follows:</p>
<ul>
<li>Play 2.0 philosophy and architecture</li>
<li>Introduction of the application to be created</li>
<li>Getting started with Play 2.0</li>
<li>The controller and routing</li>
<li>Views and templates</li>
<li>Forms</li>
<li>Caching</li>
<li>Working with JSON in Play</li>
<li>Ajax</li>
<li>Building non-blocking web applications</li>
</ul>
<p>We are very excited to offer this new course for the first time on Monday April 16, the day preceding the&nbsp;<a href="http://blog.typesafe.com/scala-days-2012-speakers-announced" title="Scala Days 2012">Scala Days 2012</a> conference in London. More information and online registration for this course is available on the <a href="http://www.typesafe.com/products/training" title="Typesafe Training">training section of the Typesafe web site</a>. &nbsp;We'll be adding more open enrollment sessions worldwide in the coming months.</p>
<p>Typesafe also offers dedicated on-site training for Scala, Akka, and now Play. &nbsp;If you are interested in hosting a training for your team or company on-site at your facility, please <a href="http://typesafe.com/company/contact" title="Contact Typesafe">contact us</a>.&nbsp;</p>
<p>We look forward to seeing many of you in London.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 18 Jan 2012 06:10:00 UTC</pubDate>
                <title>Scala Days 2012 Speakers Announced</title>
                <link>http://typesafe.com/blog/scala-days-2012-speakers-announced</link>
                <guid>http://blog.typesafe.com/scala-days-2012-speakers-announced</guid> 
                <description>
                    <![CDATA[<p><a href="http://days2012.scala-lang.org/" title="Scala Days 2012">Scala Days 2012</a>, co-sponsored by <a href="http://typesafe.com">Typesafe</a> and scheduled for London April 17-18, 2012, is quickly approaching.</p>
<p>Scala Days offers a unique annual opportunity to engage with the Scala community, hear keynote speakers, be exposed to cutting edge research related to Scala, and compare notes about commercial applications of Scala and related frameworks including Akka and Play.</p>
<p>Keynote speakers for Scala Days 2012 will include:</p>
<ul>
<li><strong>Guy Steele</strong> -&nbsp;Guy is a Software Architect and Principal Investigator of Programming Languages in the Programming Languages group at Oracle Labs. He has contributed to the implementation and standardization of many popular programming languages and is currently heavily involved in Fortress, a high performance language designed to obsolete Fortran.</li>
<li><strong>Simon-Peyton Jones</strong> -&nbsp;Simon is a researcher at Microsoft Research in Cambridge, England. Best known perhaps for being the major design contributor to the Haskell programming language and the Glasgow Haskell Compiler (GHC). His main interests are in the design, implementation and application of lazy functional languages.</li>
<li><strong>Anthony Rose</strong> -&nbsp;Anthony is the Co-Founder/CTO of Zeebox and the technology visionary behind a revolutionary social TV concept that has attracted the attention of the whole television industry and 15 million pounds early investment from BSkyB. For many he is recognised for being the driver behind the extremely successful BBC IPlayer, a service replicated on many TV channels world wide.&nbsp;</li>
<li><strong>Martin Odersky</strong> -&nbsp;Martin is the creator of Scala and co-founder of Typesafe, the commercial provider at the heart of the Scala ecosystem.</li>
</ul>
<p><a href="http://days2012.scala-lang.org/node/101" title="Call for Speakers">Talk proposals are still being accepted</a> through Feburary 22, 2012. &nbsp;Speakers receive free admission to the full conference.</p>
<p><a href="http://days2012.scala-lang.org/registration" title="Scala Days 2012 registration">Register now</a> while early bird rates are still available. &nbsp;We look forward to seeing you in London this April!</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 20 Dec 2011 03:21:00 UTC</pubDate>
                <title>Scala IDE for Eclipse 2.0</title>
                <link>http://typesafe.com/blog/scala-ide-for-eclipse-20</link>
                <guid>http://blog.typesafe.com/scala-ide-for-eclipse-20</guid> 
                <description>
                    <![CDATA[<p>Today marks the release of <a href="http://www.scala-ide.org">Scala IDE for Eclipse 2.0</a>, which makes it easy to develop Scala and mixed Scala/Java projects in the familiar <a href="http://www.eclipse.org">Eclipse</a> Integrated Development Environment.</p>
<p>After 9 months of intensive work by open source community contributors, users, and the IDE project team at <a href="http://typesafe.com">Typesafe</a>, we are proud to release this new version with improved reliability, performance, and responsiveness. New features include error reports as you type, a project builder with dependency tracking, definition hyperlinking, inferred type hovers, code completion, better integration with Java build tools, and more.</p>
<p>A lot of effort has gone into this version of the IDE and we would like to recognize the people who have contributed so much time and energy to the success of the project.</p>
<p><strong>A bit of history</strong></p>
<p>The Scala IDE project began a few of years back, when <a href="http://www.chuusai.com/">Miles Sabin</a> layed down the foundations of the open source project and an enthusiastic community formed around the effort to create a free, open-source, Eclipse-based IDE for Scala. In late 2010 the <a href="http://typesafe.com">Typesafe</a> team decided to support the open source project, and in September <a href="https://plus.google.com/100086673455015900487/posts">Eugene Vigdorchik</a> became the first full-time engineer to work on the project. At the same time, Typesafe founder and Scala creator <a href="http://lamp.epfl.ch/~odersky/">Martin Odersky</a> led a reimplementation of the Scala presentation compiler, the engine behind the IDE semantic actions.</p>
<p><strong>Version 2.0</strong></p>
<p>For version 2.0 we had some tough decisions to take, and development started with a very limited number of features, aiming for a very reliable core. Naturally, this raised the need for early and frequent feedback from our users: on March 28 we had the first beta of the upcoming 2.0 release. This was followed by a stream of betas (12 in total), packing around 300 closed tickets over the next months. As Eugene moved on to other projects, two other <a href="http://typesafe.com">Typesafe</a> engineers joined the IDE team: <a href="http://www.iulidragos.org">Iulian Dragos</a> and <a href="https://twitter.com/#!/mircodotta">Mirco Dotta</a>, followed by <a href="https://plus.google.com/106787944777810934000/">Luc Bourlier</a> in September. Together with the great community (<a href="http://misto.ch/">Mirko Stocker</a> and <a href="https://twitter.com/#!/MattRussellUK">Matt Russell</a> just to name a few), the IDE took great strides to reach its first production-ready release.</p>
<p><strong>Diversity</strong></p>
<p>As things moved forward and the 2.0 branch became the main version in use, it became clear that we needed to have more than one IDE version: 2.0 remained the rock-solid branch, where only bug-fixing happens, while 2.1 is the place where new features, such as semantic highlighting or implicit highlighting are developed.</p>
<p>Besides the two IDE versions, we support three versions of the Scala compiler: 2.8.x, 2.9.x and 2.10 (Scala trunk), with nightly builds for all of them, so you can choose what suits you the best: the latest IDE developments on a stable Scala compiler, the stable IDE on the bleeding edge Scala compiler, or even the latest and greatest of both -- like the core Scala team, who uses the Eclipse IDE for their daily scalac development! The choice is yours.</p>
<p><strong>Community</strong></p>
<p>While the IDE always had a vibrant community around it, contributing to the project itself was sometimes challenging for newcomers.  On October 4 we moved the project to <a href="https://github.com/scala-ide/scala-ide">Github</a>, leading to a much simpler process for contributors. In just a few weeks we had 17 forks, some of which are extremely interesting developments in their own right (for example, check out <a href="https://github.com/gkossakowski/scala-ide">ScalaGWT</a>, which brings Scala to the GWT framework).</p>
<p><strong>Web site</strong></p>
<p>Today we also release a redesign of the <a href="http://www.scala-ide.org">Scala IDE web site</a>, along with  reworked documentation, including screencasts. Thanks <a href="http://people.epfl.ch/heather.miller">Heather</a> for the awesome work. We believe that the new site is not only pretty, but makes it much easier to find documentation, both for users and contributors (and everyone is a potential contributor). The web site is backed by Git too, so you can contribute by using the awesome Pull Request button!</p>
<p><strong>A look at the future</strong></p>
<p>Even though it's been a long ride, today's release is not the end of the road, but rather a beginning. We can now look at adding new features on a solid base, and great things will come, such as improved <em>compilation speed</em>,&nbsp;<em>find references</em>, and a&nbsp;Scala&nbsp;<em>debugger</em>. <a href="https://groups.google.com/forum/?hl=en#!forum/scala-ide-dev">Suggest your favorite feature</a>, and <a href="https://github.com/scala-ide/scala-ide">help us</a> build the next great IDE.</p>
<p>After the 2.0.0 release we will continue to support the 2.0 branch with maintenance releases including important bug fixes. However, the focus will shift to the 2.1 development stream, and concentrate on the upcoming features. Also, 2.0.0 will be the last version to support the 2.8 compiler. This decision was not taken lightly, but the effort to support 2.8 is substantial and detracts from our ability to innovate on newer releases. We believe that 2.0.0 is a solid release that can help people who cannot upgrade to 2.9.x in the immediate future.</p>
<p><strong>Features</strong></p>
<p>Scala IDE version 2 improves developer productivity through a large number of features. Below we highlight the main ones, but don't forget to check out the full list on the <a href="http://www.scala-ide.org">web site</a>, and watch the screencast to see them in action.</p>
<ul>
<li><strong>Report errors as you type</strong> - The IDE saves you time by type-checking your program as you type, and notifying you of errors before you build. This greatly reduces the number of times you need to build your project during  development. </li>
<li><strong>Project builder with dependency tracking</strong> - The IDE saves you time even when you *do* have to build your project: by using sbt's engine for tracking dependencies between source files (and even between dependent projects), the IDE builds only the necessary sources. This is often many fewer than all the source files in your project. </li>
<li><strong>Definition Hyperlinking</strong> - Ctrl-click on an identifier to navigate to its definition. This allows you to concentrate on your program, since you don't need to remember in what source file a certain definition lies. Try it out by surfing through the Scala collection library! </li>
<li><strong>Content assist</strong> - Hit Ctrl-space to see a list of all members you could invoke at a certain point in your program. Even members added through *implicit* conversions are available. Moreover, you can find any class on your classpath, even if it hasn't been imported in your file yet (and the completion engine takes care of adding the import). </li>
<li><strong>Inferred type hovers</strong> - Hover with the mouse over an identifier to see its type. This comes in handy when the compiler infers a different type than what you expect. </li>
</ul>
<p>And there is more! Check out the full list of features, and download Scala IDE 2.0 today at <a href="http://www.scala-ide.org">www.scala-ide.org</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 16 Dec 2011 02:36:00 UTC</pubDate>
                <title>Akka 2.0 Pre-Release Milestone 1</title>
                <link>http://typesafe.com/blog/akka-20-pre-release-milestone-1</link>
                <guid>http://blog.typesafe.com/akka-20-pre-release-milestone-1</guid> 
                <description>
                    <![CDATA[<p>by Jonas Bon&eacute;r</p>
<p>We are proud to announce the first pre-release milestone of Akka 2.0, which will be part of the upcoming <a href="http://typesafe.com/stack">Typesafe Stack</a> 2.0.</p>
<p>Akka is an event-driven middleware framework, for building high performance and reliable distributed applications in Java and Scala. Akka decouples business logic from low-level mechanisms such as threads, locks and non-blocking IO. Your Scala or Java program logic lives in lightweight actor objects which send and receive messages. With Akka, you can easily configure how actors will be created, destroyed, scheduled, and restarted upon failure.</p>
<p><a href="http://typesafe.com/">Typesafe</a> and the <a href="http://akka.io/">Akka open source community</a> have been hard at work laying the foundation for Akka 2.0 for many months now. In this post, we&rsquo;d like to highlight some of the changes made relative to Akka 1.x, and look a bit behind the scenes at why we made those changes, and how you can benefit from them.</p>
<p><strong>Modular Configuration</strong></p>
<p>In Akka 1.x, configuration, registry, and logging settings are all global, which poses challenges when running multiple Akka applications with different settings within the same class loader. In Akka 2.0, all global shared state has been removed so that multiple actor systems can co-exist. An Akka application is now contained within an <a href="http://akka.io/docs/akka/snapshot/general/actor-systems.html#actor-systems">ActorSystem</a> class. This allows more flexibility in deploying Akka applications and is particularly useful for testing actor systems.</p>
<p><strong>Mandatory Supervisor Hierarchies</strong></p>
<p>Akka achieves fault tolerance in large part by using a supervisor hierarchies, inspired by Erlang&rsquo;s OTP framework. Fault tolerance and error recovery strategies are fundamental to the success of Erlang systems. In the supervisor hierarchy model, a supervisor actor is responsible for starting, stopping and monitoring its child actors.</p>
<p>Akka has always had support for supervision hierarchies but now includes this supervision automatically. Error recovery is built-in to all actor systems and can be configured and refined easily. Actors naturally form tree structures based on parent actors creating child actors. Parent actors are now the supervisor for any children created, handling all errors and failures in the children.</p>
<p>Actor systems get much simpler to reason about when every actor has a supervisor. Among other benefits, this removes the need for maintaining a central registry&mdash;a global point of contention&mdash;and replaces it with local registries arranged in a hierarchy. If this sounds like a file system to you, you are on the right track: with these features, every actor in a system can be identified by giving the names of its ancestors, with the root provided by the ActorSystem itself. This enables path look-ups of actors, even relative to a reference point (i.e. &ldquo;../joe&rdquo; would be the current actor&rsquo;s brother named &ldquo;joe&rdquo;). One positive side effect is that instead of opaque UUIDs, you will find meaningful names in your log messages.</p>
<p>The <a href="http://akka.io/docs/akka/snapshot/general/supervision.html">&ldquo;Error Kernel&rdquo; or &rdquo;Onion Layer&rdquo; pattern</a> has been used to great effect in platforms like Erlang to structure applications in a fault-tolerant way, and with Akka&rsquo;s new mandatory parental supervision this design comes naturally. With mandatory supervisor hierarchies, you&rsquo;re encouraged to design for fault tolerance from the beginning, rather than as an afterthought in your application.</p>
<p><strong>Location Transparency</strong></p>
<p>One of the key features of actor-based programming is that actors are naturally distributable. Actor-based systems are distributed systems by design. A lot of restructuring has taken place in Akka to make the most of this &ldquo;distributed by default&rdquo; approach. The internals of Akka have been completely reworked so that they only use asynchronous message exchanges, laying the foundations for improved remote and distributed actors. With every actor identified by a URI&mdash;with remote protocol, host, port and path&mdash;it becomes very easy to refer to actors across node boundaries. The implementation of actor supervision has been simplified so that it works the same whether parent and child are on the same or different nodes. And since this distributed approach lends itself so well to scaling out, we made it even easier by allowing the deployment of actors to be specified purely by configuration, instead of through APIs as was the case in Akka 1.x. Consider the following example:</p>
<div class="CodeRay">
  <div class="code"><pre>akka {
  actor {
    deployment {
      /serviceA/retrieval {
        remote = “akka://app@10.0.0.1:2552”
         # “app” is the ActorSystem’s name
      }
      /serviceA/aggregation {
        router = “round-robin”
        nr-of-instances = 10
        target {
          nodes = [“akka://app@10.0.0.2:2552”, “akka://app@10.0.0.3:2552”]
        }
      }
    }
  }
}</pre></div>
</div>

<p>With a configuration snippet like this, given an actor named &ldquo;serviceA&rdquo;, the child named &ldquo;retrieval&rdquo; will be deployed on a specific host, while the child named &ldquo;aggregation&rdquo; will be cloned 10 times, and evenly distributed across the two given target nodes. (The ability to be routed needs to be declared in the code to avoid surprises, but the configuration can override all properties). &nbsp;To support the new configuration model, configuration file handling has been split out into a no-dependencies <a href="https://github.com/typesafehub/config">Java library</a> which you can also use for your own projects; it is also used also by <a href="http://www.playframework.org/2.0">Play 2.0</a> so that you can configure an Akka &amp; Play application with a single configuration file.</p>
<p><strong>Additional Refinements</strong></p>
<p>The three big features mentioned above have spawned a lot of other changes to make them possible. For example, the &ldquo;ask&rdquo; operation was reimplemented by creating a one-off actor for handling the reply so that replies to Futures work like normal message sends. All these changes have made the API more consistent, generally removing methods while adding features. We also made an effort to make actors even more light-weight: currently the overhead is around 350 bytes per instance, which translates to about 2.7 million actors per GB in heap size. We also invested in removing blocking synchronization wherever possible, making Akka more scalable than ever: there is not a single &ldquo;synchronized&rdquo; in the Akka hot paths and current benchmarks yield 24 million messages processed per second on a standard quad-core MacBook Pro.</p>
<p>With Akka 2.0, Futures and Promises have also received a major overhaul. This effort has been in coordination with the Scala team from EPFL in order to unify these concepts between Akka and the Scala libraries, with the aim of moving towards one common interface and implementation for these important constructs.</p>
<p>In summary, this release represents a true version 2 of Akka. While adding new capabilities, the Akka development team took advantage of the clear version step to weed out code which would impede future improvement. The improvements were done especially with <a href="http://akka.io/docs/akka/snapshot/cluster/cluster.html">cluster support</a> in mind, which will be the primary focus for the subsequent 2.1 release. <p />This pre-release milestone presents the new face of Akka in a mostly feature-complete form, but without all of the refinement that will be present in the final release. For example, we will provide a migration helper kit which contains bridges in the form of a global default ActorSystem to ease the transition from Akka 1.x. At the same time, we hope that you will try out the this early pre-release of Akka 2.0 and provide your feedback via the Akka project <a href="https://www.assembla.com/spaces/akka/">issue tracker</a> and <a href="http://groups.google.com/group/akka-user">mailing list</a>. You can download the pre-release milestone from the Akka project <a href="http://akka.io/releases">Maven repository</a> or&nbsp;<a href="http://akka.io/downloads">download page</a>, and <a href="http://akka.io/docs/akka/2.0-M1">documentation for this release</a> is on the Akka project site. Happy hAkking!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 01 Dec 2011 02:45:00 UTC</pubDate>
                <title>Practically Speaking</title>
                <link>http://typesafe.com/blog/getting-down-to-work</link>
                <guid>http://blog.typesafe.com/getting-down-to-work</guid> 
                <description>
                    <![CDATA[<p>by the Typesafe Team</p>
<p><a href="http://typesafe.com/">Typesafe</a> is all about creating a pragmatic, modern development stack for building software that scales. The <a href="http://typesafe.com/technology/scala">Scala programming language</a> is at the core of that stack.</p>
<p>Since the inception of Scala, it has never suffered a shortage of opinions and feedback. This has been a tremendous advantage! If anything, we have noticed discussions about commercial applications of Scala accelerating in various forums, online and offline, in the past few weeks.</p>
<p>At Typesafe, we take feedback about practical applications of Scala seriously. Experiences from real world commercial applications play a large role in our planning and prioritization. &nbsp;Our ambition is to continually improve Scala and the rest of the <a href="http://typesafe.com/stack">Typesafe Stack</a> so that it is accessible to an ever broader audience of developers.</p>
<p>In this spirit, we thought it would be a good time to summarize a few of the areas where Typesafe is working to ease the adoption of Scala in commercial settings:</p>
<ul>
<li><strong>IDE Support</strong> -- Historically, inconsistent Eclipse IDE support had been a frequent complaint from early adopters of Scala. Recognizing this challenge, Typesafe led a major refactoring of the community-initiated <a href="http://www.scala-ide.org/">Scala IDE for Eclipse</a> starting in early 2011. This has culminated in Scala IDE for Eclipse 2.0, with greatly improved stability and performance, currently available as a <a href="http://download.scala-ide.org/">release candidate</a>. After the final IDE 2.0 release, Typesafe will continue to invest in adding new IDE features, such as improved refactoring support. </li>
</ul>
<ul>
<li><strong>Learning curve</strong> -- Scala builds on many familiar concepts from Java and other languages, but introduces powerful new elements to the mix. In order to get commercial development teams up to speed quickly, Typesafe has developed dedicated training courses including <a href="http://typesafe.com/products/training">Fast Track to Scala</a> (for newcomers to Scala) and <a href="http://typesafe.com/products/training">Advanced Scala</a> (for experienced Scala developers) that are delivered in conjunction with our growing network of partners. Complementing Typesafe&rsquo;s efforts are free resources like Twitter&rsquo;s <a href="http://twitter.github.com/scala_school/">Scala School</a> and Cay Horstmann&rsquo;s excellent <a href="http://typesafe.com/resources/scala-for-the-impatient">Scala for the Impatient</a>. Recently, Typesafe partnered with leaders of the Scala community to launch an exciting new collaborative <a href="http://docs.scala-lang.org/">Scala Documentation</a> site. And for those looking to ease into the Typesafe Stack, both the Akka middleware framework and the Play web framework offer <a href="http://akka.io/docs/akka/1.2/java/index.html">native Java APIs</a> in addition to Scala APIs.</li>
</ul>
<ul>
<li><strong>Build times</strong> -- There&rsquo;s no question: because it does more for you, the scalac compiler has more work to do than javac. At Typesafe, we are working to address build times through a holistic approach that considers not only raw compile times but also techniques like incremental compilation and parallel builds. Core to this effort are build tools like <a href="https://github.com/harrah/xsbt/wiki">sbt</a>, where we are pushing improvements aggressively.</li>
</ul>
<ul>
<li><strong>Binary compatibility</strong> -- To ensure a stable platform for commercial deployment, Typesafe has introduced the <a href="http://typesafe.com/products/typesafe-subscription">Typesafe Subscription</a>, which includes long-term, commercially supported and maintained releases of Scala and the rest of the Typesafe Stack. This means you can put your application into production with the confidence provided by ongoing technical support and binary-compatible fixes for key issues that may arise. &nbsp;To support this effort, we are working on the <a href="http://typesafe.com/technology/migration-manager">Migration Manager</a>, a tool that checks binary compatibility across releases, which was recently used to verify that Scala 2.9.1 was compatible with 2.9.0. Finally, we are exploring opportunities to provide a larger set of core libraries that are continuously built together with new releases of Scala, including common libraries for testing, IO, and transactional memory, among others. This is intended to reduce the dependency synchronization challenges for developers moving between major versions of Scala.</li>
</ul>
<ul>
<li><strong>Performance</strong> -- We take application runtime performance quite seriously, and target continual performance improvement based on feedback from real world applications. At the same time, we are cautious to avoid premature optimization. As a high-level language, Scala encourages developers to take advantage of scalable software architectures (such as Akka&rsquo;s distributed actors) that would be more difficult to implement in a lower-level language. And as a statically typed language running on the Java Virtual Machine, Scala benefits from a natural performance tailwind when compared with many alternative commercial languages.</li>
</ul>
<ul>
<li><strong>Frameworks</strong> -- It&rsquo;s no secret that much of our focus at Typesafe has been on higher level frameworks including <a href="http://typesafe.com/technology/akka">Akka event-driven middleware</a> and, more recently, the <a href="http://blog.typesafe.com/typesafe-stack-adds-play-framework">Play web application framework</a>. Our effort goes beyond the Scala language to these frameworks that use Scala to make it easier (and more fun) for developers to build applications that solve real world problems, at scale. Look for more to come from Typesafe on this front.</li>
</ul>
<ul>
<li><strong>Community</strong> -- The Scala community is much broader than Typesafe. &nbsp;We&rsquo;re honored to work alongside a broad, diverse, talented, opinionated, and downright quirky group of individuals. We&rsquo;re trying to do our part by collaborating on projects like <a href="https://github.com/scala/scala">moving the main Scala repository to Github </a>(completed today!), where it joins <a href="https://github.com/languages/Scala">many other projects built with Scala</a>.</li>
</ul>
<p>No doubt, there&rsquo;s tremendous room for improvement in Scala, on many fronts. And we are hard at work. But at the same time, Scala is used in production today, with great success, by many major companies ranging from global financial services firms to web leaders like Twitter, LinkedIn, and -- yes -- <a href="http://eng.yammer.com/blog/2011/11/30/scala-at-yammer.html" title="Scala at Yammer">Yammer</a>.</p>
<p>We welcome your feedback on Typesafe and Scala. Please get in touch with us through <a href="http://typesafe.com/">our web site</a>, in the&nbsp;<a href="http://typesafe.com/resources/community">open source community forums</a> where we do our work, or at <a href="mailto:info@typesafe.com">info@typesafe.com</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 16 Nov 2011 09:01:00 UTC</pubDate>
                <title>Typesafe Stack Adds Play Framework</title>
                <link>http://typesafe.com/blog/typesafe-stack-adds-play-framework</link>
                <guid>http://blog.typesafe.com/typesafe-stack-adds-play-framework</guid> 
                <description>
                    <![CDATA[<p>by Jonas Bon&eacute;r</p>
<p>Earlier this year, we announced the <a href="http://typesafe.com/stack">Typesafe Stack</a>, an integrated open source distribution of the Scala programming language, Akka middleware, and supporting development tools. Today, we&rsquo;re excited to <a href="http://typesafe.com/company/news/15856">announce</a> a major new addition to the Typesafe Stack: the <a href="http://www.playframework.org/">Play web application framework</a>.</p>
<p>The open source Play framework was created in 2007 by Guillaume Bort, who sought to bring a fresh web development experience inspired by modern web frameworks like Ruby on Rails to the long-suffering Java web development community. Play follows a familiar stateless model-view-controller architectural pattern, with a philosophy of convention over configuration and an emphasis on developer productivity. Unlike traditional Java web frameworks with their tedious compile-package-deploy-restart cycles, updates to Play applications are instantly visible with a simple browser refresh. With its distinctive focus on developer experience, it&rsquo;s no surprise that the Play framework quickly took the Java web development community by storm, earning a place in the hearts of developers and <a href="http://blog.heroku.com/archives/2011/8/29/play/">on forward-looking platforms like Heroku</a>.</p>
<p>In many ways, the Play team&rsquo;s willingness to challenge the status quo with a fundamentally new approach echoes the spirit of the Scala language and Akka event-driven middleware. So it&rsquo;s natural that the Play community soon began experimenting with a Scala add-on module in early versions of the framework. These experiments have culminated in <a href="http://www.playframework.org/2.0">Play framework 2.0</a>, the next major version of the framework announced by the Play community earlier this year, which leverages Scala at its core while providing native support for both Java and Scala.</p>
<p>Play framework 2.0 builds on <a href="http://typesafe.com/technology/scala">Scala</a>, <a href="http://typesafe.com/technology/akka">Akka</a>, and <a href="http://typesafe.com/technology/sbt">sbt</a> to deliver superior asynchronous request handling, fast and reliable type-safe templates, and a powerful build system with flexible deployment options. Developers can use Play 2.0 to add a simple HTTP layer to existing projects; or can build full-featured web applications that take advantage of the integrated support for database persistence, form validation, testing, authentication, caching, and RESTful web services.</p>
<p>While it adds native support for Scala, Java remains a key focus for Play Framework 2.0. <a href="http://akka.io/docs/akka/1.2/java/index.html">Just like Akka middleware</a>, the Play Framework will continue to provide native Java APIs that allow Java developers to leverage the power of Scala and the Typesafe Stack without writing a single line of Scala code -- though we find that once you&rsquo;ve tasted Scala, it&rsquo;s often too tempting to resist.</p>
<p>With the addition of the Play web application framework, the Typesafe Stack becomes a complete web platform.  Typesafe is contributing new development resources to the Play framework open source community to work on a common roadmap coordinating Scala, sbt, Play, and Akka into a unified, coherent platform for application development. Our goal is to offer dramatically improved productivity over traditional application platforms, from the lowest-level features all the way up to the web framework.</p>
<p>Typesafe will offer commercial support, maintenance, systems management and deployment tools for Play framework as part of the paid Typesafe Subscription offering.  We&rsquo;ll also be introducing training and consulting services around Play framework, in conjunction with partners including <a href="http://zenexity.fr/">Zenexity</a>, the web oriented architecture consultancy where Play was born.</p>
<p>Finally, we&rsquo;re honored to announce that Guillaume Bort, creator of Play framework and co-founder of Zenexity, has joined the <a href="http://typesafe.com/company/team">Typesafe advisory board</a> to ensure a seamless collaboration.</p>
<p>The Typesafe Stack is an open platform, and developers will continue to have many excellent choices for Scala and Java web frameworks including Spring, Wicket, Lift, Scalatra, Unfiltered, and many others. At the same time, we suspect that many of you will find the polished development experience of Play framework, and its deep integration with other components of the Typesafe Stack, as irresistible as we do.</p>
<p>Play framework 2.0 is under active development and will be packaged with upcoming releases of the Typesafe Stack. In the mean time, you can download a beta release at the <a href="http://www.playframework.org/2.0">Play community project site</a>, starting today.</p>
<p>If you are at the <a href="http://www.devoxx.com/">Devoxx</a> conference this week, be sure to stop by the Typesafe booth to talk about Typesafe and Play framework, and don&rsquo;t miss the Wednesday session on Play 2.0 and the Thursday sessions on Akka and Scala.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 27 Oct 2011 09:48:00 UTC</pubDate>
                <title>Non-blocking Message Flow with Akka Actors </title>
                <link>http://typesafe.com/blog/non-blocking-message-flow-with-akka-actors</link>
                <guid>http://blog.typesafe.com/non-blocking-message-flow-with-akka-actors</guid> 
                <description>
                    <![CDATA[<p>by Patrik Nordwall</p>
<p>Akka is an event-driven middleware framework, implemented in Scala, for building high performance and reliable distributed applications. &nbsp;Akka decouples business logic from low-level mechanisms such as threads, locks and non-blocking IO. Your Scala or Java program logic lives in lightweight actor objects which send and receive messages. With Akka, you can easily configure how actors will be created, destroyed, scheduled, and restarted upon failure.</p>
<p>This article will give you a deeper understanding of how Akka actors are related to threads. It illustrates how bad resource utilization your application may have if you use actors in a blocking fashion, and what to do instead of blocking.</p>
<p>The example we will use is a translation service that delivers two things as response to HTTP requests:</p>
<ul>
<li>translated text</li>
<li>word count</li>
</ul>
<p>The translation takes 100 ms to perform, and so does the word count.</p>
<p>We are only allowed to use 8 threads for the actors. That is indeed a low limit, but in the end you will have an upper limit somewhere of the number of threads that can be used.</p>
<p>The application must be able to handle 4 concurrent client requests with an average response time of less than 110 ms.</p>
<p>We use Akka&rsquo;s support for async HTTP request, which means that we don&rsquo;t block the incoming request thread.</p>
<p>To be able to handle 4 concurrent request we must create at least 4 frontend actors and use a dispatcher with 4 threads.</p>
<p>Let&rsquo;s start with the wrong way of doing it and then change to a better solution.</p>
<div class="CodeRay">
  <div class="code"><pre>object Frontend {

  val frontendDispatcher = Dispatchers
    .newExecutorBasedEventDrivenDispatcher(&quot;frontend-dispatcher&quot;)
    .setCorePoolSize(4)
    .build

  def loadBalanced(poolSize: Int, actor: =&gt; ActorRef): ActorRef = {
    val workers = Vector.fill(poolSize)(actor.start())
    Routing.loadBalancerActor(CyclicIterator(workers)).start()
  }

  class WebEndpoint(root: ActorRef) extends Actor with Endpoint {
    self.dispatcher = frontendDispatcher

    val translate = loadBalanced(10, actorOf[TranslateHandler])

    override def preStart() = {
      root ! Endpoint.Attach(hook, provide)
    }

    def receive = handleHttpRequest
    def hook(uri: String) = true
    def provide(uri: String) = translate
  }</pre></div>
</div>

<p>Above we have created 10 instances of TranslateHandler actor, managed by a round robin router. The TranslateHandler looks like this:</p>
<div class="CodeRay">
  <div class="code"><pre>class TranslateHandler extends Actor {
    self.dispatcher = frontendDispatcher

    def receive = {
      case get: Get =&gt;
        val text = get.request.getParameter(&quot;text&quot;)
        (translationService ? ranslationRequest(text))
          .as[TranslationResponse] match {
            case Some(TranslationResponse(translated, words)) =&gt;
              get.OK(&quot;Translated %s words to: %s&quot;.format(words, translated))
            case None =&gt;
              get.Timeout(&quot;Timeout&quot;)
        }
  }</pre></div>
</div>

<p>It asks the translationService to perform the translation and count the words. It blocks until the result is available, and then completes the HTTP request with OK.</p>
<p>For the backend TranslationService we also define a dispatcher and pool of service instances:</p>
<div class="CodeRay">
  <div class="code"><pre>val backendDispatcher = Dispatchers
    .newExecutorBasedEventDrivenDispatcher(&quot;backend-dispatcher&quot;)
    .setCorePoolSize(4)
    .build

  val translationService = loadBalanced(10, actorOf[TranslationService])</pre></div>
</div>

<p>The TranslationService and the workers looks like this:</p>
<div class="CodeRay">
  <div class="code"><pre>class TranslationService extends Actor {
    self.dispatcher = backendDispatcher

    val translator = actorOf[Translator].start()
    val counter = actorOf[Counter].start()

    def receive = {
      case TranslationRequest(text) =&gt;
        val future1 = (translator ? text)
        val future2 = (counter ? text)

        val result1 = future1.as[String]
        val result2 = future2.as[Int]

        for (translatedText &lt;- result1; words &lt;- result2) {
          self.reply(TranslationResponse(translatedText, words))
        }
    }
  }

  class Translator extends Actor {
    self.dispatcher = backendDispatcher

    def receive = {
      case x: String =&gt;
        // simulate some work
        Thread.sleep(100)
        val result = x.toUpperCase
        self.reply(result)
    }
  }

  class Counter extends Actor {
    self.dispatcher = backendDispatcher

    def receive = {
      case x: String =&gt;
        // simulate some work
        Thread.sleep(100)
        val result = x.split(&quot; &quot;).length
        self.reply(result)
    }
  }</pre></div>
</div>

<p>In the receive method of the TranslationService you can see how the text translation and word count is done in parallel.</p>
<p>Running this with JMeter and one client thread the result looks fine. Average response time of 103 ms. When increasing to 2 client threads the response time goes up to 193 ms. What is wrong? The blocking consumes threads, and we only have a few. In this case each request eats 4 threads.</p>
<p>Obviously we can do better. Let&rsquo;s change the TranslationService to this:</p>
<div class="CodeRay">
  <div class="code"><pre>def receive = {
      case TranslationRequest(text) =&gt;
        for (replyTo &lt;- self.sender) {
          val aggregator = actorOf(new Aggregator(replyTo)).start()
          translator.tell(text, aggregator)
          counter.tell(text, aggregator)
        }
    }</pre></div>
</div>

<p>It creates a new actor, Aggregator, which is used as sender for the one-way tell to translator and counter. This will not block at all. The Aggregator looks like this, and doesn&rsquo;t consume any resources until the response from the workers are handled.</p>
<div class="CodeRay">
  <div class="code"><pre>class Aggregator(replyTo: ActorRef) extends Actor {
    self.dispatcher = backendDispatcher
    self.lifeCycle = Supervision.Temporary
    self.receiveTimeout = Some(1000)

    var textResult: Option[String] = None
    var lengthResult: Option[Int] = None

    def receive = {
      case text: String =&gt;
        textResult = Some(text)
        replyWhenDone()
      case length: Int =&gt;
        lengthResult = Some(length)
        replyWhenDone()
      case ReceiveTimeout =&gt;
        self.stop()
    }

    def replyWhenDone() {
      for (text &lt;- textResult; length &lt;- lengthResult) {
        replyTo.tell(TranslationResponse(text, length))
        self.stop()
      }
    }
  }</pre></div>
</div>

<p>The same thing can be done in the frontend. As an additional optimization, the frontend and backend can share the same dispatcher with 8 threads. With these changes we can run JMeter with 4 client threads and the average response time is 102 ms.</p>
<p>Another solution is to use Akka futures, but that is another story.</p>
<p>The conclusion is that you should be careful with blocking operations and don&rsquo;t be afraid of creating temporary actors that continue the message flow.</p>
<p>Full source code for the example above is available at <a href="https://github.com/patriknw/akka-playground/tree/master/web-to-backend">https://github.com/patriknw/akka-playground/tree/master/web-to-backend</a>. &nbsp;</p>
<p>For more about Akka, visit the <a href="http://typesafe.com">Typesafe web site</a> and the <a href="http://akka.io">Akka community project site</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 03 Oct 2011 10:00:00 UTC</pubDate>
                <title>Scala on Heroku</title>
                <link>http://typesafe.com/blog/scala-on-heroku</link>
                <guid>http://blog.typesafe.com/scala-on-heroku</guid> 
                <description>
                    <![CDATA[<p>by Havoc Pennington</p>
<p><strong>Bringing the Typesafe Stack to Heroku</strong></p>
<p>We've been working with a team at <a href="http://heroku.com">Heroku</a> to support the <a href="http://typesafe.com/stack">Typesafe Stack</a>, including <a href="http://scala-lang.org">Scala</a>, <a href="http://akka.io">Akka</a>, and <a href="https://github.com/harrah/xsbt/">Simple Build Tool</a> on Heroku's <a href="http://devcenter.heroku.com/articles/cedar">Cedar</a> platform. Today <a href="http://typesafe.com/company/news/15427">the service goes live</a>.</p>
<p>Heroku introduces the new support <a href="http://blog.heroku.com/archives/2011/10/03/scala/">over on their blog</a> with an emphasis on telling newcomers to Scala about the Scala community.</p>
<p>Readers of this blog may be familiar with Scala and Akka already, but may not have tried out Heroku. You should! And we've built a handy sample app, "Web Words," in case you need something to deploy:</p>
<ul>
<li><a href="https://github.com/typesafehub/webwords">Web Words sample app on GitHub</a> </li>
<li><a href="http://devcenter.heroku.com/articles/scaling-out-with-scala-and-akka">Article describing Web Words</a> </li>
</ul>
<p>Following the instructions in the <a href="https://github.com/typesafehub/webwords">README</a>, you can deploy Web Words to Heroku in a matter of minutes. It runs with the free pricing tier so there's no cost to try it.</p>
<p>Heroku could not be easier to use. A nice feature is that you can run any main() method, instead of uploading a .war file; giving you total control of your application. Heroku also offers an ecosystem of add-ons, allowing you to add hosted services such as RabbitMQ or MongoDB to your application with a single command. Both features are shown off in the Web Words sample app.</p>
<p><strong>Adding "stage" to sbt</strong></p>
<p>As part of the Heroku support, we developed a new Simple Build Tool plugin to generate a 'start script'. This plugin exports sbt's knowledge about your main class, your classpath, and so on into a shell script. Then you launch the app with that script. It's like `sbt run` except that it doesn't keep sbt itself in-memory. Find <a href="https://github.com/typesafehub/xsbt-start-script-plugin">xsbt-start-script-plugin on GitHub</a>. Once the start script is generated, on Heroku it goes in the <a href="https://github.com/typesafehub/webwords/blob/heroku-devcenter/Procfile">Procfile</a>; you can also use it to run an app by hand on your local machine.</p>
<p>The start script plugin is not necessary to use Scala on Heroku, but it does save you some work. It also introduces a convention, a task name `stage`, which we're defining to mean "prepare the project to be executed in-place." For <a href="https://github.com/typesafehub/xsbt-start-script-plugin">xsbt-start-script-plugin</a>, `stage` means to generate executable scripts to launch the app. But you could define it differently, or add your own steps to the task in addition to generating a script.</p>
<p>Heroku's Cedar platform has no knowledge of the start script plugin, it just runs `sbt stage` when it identifies an sbt project and does whatever `stage` has been defined to do.</p>
<p><strong>An intro to Scala, Akka, and Play</strong></p>
<p>By the way, if you missed <a href="http://www.salesforce.com/dreamforce/DF11/">Dreamforce 2011</a>, I gave a talk introducing Scala, Akka, and Play to Java developers, and teased the upcoming Heroku support at the end of the talk. (Which is why we didn't post the talk until today.)</p>
<p>Here are the slides and a video from the talk.</p>
<p>Slides:</p>
<div style=""><strong style="display: block; margin: 12px 0 4px;"><a href="http://www.slideshare.net/havocp/scala-akka-and-play-an-introduction-on-heroku" title="Scala, Akka, and Play: An Introduction on Heroku" target="_blank">Scala, Akka, and Play: An Introduction on Heroku</a></strong> <iframe scrolling="no" marginheight="0" marginwidth="0" src="http://www.slideshare.net/slideshow/embed_code/9491261" frameborder="0" height="355" width="425"></iframe>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/havocp" target="_blank">havocp</a></div>
</div>
<p>Video:</p>
<div style=""><iframe src="http://www.youtube.com/embed/RTK4eOZEsog" frameborder="0" height="315" width="420"></iframe></div>
<p><strong>Free e-book!</strong></p>
<p>If the talk convinces you to learn more about Scala, one place to start is the <a href="http://typesafe.com/resources/scala-for-the-impatient">PDF excerpt of Cay Horstmann's upcoming book Scala for the Impatient</a> we're giving away on the Typesafe web site.</p>
<p>We look forward to seeing what you build with Scala and the Typesafe Stack on Heroku!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 25 Aug 2011 04:24:00 UTC</pubDate>
                <title>Free PDF: Scala for the Impatient</title>
                <link>http://typesafe.com/blog/free-pdf-from-typesafe-scala-for-the-impatien-64715</link>
                <guid>http://blog.typesafe.com/free-pdf-from-typesafe-scala-for-the-impatien-64715</guid> 
                <description>
                    <![CDATA[<p>Cay Horstmann is well known in the Java community as the author of <a href="http://www.amazon.com/Core-Java-I--Fundamentals-8th-Horstmann/dp/0132354764/">Core Java</a>, "the definitive guide to Java for serious programmers who want to put Java to work on real projects."  That's one of the reasons we got excited when we heard that Cay was turning his attention to a Scala book.</p>
<p>Starting today, Typesafe is proud to offer a free preview of Cay Horstmann's new work, <a href="http://typesafe.com/resources/scala-for-the-impatient" title="Scala for the Impatient">Scala for the Impatient</a>, when you sign up for the Typesafe e-mail newsletter. Cay describes the book as such:</p>
<p>"I wrote this book for impatient readers who want to start programming with Scala right away. I assume you know Java, C#, or C++, and I won't bore you with explaining variables, loops, or classes. I won't exhaustively list all features of the language, I won't lecture you about the superiority of one paradigm over another, and I won't make you suffer through long and contrived examples. Instead, you will get the information that you need in compact chunks that you can read and review as needed."</p>
<p>The free PDF includes a subset of the book, suitable for a beginning application developer (or the A1 <a href="http://www.scala-lang.org/node/8610" title="Scala Levels">Scala Level</a>, if you prefer). Chapters include:</p>
<ol>
<li>The Basics</li>
<li>Control Structures and Functions</li>
<li>Arrays</li>
<li>Maps and Tuples</li>
<li>Classes</li>
<li>Objects</li>
<li>Packages and Imports</li>
<li>Inheritance</li>
<li>Files and Regular Expressions</li>
</ol>
<p>If you enjoy this sampling, we hope you'll purchase Cay's full book where he further addresses intermediate and advanced Scala topics.</p>
<p>A practical book for a practical language -- it's a pairing we couldn't resist. Download your free copy from Typesafe <a href="http://typesafe.com/resources/scala-for-the-impatient" title="Scala for the Impatient">here</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 17 Aug 2011 09:00:00 UTC</pubDate>
                <title>Akka: The Future is here!</title>
                <link>http://typesafe.com/blog/akka-the-future-is-here</link>
                <guid>http://blog.typesafe.com/akka-the-future-is-here</guid> 
                <description>
                    <![CDATA[<p>by Viktor Klang</p>
<p>Futures are a neat way to use multiple cores without having to worry about managing specific threads or tasks. If you have some work that you want to get done while you get on with something else, then you simply create one or more Future(s) and give them the work to do in the form of a function that returns a result. Later you can test the Future for completion and pick up the result. An elegant way to get work done that you need in the Future!</p>
<p><a href="http://typesafe.com/technology/akka" title="Akka">Akka</a>, part of the <a href="http://typesafe.com/stack">Typesafe Stack</a>, has had a <a href="http://en.wikipedia.org/wiki/Future_(programming)" title="Future (programming) on Wikipedia">Future</a> implementation for a long time. It&rsquo;s so useful we decided to put a major effort into enhancing the capability, making it faster, more scalable and more intuitive to use. Key parts of the underpinning code used locks and blocking to ensure the integrity of the multi-threaded execution. These do not scale well in multi processor environments, as processors must wait while contentions are resolved. So we spent a lot of time to create a not-so-obvious non-blocking alternative. With the new implementation, things scale better and execution time is faster.</p>
<p>Comprehensions are the way we Scala programmers tend to think about doing things on collections. It is one of the function styles that leads to concise and easy to read code. We re-thought the Futures library to facilitate using Comprehensions and the more typical Scala &ldquo;foreach&rdquo; pattern, You can now handle sequences in an intuitive non-blocking way. We have found it a whole lot more powerful way to express our intentions.</p>
<p>Now let&rsquo;s take a detailed look how the changes look at the code level:</p>
<ol>
<li> On <code>akka.dispatch.Futures</code> there are new, Java API methods named "<code>future</code>" to use <code>Callables</code> that are executed on another thread to produce the result in a <code>Future</code>. This means that they are non-blocking and you have the option to specify which <code>Dispatcher</code> will execute your callable.</li>
<li> <code>Futures.awaitAll</code> has been deprecated in favor of: <code>futures.foreach(_.await)</code></li>
<li> <code>Futures.awaitOne</code> has been deprecated in favor of: <code>firstCompletedOf(futures).await</code>. Because <code>firstCompletedOf</code> is non-blocking, and <code>await</code> is blocking, it's better if this is not encouraged by the API</li>
<li> <code>Futures.awaitMap</code> has been deprecated in favor of: <code>futures map { f =&gt; fun(f.await) }</code>. This is because <code>Future</code> now supports a non-blocking map, which wasn't the case before, so you'd have to await before mapping</li>
<li> There is now a Java API version of <code>Futures.reduce</code>.</li>
<li> <strong>New!</strong> The <code>Futures.sequence</code> method takes a <code>Traversable[Future[T]]</code> and non-blockingly returns a <code>Future[Traversable[T]]</code>.</li>
<li> <strong>New!</strong> The <code>Futures.traverse</code> method transforms a <code>Traversable[A]</code> to a <code>Future[Traversable[B]]</code> using a provided function from <code>A</code> to <code>Future[B]</code>. This is a great way of performing "map" in parallel.</li>
<li> Future has now transformed into being isomorphic to dataflow variables. In recognition of this, we've added the key methods of <code>DataFlowVariable</code> to <code>Future</code>. This includes:
<div class="CodeRay">
  <div class="code"><pre>apply:
val f: Future[Int] = ...
val i = f() // Logically f.await.resultOrException.get
    
&lt;&lt;:
val f: CompletableFuture[Int] = ... // Write side of Future, compare with the concept of Promise, or DataFlowVariable
f &lt;&lt; 5 // Sets the value 5 into f, since CompletableFutures can only be written once, they act like dataFlowVariables
f &lt;&lt; otherF // You can also set the value to the value of another Future, this will be done when that Future is completed
            // same behavior as CompletableFuture.completeWith(f: Future[...])</pre></div>
</div>

The above two methods are intended for usage within the <code>Future.flow</code> method, like this:
<div class="CodeRay">
  <div class="code"><pre>import Future.flow
def add(a: Future[Int], b: Future[Int]): Future[Int] = flow { a() + b() }</pre></div>
</div>

This uses Continuation Passing Style with Delimited Continuations under the hood, to be able to write code that looks like it's blocking but it reality it isn't.</li>
<li><strong>New!</strong> <code>Future</code> now sports a couple of new methods:
<div class="CodeRay">
  <div class="code"><pre>get: //Warning! Blocking
  val f: Future[Int] = ...
  f.get // Semantically f.await.resultOrException.get but for use in a non &quot;flow&quot; context
    
value:
  val f: Future[Int] = ...
  val v: Option[Either[Throwable, Int]] = f.value // The current value of the Future, None if no value, and Left(error) or Right(result) otherwise

onResult:
  val f: Future[Any] = ...
  f onResult {
    case &quot;foo&quot; =&gt; doSomething
    case 6 =&gt; doSomethingElse
    case SomeRegex(param) =&gt; doSomethingOther
    case _ =&gt; doAnything
  } // Applies the specified partial function to the result of the future when it is completed with a result

recover:
  val f: Future[Any] = ...
  val result = f recover {
    case n: NumberFormatException =&gt; 0
  } // Returns a new future that when the first future has been completed with an exception, will contain the transformed result&quot;     

onException:
  val f: Future[Any] = ...
  f onException {
    case npe: NullPointerExcep =&gt; doSomething
    case 6 =&gt; doSomethingElse
    case SomeRegex(param) =&gt; doSomethingOther
    case _ =&gt; doAnything
  } // Applies the specified partial function to the result of the future when it is completed with an exception

onTimeout:
  val f: Future[Any] = ...
  f onTimeout {
     future =&gt; doSomethingWhenTimeout(future)
  }</pre></div>
</div>

</li>
<li> <strong>New!</strong> <code>Future</code> is now fully monadic so it can be used in for-comprehensions; all methods: map, flatMap, filter and foreach are non-blocking</li>
</ol>
<p>These are exciting times. With Typesafe and Akka, the Future is here!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 12 Jul 2011 09:31:00 UTC</pubDate>
                <title>Akka: One Dispatcher to Rule Them All</title>
                <link>http://typesafe.com/blog/akka-one-dispatcher-to-rule-them-all</link>
                <guid>http://blog.typesafe.com/akka-one-dispatcher-to-rule-them-all</guid> 
                <description>
                    <![CDATA[<p>by Viktor Klang</p>
<p>In this post I'll talk about the updated dispatcher strategy that is new with <a href="http://typesafe.com/technology/akka" title="Akka">Akka</a> 1.1.</p>
<p>For those of you who don't know what an Akka Dispatcher is - it's the <strong>engine</strong> of Akka, the thing that makes it tick, the thing that makes sure that the available CPU resources are optimally divided between the things that needs to be executed.  In other words, it's at the heart of Akka's concurrency model.</p>
<p>Here's what is new in Dispatchers with Akka 1.1:</p>
<ol>
<li> All Dispatchers in Akka core are now built on top of the <code>ExecutorBasedEventDrivenDispatcher</code>, which is    a very versatile and high-performance dispatcher implementation.     This means that any performance improvements that are made in that will cascade to all the others. </li>
<li>A <code>ThreadBasedDispatcher</code> is a dispatcher that only has one <code>Thread</code> in its thread pool, and every <code>ThreadBasedDispatcher</code> can only be used by one actor instance. This ensures that the actor will not be CPU starved by other actors.    Also, it will deallocate its thread after a specified timeout, and will require it when needed, so as not to hog scarce resources. </li>
<li>The <code>ExecutorBasedWorkStealingDispatcher</code> now redistributes work to actors that use the same dispatcher and that do not currently have any messages the mailbox. </li>
<li><code>HawtDispatcher</code> has been moved to a compatibility JAR in Akka modules, for those who want to keep using it.    Worth noting is that the <code>ExecutorBasedEventDrivenDispatcher</code> is more performant and way more tunable,    and <code>HawtDispatcher</code> does not support some of the methods in the <code>MessageDispatcher</code> contract, like <code>getMailboxSize</code>. </li>
<li>There is a new dispatcher, called <code>PriorityExecutorBasedEventDrivenDispatcher</code>, that allows you to supply    it with a <code>Comparator</code> that will determine the processing order of messages sent to actors that use this dispatcher. </li>
<li>As a consequence of having all dispatchers in akka-actor use the same base, they all support the same basic configuration options. </li>
<li>You can now write your own dispatcher, or extend any of the built-in ones, and be able to configure it    from the Akka configuration file, by creating a class that extends <code>MessageDispatcherConfigurator</code> and then in the conf file,    instead of
<div class="CodeRay">
  <div class="code"><pre>type = &quot;GlobalExecutorBasedEventDriven&quot;</pre></div>
</div>

or similar, you enter
<div class="CodeRay">
  <div class="code"><pre>type = &quot;my.own.dispatcher.configurator.FQN&quot;</pre></div>
</div>

And then Akka will load your dispatcher configurator and will use that to create the dispatcher instance. </li>
<li>Dispatchers can now be used to execute blocks of code that will compute the result of a <code>Future</code>, which is very low in overhead.
<div class="CodeRay">
  <div class="code"><pre>object Future {
  /**
   * This method constructs and returns a Future that will eventually hold the result of the execution of the supplied body
   * The execution is performed by the specified Dispatcher.
   */
  def apply[T](body: =&gt; T, timeout: Long = Actor.TIMEOUT)(implicit dispatcher: MessageDispatcher): Future[T]
}</pre></div>
</div>

Scala example:
<div class="CodeRay">
  <div class="code"><pre>val f = Future(someThunk)/*(someDispatcher)*/</pre></div>
</div>

Java example:
<div class="CodeRay">
  <div class="code"><pre>import static akka.dispatch.Futures.future;
Future f = future(someCallableThatReturnsInteger/*, someDispatcher*/);</pre></div>
</div>

</li>
<li>There has been a lot of effort made to optimize the <code>ExecutorBasedEventDrivenDispatcher</code>, so just by upgrading to Akka 1.1 you'll get an extra performance boost versus previous versions.</li>
</ol>
<p>To sum things up: Faster, stronger, smaller, and more flexible. &nbsp;One dispatcher to rule them all.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 07 Jul 2011 06:00:00 UTC</pubDate>
                <title>Akka and the Java Memory Model </title>
                <link>http://typesafe.com/blog/akka-and-the-java-memory-model</link>
                <guid>http://blog.typesafe.com/akka-and-the-java-memory-model</guid> 
                <description>
                    <![CDATA[<p>by Peter Veentjer</p>
<p>A major benefit of using the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a>, including Scala and Akka, is that it simplifies the process of writing concurrent software. &nbsp;This article discusses how the Typesafe Stack, and Akka in particular, approaches shared memory in concurrent applications.</p>
<p><strong>The Java Memory Model</strong></p>
<p>Prior to Java 5, the Java Memory Model (JMM) was ill defined. It was possible to get all kinds of strange results when shared memory was accessed by multiple threads, such as:</p>
<ul>
<li>a thread not seeing values written by other threads: a <strong>visibility problem</strong></li>
<li>a thread observing 'impossible' behavior of other threads, caused by instructions not being executed in the order expected: an <strong>instruction reordering problem</strong>. </li>
</ul>
<p>With the implementation of <a href="http://www.jcp.org/en/jsr/detail?id=133">JSR 133</a> in Java 5, a lot of these issues have been resolved. The JMM is a set of rules based on the "happens-before" relation, which constrain when one memory access must happen before another, and conversely, when they are allowed to happen out of order. Two examples of these rules are:</p>
<ul>
<li><strong>The monitor lock rule</strong>: a release of a lock happens before every subsequent acquire of the same lock. </li>
<li><strong>The volatile variable rule</strong>: a write of a volatile variable happens before every subsequent read of the same volatile variable </li>
</ul>
<p>Although the JMM can seem complicated, the specification tries to find a balance between ease of use and the ability to write performant and scalable concurrent data structures.</p>
<p><strong>Actors and the Java Memory Model</strong></p>
<p>With the Actors implementation in Akka, there are two ways multiple threads can execute actions on shared memory:</p>
<ul>
<li><strong>If a message is sent to an actor (e.g. by another actor).</strong>&nbsp;In most cases messages are immutable, but if that message is not a properly constructed immutable object, without a "happens before" rule, it would be possible for the receiver to see partially initialized data structures and possibly even values out of thin air (longs/doubles). </li>
<li><strong>If an actor makes changes to its internal state while processing a message, and accesses that state while processing another message moments later.</strong>&nbsp;It is important to realize that with the actor model you don't get any guarantee that the same thread will be executing the same actor for different messages. </li>
</ul>
<p>To prevent visibility and reordering problems on actors, Akka guarantees the following two "happens before" rules:</p>
<ul>
<li><strong>The actor send rule</strong>: the send of the message to an actor happens before the receive of that message by the same actor. </li>
<li><strong>The actor subsequent processing rule</strong>: processing of one message happens before processing of the next message by the same actor. </li>
</ul>
<p>Both rules only apply for the same actor instance and are not valid if different actors are used.</p>
<p><strong>STM and the Java Memory Model</strong></p>
<p>Akka's Software Transactional Memory (STM) also provides a "happens before" rule:</p>
<ul>
<li><strong>The transactional reference rule</strong>: a successful write during commit, on an transactional reference, happens before every subsequent read of the same transactional reference. This rule looks a lot like the 'volatile variable' rule from the JMM.</li>
</ul>
<p>Currently the Akka STM only supports deferred writes, so the actual writing to shared memory is deferred until the transaction commits. Writes during the transaction are placed in a local buffer (the writeset of the transaction) and are not visible to other transactions. That is why dirty reads are not possible.</p>
<p>How these rules are realized in Akka is an implementation detail and can change over time, and the exact details could even depend on the used configuration. But they will build on the other JMM rules like the monitor lock rule or the volatile variable rule.  This means that you, the Akka user, do not need to worry about adding synchronization to provide such a "happens before" relation, because it is the responsibility of Akka. So you have your hands free to deal with your business logic, and the Akka framework makes sure that those rules are&nbsp;guaranteed on your behalf.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Tue, 28 Jun 2011 03:19:00 UTC</pubDate>
                <title>Upcoming Typesafe Events</title>
                <link>http://typesafe.com/blog/upcoming-typesafe-events</link>
                <guid>http://blog.typesafe.com/upcoming-typesafe-events</guid> 
                <description>
                    <![CDATA[<p>Members of the Typesafe team will be participating in a number of Scala and Java community events in the coming weeks.</p>
<ul>
<li><a href="http://scalathon.org" title="Scalathon">Scalathon</a>,&nbsp;The International Scala Hackathon will be held July 16-17 at the University of Pennsylvania in Philadelphia, PA. Scalathon will feature a variety of short talks focused on helping Scala developers contribute to the language and its libraries, as well as two solid days of group hacking. Typesafe is a sponsor of the event, and Paul Phillips and Mark Harrah from Typesafe will be giving talks on scalac and sbt.</li>
<li><a href="http://www.oscon.com/oscon2011/public/content/java" title="OSCON Java 2011">OSCON Java 2011</a>, a new sub-conference devoted to the Java ecosystem co-located with the OSCON conference July 25-27 in Portland, OR. Typesafe founder and Scala creator Martin Odersky will deliver the a <a href="http://www.oscon.com/oscon2011/public/schedule/grid/java" title="OSCON Java 2011 Schedule">keynote</a>&nbsp;on Scala, and there will be presentations on Akka and Scala throughout the day. &nbsp;A 20% discount on your registration is available with code "os11fos".</li>
</ul>
<p>We hope to see you in Philadelphia, Portland, or other Scala community events this summer!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 10 Jun 2011 06:30:00 UTC</pubDate>
                <title>Integrating sbt and Eclipse </title>
                <link>http://typesafe.com/blog/integrating-sbt-and-eclipse</link>
                <guid>http://blog.typesafe.com/integrating-sbt-and-eclipse</guid> 
                <description>
                    <![CDATA[<p>by Heiko Seeberger</p>
<p>Recently the revamped version 0.10 of the <a href="https://github.com/harrah/xsbt/wiki">Simple Build Tool (sbt)</a> was released. We are also closing in on a final 2.0.0 release of the <a href="http://download.scala-ide.org/">Scala IDE for Eclipse</a> that will hopefully bring the age of limited IDE support for Scala to an end. Having these two great tools at hand, we certainly need integration capabilities. The <a href="https://github.com/typesafehub/sbteclipse">sbteclipse</a> project aims at that very goal by providing a plugin for sbt that makes it possible to create Eclipse project files from an sbt project.</p>
<p>The current version 1.1 of sbteclipse, which requires sbt 0.10 or later, provides the additional sbt command <code>eclipse</code> which automatically creates Eclipse <code>.project</code> and <code>.classpath</code> files. Using the optional argument <code>create-src</code> will additionally create the source folders of the sbt project, e.g. <code>src/main/scala</code>. Of course this also works for multi-module projects. In such a case the root project often is just a folder and not a &ldquo;proper&rdquo; project. Therefore the optional argument <code>skip-root</code> can be given to prevent the Eclipse project files for the root project from being created.</p>
<p>As soon as the Eclipse project files are in place, the &ldquo;Import...&rdquo; wizard of Eclipse can be used to import &ldquo;existing projects into workspace&rdquo;. It is strongly recommended not to copy these projects into the workspace, i.e. simply leave the relevant checkbox unchecked. Otherwise the projects will be duplicated and possibly diverge on the long run.</p>
<p>In order to &ldquo;install&rdquo; sbteclipse as a general plugin which is available to all sbt projects, the following <code>build.sbt</code> file has to be created in the directory <code>~/.sbt/plugins</code>:</p>
<div class="CodeRay">
  <div class="code"><pre>resolvers += {
  val typesafeRepoUrl = new java.net.URL(&quot;http://repo.typesafe.com/typesafe/releases&quot;)
  val pattern = Patterns(false, &quot;[organisation]/[module]/[sbtversion]/[revision]/[type]s/[module](-[classifier])-[revision].[ext]&quot;)
  Resolver.url(&quot;Typesafe Repository&quot;, typesafeRepoUrl)(pattern)
}

libraryDependencies &lt;&lt;= (libraryDependencies, sbtVersion) { (deps, version) =&gt; 
  deps :+ (&quot;com.typesafe.sbteclipse&quot; %% &quot;sbteclipse&quot; % &quot;1.1&quot; extra(&quot;sbtversion&quot; -&gt; version))
}</pre></div>
</div>

<p>We hope that you find sbteclipse helpful and are looking forward to your comments. Please report any issues or enhancement requests via the project&rsquo;s <a href="https://github.com/typesafehub/sbteclipse/issues">issue tracker</a>.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Wed, 08 Jun 2011 07:25:00 UTC</pubDate>
                <title>Recap of Scala Days </title>
                <link>http://typesafe.com/blog/recap-of-scala-days</link>
                <guid>http://blog.typesafe.com/recap-of-scala-days</guid> 
                <description>
                    <![CDATA[<p>by Martin Odersky</p>
<p>It's been a busy ten days in Palo Alto. I gave the <a href="http://typesafe.com/products/training" title="Typesafe Training">Advanced Scala course</a> for Typesafe at Stanford, was in a lot of meetings and met a great number of interesting people. Interest in Scala and Akka is growing at a very rapid pace. You can literally feel it in the air.</p>
<p>The highlight of this visit was clearly <a href="http://days2011.scala-lang.org/">Scala Days 2011</a>, which was organized in the Stanford Alumni Center. The environment was better than almost any conference I have been to: Large lecture theaters, generous spaces to hang out and chat, catering around the clock. Of course, the most important part of a conference are the people attending it. There were 260 this time; the conference was sold out at that number (the previous <a href="http://days2010.scala-lang.org/" title="Scala Days 2010">Scala Days 2010</a> conference at EPFL was also sold out at 150 attendees).</p>
<p>The program this year consisted of four tracks of talks, which made it very hard to choose what session to attend at any one time. Quite often, super interesting talks in similar domains were scheduled at the same time. For instance, I had to choose between Jonas Bon&eacute;r's talk on clustering in Akka and the talk by Josh Suereth and Daniel Mahler on Cascade, an integration of Google's FlumeJava in Scala collections. Which one to pick? Both are exciting developments in distributed computing. In the end, I went to the Cascade talk, and came away deeply impressed. The full power of Scala collections extended to tens of thousands of nodes via MapReduce. Not bad at all. Fortunately, all talks have been shot on video, and I am looking forward to catch up with the talks I missed once the videos are posted online.</p>
<p>Another talk by Googler Robert Hundt was a <a href="https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf">performance benchmark comparing C++/Scala/Java/Go</a>, which got quite a lot of <a href="http://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/">press attention</a> and <a href="http://www.reddit.com/r/programming/comments/hqkwk/google_paper_comparing_performance_of_c_java/">reddit comments</a></p>
<p>The trends of the conference are captured well in James Iry's tweet: <a href="http://twitter.com/#!/jamesiry/status/76861361765892096">"multi-core; distributed; applicative; and we're hiring"</a>. There was a lot of activity in parallelism and distributed computing. Three talks on Akka, three talks on parallel DSLs embedded by Stanford's pervasive parallelism lab in Scala, parallel and distributed collections, and several others more. A highlight of the conference was Doug Lea's keynote on JVM concurrency trends. He stressed the importance of dynamic scheduling as found in both microprocessor hardware and processors schedulers and the difficulty of static scheduling in GPUs.</p>
<p>Another difference from last year to this year concerned the number and quality of tech talks.  Last year, many talks were about initial explorations of a Scala project; this year most talks reported on some aspect of a sizable projet that was in production, or close to it. And those projects are growing, and spawning off new ones. It's a very good job market for Scala developers, and an exciting time to be part of the Scala community.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Sun, 29 May 2011 01:58:00 UTC</pubDate>
                <title>What&apos;s new in Akka 1.1</title>
                <link>http://typesafe.com/blog/whats-new-in-akka-11</link>
                <guid>http://blog.typesafe.com/whats-new-in-akka-11</guid> 
                <description>
                    <![CDATA[<p>by Viktor Klang</p>
<p>The <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a> includes the latest version of <a href="http://typesafe.com/technology/akka" title="Akka">Akka</a>&nbsp;event-driven middleware, version 1.1. &nbsp;For those of you who have been part of the Akka community for some time, I'd like to highlight some of what's new since Akka 1.0.</p>
<p>Enhancements with the Akka 1.1.x series of releases include:</p>
<ul>
<li>akka-actor now has 0 external dependencies. This means you can just pop it into any project you fancy without worrying about bloating your code base.</li>
<li>Many fewer dependencies in total for the akka modules. &nbsp;We've tried to remove as many external dependencies as possible, to keep a slim profile.</li>
<li>Dataflow API for Futures using delimited continuations, so you can write seemingly blocking code that will not block at runtime.</li>
<li>The Futures in Akka are now fully Monadic which means that they are ready for for-comprehension goodness.</li>
<li>Futures can now be executed natively on all the Dispatchers, avoiding the overhead of creating, starting and stopping an actor just to execute the body of a Future.</li>
<li>The dispatchers in akka-actor are now all based on the same foundation, and have received even more tuning, to provide extreme performance and reliability.</li>
<li>It is now possible to have priority of delivery of messages if needed. &nbsp;Just look for PriorityBasedEventDrivenDispatcher.</li>
<li>Akka now doesn't use any logging library internally, but publishes a lot of events to the EventHandler, so you can use whatever logging library you desire.</li>
<li>akka-remote has received a lot more love, tuning and hardening.</li>
<li>Akka now has a TestKit module that includes tools to aid in testing actor-based applications.</li>
<li>Tons of performance enhancements, fixes and new documentation.</li>
</ul>
<p>If you're an Akka veteran, we're sure that you'll appreciate many of these enhancements. &nbsp;If you're new to Akka (or Scala), check out our guide to <a href="http://typesafe.com/resources/getting-started" title="Getting Started with the Typesafe Stack">Getting Started with the Typesafe Stack</a>&nbsp;for a head start.</p>
<p>Happy hAkking!</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Fri, 20 May 2011 04:56:00 UTC</pubDate>
                <title>New Typesafe Training Course: Fast Track to Scala</title>
                <link>http://typesafe.com/blog/new-typesafe-training-course-fast-track-to-sc</link>
                <guid>http://blog.typesafe.com/new-typesafe-training-course-fast-track-to-sc</guid> 
                <description>
                    <![CDATA[<p>by Heiko Seeberger</p>
<p>Over the past few years I've had the opportunity to teach quite a few Scala courses, most recently alongside Martin Odersky and Paul Phillips as part of the team at Typesafe. A consistent theme in the feedback from these courses has been the value of immediately applying Scala concepts in hands-on programming exercises. Soon after I finished writing my German Scala book "<a href="http://entwickler-press.de/ep/psecom,id,2,buchid,224,p,0,_language,de.html" title="Durchstarten mit Scala">Durchstarten mit Scala</a>,&rdquo; Martin and I realized that the structure and depth of the topics in the book, and the consistent step-by-step case study used, would provide an excellent basis for a revised course.</p>
<p>And here we go: "<a href="http://typesafe.com/products/training">Fast Track to Scala</a>" is the all-new introductory course for Scala from Typesafe. It puts a strong focus on hands-on exercises &ndash; you will be writing code at least 50% of the time &ndash; and covers tooling like sbt and the Scala IDE for Eclipse, as well as test driven development with the specs2 framework. The core topics covered are:</p>
<ul>
<li>Overview</li>
<li>First steps with Scala</li>
<li>Basic object-oriented features</li>
<li>Testing in Scala</li>
<li>Collections and functional programming</li>
<li>For expressions and for loops</li>
<li>Inheritance and traits</li>
<li>Pattern matching</li>
<li>XML support</li>
</ul>
<p>For fast-paced audiences, there are also additional modules for advanced topics like implicit conversions and parameters, (tail) recursion, upper bounds and view bounds as well as real-world applications like writing to a relational database with ScalaQuery or using the Scala API for MongoDB.</p>
<p>I am very excited to give this new course for the first time on Tuesday May 31 and Wednesday June 1, the two days preceding the <a href="http://days2011.scala-lang.org/" title="Scala Days 2011">Scala Days 2011</a> conference at Stanford University. More information and registration for this course (as well as an advanced Scala course and a fast-track Akka course offered in the same venue) is available on the <a href="http://typesafe.com/products/training" title="Typesafe Training">training section of the Typesafe web site</a>.</p>
<p>I look forward to seeing many of you at Stanford.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Mon, 16 May 2011 04:36:00 UTC</pubDate>
                <title>Typesafe at Scala Days 2011</title>
                <link>http://typesafe.com/blog/typesafe-at-scala-days-2011</link>
                <guid>http://blog.typesafe.com/typesafe-at-scala-days-2011</guid> 
                <description>
                    <![CDATA[<p>
<p>by Phil Bagwell</p>
<p><a href="http://days2011.scala-lang.org/">Scala Days 2011</a>, coming up in just a few weeks on June 2-3, 2011 at Stanford University, is one of the most exciting Scala community events of the year. &nbsp;Nearly all of the Typesafe team will be there, and we&rsquo;re eager to connect with a broad subset of the Scala community, old and new. &nbsp;The Scala Days 2011 <a href="http://days2011.scala-lang.org/node/235">list of accepted talks and speakers</a> read like a &ldquo;who&rsquo;s who&rdquo; of the Scala world.</p>
<p>Members of the Typesafe staff will be talking about the new version of the Scala IDE for Eclipse and other components of the <a href="http://typesafe.com/stack">Typesafe Stack</a>. We&rsquo;ll tell you what we are doing at Typesafe to make Scala and Akka adoption easier and faster. And you&rsquo;ll have the chance to tell us what you think we should be doing to make it even easier still.</p>
<p>On May 31 and June 1, the two days preceding the conference, Typesafe will be offering <a href="http://typesafe.com/products/training">training courses</a> nearby on the Stanford campus. &nbsp;Martin Odersky, Heiko Seeberger and Viktor Klang will be giving introductory and advanced courses on Scala, as well as a fast-track course on Akka. If you or your colleagues want a fast introduction to Scala or Akka, or are starting advanced library design, this is a great opportunity for in-person training from the individuals at the center of the Scala world. &nbsp;<a href="http://typesafe.com/products/training">Learn more about the courses and register online</a> at the Typesafe web site.</p>
<p>The new Scala parallel collections to support concurrent and parallel processing are easy to use and offer a real boost to performance for many common applications. The designers, Alex, Tiark and I, will be at Scala Days to explain how they work and give tips on how to use them.</p>
<p>Speakers from many of the industry giants will be giving talks on their applications of Scala in commercial settings. The talks are being given by the "movers" who successful took Scala into new applications and are now sharing how it was done. As an attendee, you&rsquo;ll get to hear what works &ndash; and what doesn't &ndash; and join the conversation yourself.&nbsp;</p>
<p>On the research side of the agenda, you won&rsquo;t want to miss the talks on DSLs for heterogeneous computing. Speakers will introduce new concepts in this area, and report on the first practical applications. Already, impressive performance gains are becoming apparent, along with a startling reduction in lines of code. For developers in the multicore world exploring mixed use of CPUs and GPUs to crack big applications, this is the technology to watch. It shows big promise for the future and it is starting to pay off now.</p>
<p>Of course, Stanford is a beautiful and exciting setting for the training courses and conference. &nbsp;We look forward to seeing you there.</p>
<p />
</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 12 May 2011 02:45:00 UTC</pubDate>
                <title>Why Akka?</title>
                <link>http://typesafe.com/blog/why-akka</link>
                <guid>http://blog.typesafe.com/why-akka</guid> 
                <description>
                    <![CDATA[<p>by Jonas Bon&eacute;r</p>
<p>Twenty years ago, when people needed to solve a software scalability problem, the solution was almost always to &ldquo;scale up&rdquo; by purchasing an expensive multiprocessor server from Sun or IBM. Then, as commodity hardware grew cheaper and more powerful, the trend shifted towards &ldquo;scaling out&rdquo; by using clusters of less expensive servers. Today, with the arrival of commodity multicore CPUs and cloud computing, we face the dual challenge of scaling &ldquo;up and out&rdquo; at the same time.</p>
<p>I've been writing middleware systems for most of my career, through the transitions from &ldquo;scale up&rdquo; to &ldquo;scale out&rdquo; and back again, applying concurrency and distributed computing to solve scalability problems. Along the way, I've always felt that there must be a fundamentally better way to build scalable software. Finally, about three years ago, I decided to do something about it.&nbsp;</p>
<p>I created the Akka project with the vision of a runtime and programming model that would address the challenges of both multicore and distributed computing. Akka gives developers a unified way to build scalable and fault-tolerant software that can scale up on multicore systems, and scale out in distributed computing environments, which today often means in the cloud. Akka makes it possible to build software systems with reliability and high performance, without sacrificing developer joy and productivity.</p>
<p>In short, Akka is open source middleware for building highly concurrent, distributed and fault-tolerant systems on the JVM. Akka is built with Scala, but offers both Scala and Java APIs to developers.</p>
<p>At the heart of Akka is the concept of Actors, which provide an ideal model for thinking about highly concurrent and scalable systems. Writing concurrent systems using traditional low-level mechanism such as locks and threads is difficult. The resulting software is often hard to understand and maintain. The Actor model provides a higher-level alternative that is much easier to reason about. Actors also provide location transparency, in the sense that the user of an Actor does not need to know whether that Actor lives in the same process or on a different machine. This makes it simple to write software that can scale with the needs of the application. It also gives the runtime the freedom to provide services like adaptive load balancing, cluster rebalancing, replication and partitioning.</p>
<p>Importantly, Akka embraces Erlang&rsquo;s model for fault-tolerance, colloquially known as &ldquo;let it crash.&rdquo; This fault tolerance model works by organizing the various Actors in a system in a supervisor hierarchy such that each component is monitored by another, and restarted upon failure. The model has been used to great effect in the telecommunications equipment industry for years, as the foundation of highly available systems that can adaptively heal themselves while running.</p>
<p>The Actor model alone, while great for many use cases, do not solve all concurrency and scalability problems. By decomposing state into many discrete Actors, the model can introduce challenges for applications that require global consistency. To address this problem, Akka uses Software Transactional Memory (STM), which makes it possible to modify the state of many objects at once, reverting all changes if the transaction fails. In addition to STM, Akka provides several other concurrency abstractions such as Agents and Dataflow Concurrency.</p>
<p>Since the introduction of Akka, the project has attracted a tremendous community of users and contributors. In the past year, Akka has matured with a rich and cohesive set of modules that can be composed to solve a wide variety of business requirements. Now, as part of the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a>, we intend to take Akka to the next level with enterprise grade features and supporting commercial services.</p>
<p>We have big plans for Akka. This is just the beginning. And we look forward to partnering with the rest of the team at Typesafe to write the next chapter in software development.</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 12 May 2011 02:43:00 UTC</pubDate>
                <title>Why Scala?</title>
                <link>http://typesafe.com/blog/why-scala</link>
                <guid>http://blog.typesafe.com/why-scala</guid> 
                <description>
                    <![CDATA[<p>by Martin Odersky</p>
<p>The central drive behind Scala is to make life easier and more productive&nbsp;for the developer -- and that includes me. Scala does this with three&nbsp;principal techniques: It cuts down on boilerplate, so programmers can&nbsp;concentrate on the logic of their problems. It adds expressiveness, by&nbsp;tightly fusing object-oriented and functional programming concepts in&nbsp;one language. And it protects existing investments by running on&nbsp;the Java Virtual Machine and interoperating seamlessly with Java.</p>
<p>I have been involved with Java very early on, from Spring 1995, when&nbsp;it was still in alpha. My main contributions were the Espresso&nbsp;compiler, which became the core of Borland's <a href="http://en.wikipedia.org/wiki/JBuilder"><span class="s1">JBuilder</span></a>, the <span class="s1"><a href="http://pizzacompiler.sourceforge.net/">Pizza</a>&nbsp;</span>language which led to our work on <a href="http://lamp.epfl.ch/pizza/gj/"><span class="s1">GJ</span></a> and ultimately to Java 5&nbsp;generics, and the GJ compiler, which became Java's reference compiler&nbsp;<span class="s1"><a href="http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html">javac</a></span>, and which is used by almost every Java developer today.&nbsp;</p>
<p>About 10 years ago, I decided to take a step back and investigate what&nbsp;needed to be done to meet the next challenges in software&nbsp;development. Java was explicitly intended to be state of the accepted art&nbsp;when it came out in 1995: An object-oriented language with C-style&nbsp;sytax, single inheritance and interfaces. Since then programmers are&nbsp;increasingly facing new challenges for high-level domain modeling,&nbsp;rapid development, and, more recently, parallelism and concurrency. It&nbsp;seemed to me that a unification of the traditional object-oriented&nbsp;model with functional programming concepts was feasible&nbsp;and highly desirable to address those challenges. We first&nbsp;experimented with those concepts "in the lab", using an experimental&nbsp;language called <a href="http://lamp.epfl.ch/funnel/"><span class="s1">Funnel</span></a>. Once we were convinced we had the right mix of&nbsp;concepts, we decided to build a practical language on them, and that&nbsp;was the birth of Scala in 2003.&nbsp;</p>
<p>Scala took a risk in that, before it came out, the object-oriented&nbsp;and functional approaches to programming were largely&nbsp;disjoint; even today the two communities are still sometimes&nbsp;antagonistic to each other. But what the team and I have learned in&nbsp;our daily programming practice since then has fully confirmed our&nbsp;initial hopes. Objects and functions play extremely well together;&nbsp;they enable new, expressive programming styles which lend themselves&nbsp;to high-level domain modeling and and embedded domain-specific&nbsp;languages. Whether it's log-analysis at <a href="http://science.nasa.gov/missions/ladee/"><span class="s1">NASA</span></a>, contract modelling at&nbsp;<span class="s1"><a href="http://cufp.org/videos/scala-edf-trading-implementing-domain-specific-language-derivative-p">EDF</a></span>, or risk analysis at many of the largest financial institutions,&nbsp;Scala-based DSLs seem to spring up everywhere these days.</p>
<p>Scala's unique combination of features also made it an excellent basis&nbsp;for concurrent, parallel, and distributed computing, which is widely thought to be&nbsp;the next big challenge in software development. Scala has a lot to&nbsp;offer in that space: from implicit parallelism in <span class="s1"><a href="http://www.scala-lang.org/api/rc/scala/collection/parallel/package.html">parallel collections</a>&nbsp;</span>to explicit concurrency using <a href="http://akka.io/"><span class="s1">actors</span></a>, it offers a toolset to write scalable concurrent applications simpler and with more confidence in&nbsp;their correctness. Scala's functional programming genes are an&nbsp;advantage here, because every bit of mutable state is a potential&nbsp;liability when it comes to parallelism, concurrency, and distributed&nbsp;computing. Scala does not prevent traditional imperative solutions, but its design encourages users to search for more scalable functional&nbsp;alternatives.</p>
<p>But the language is also a joy to use outside these advanced&nbsp;domains. It lends itself to any programming task, from one-line&nbsp;commands in the Scala shell to large mission-critical systems. In a&nbsp;nutshell, why do we do Scala? So that people like Graham Tackley, at&nbsp;<span class="s1"><a href="http://www.guardian.co.uk/">The Guardian</a></span> can keep saying "We've found that Scala has enabled us to&nbsp;deliver things faster with less code. It reinvigorated the team."</p>]]>
                </description>
            </item>
        
            <item>
                <pubDate>Thu, 12 May 2011 02:40:00 UTC</pubDate>
                <title>Introducing Typesafe</title>
                <link>http://typesafe.com/blog/introducing-typesafe</link>
                <guid>http://blog.typesafe.com/introducing-typesafe</guid> 
                <description>
                    <![CDATA[<p>by Martin Odersky</p>
<p>Typesafe is a company that takes Scala and Akka to the next stage. In this blog I explain a bit why we founded the company and what role we see for it in the world of open source and enterprise software.</p>
<p>Scala has made a phenomenal progression from a research project to a rapidly expanding open source ecosystem that supports many mission critical applications in industry. Ten years ago, I started the design of the language that would become Scala. It was released in its first experimental version in 2003. Five years ago, a vibrant open source community started to form around the language, with projects such as <a href="http://liftweb.net/" title="Lift">Lift</a>, <a href="http://code.google.com/p/simple-build-tool/" title="sbt: Simple Build Tool">sbt</a>, <a href="http://www.scalatest.org/" title="ScalaTest">ScalaTest</a>, <a href="http://code.google.com/p/specs/" title="specs">specs</a>, <a href="http://scalaquery.org/" title="ScalaQuery">ScalaQuery</a>, <a href="http://squeryl.org/" title="squeryl">squeryl</a>, <a href="http://scalate.fusesource.org/" title="Scalate">Scalate</a>, and <a href="https://github.com/robey/kestrel" title="Kestrel">Kestrel</a>, to name just a few. Three years ago, high profile industrial adoption started, with Twitter migrating their core messaging queue to Scala. Today, there are more than 100,000 Scala users, and the technology plays a strategic role in a rapidly growing number of enterprises.</p>
<p>Akka was conceived just three years ago, and has seen explosive growth since. Jonas Bon&eacute;r started it as a fresh new approach to address the difficulties of writing scalable concurrent and distributed systems in enterprises. It grew to an extremely active open source project with many core contributors in just a couple of years. Akka clearly addresses a real need, because it is already being deployed by many companies, including some of the largest financial institutions, as a distributed computing backbone.</p>
<p>So far, both projects have been supported largely by volunteers, who have done an amazing job developing and delivering high quality tools and middleware. But given the increasingly strategic role of Scala and Akka in industry, we saw a need to put the effort on a more stable foundation. Scala and Akka users need the assurance that professional support for their systems will be available when they need it. Core contributors need to be given a stable setting where they can concentrate 100% on delivering steady improvements to the code base. That's why we decided to form Typesafe.</p>
<p>Typesafe essentially develops two types of software. On the one hand are the Scala language, core libraries, and Akka middleware. On the other hand, we are delivering a professional development environment, which includes the Scala IDE for Eclipse 2.0 and the sbt built tool. The Scala and Akka runtimes and development tools are bundled together in the <a href="http://typesafe.com/stack" title="Typesafe Stack">Typesafe Stack</a>, which provides an integrated package with one easy install. Each version of the stack will be supported as a certified, stable build via the <a href="http://typesafe.com/products/typesafe-subscription" title="Typesafe Subscription">Typesafe Subscription</a>. The aim is that, together, these efforts will complement the great language experience provided by Scala and the high performance architecture provided by Akka with first-class developer tools, simple deployment, and assured support. Typesafe also provides training and consulting to help users develop and deploy systems written in Scala or Akka.</p>
<p>Typesafe is very much an open source company. Everything we release today is open source, and we want to maintain and grow the open source communities supporting Scala and Akka. The aim is to bring these technologies to the mainstream, and I am confident that we have brought together a great team of people to help in doing that.</p>
<p>&nbsp;</p>]]>
                </description>
            </item>
        
    </channel>
</rss>