<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Solid Ninjas Blogging (Posts about schedule)</title><link>https://blog.solidninja.is/</link><description></description><atom:link href="https://blog.solidninja.is/categories/schedule.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Wed, 07 Aug 2019 14:58:09 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>scala.world conference notes</title><link>https://blog.solidninja.is/posts/scala-world-2016/</link><dc:creator>Vladimir Lushnikov</dc:creator><description>&lt;div&gt;&lt;div class="figure align-center"&gt;
&lt;a class="reference external image-reference" href="https://blog.solidninja.is/galleries/scala-world-2016/22_scala-world-2016.jpg"&gt;&lt;img alt="#scalahike" src="https://blog.solidninja.is/galleries/scala-world-2016/22_scala-world-2016.thumbnail.jpg"&gt;&lt;/a&gt;
&lt;p class="caption"&gt;Scala Hikers @ &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Scafell_Pike"&gt;Scarfell Pike&lt;/a&gt; - &lt;a class="reference external" href="https://blog.solidninja.is/galleries/scala-world-2016/"&gt;see here for more&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I attended the &lt;a class="reference external" href="https://scala.world"&gt;scala.world&lt;/a&gt; conference that took place in the Lake District between the 12th and 13th September 2016. These are some notes on the conference, mainly for the benefit of my colleagues but also as a convenient way to start off the SOLID Ninja blog.&lt;/p&gt;
&lt;div class="section" id="the-hiking"&gt;
&lt;h2&gt;The hiking&lt;/h2&gt;
&lt;p&gt;Notes on scala.world would not be complete without mentioning the hiking that took place over the preceding weekend. The Lake District weather gods were favourable throughout the conference which was unusual to say the least (at least if you live in England). On the Saturday there was an organized hike to &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Scafell_Pike"&gt;Scarfell Pike&lt;/a&gt; which is the tallest point in England and on Sunday there was a choice of cycling and hiking again. Needless to say even the "easy" route does not look like a bike ride through the Netherlands. &lt;a class="reference external" href="https://blog.solidninja.is/galleries/scala-world-2016/"&gt;Photos are here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The hiking was a great way to meet people and talk about life rather than &lt;a class="reference external" href="https://issues.scala-lang.org/browse/SI-2712"&gt;SI-2712&lt;/a&gt;...&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-conference"&gt;
&lt;h2&gt;The conference&lt;/h2&gt;
&lt;p&gt;The schedule was finally up on Monday morning about 4am - so the conference could begin!&lt;/p&gt;
&lt;p&gt;In no particular order, these are the talks/workshops I made notes on:&lt;/p&gt;
&lt;div class="section" id="martin-s-keynote"&gt;
&lt;h3&gt;Martin's Keynote&lt;/h3&gt;
&lt;p&gt;Martin Odersky was up first with a keynote titled &lt;cite&gt;Compilers are (in memory) databases&lt;/cite&gt; (which admittedly has been given before so check below for the YouTube video). It is very nice to see that &lt;a class="reference external" href="https://github.com/lampepfl/dotty/blob/master/src/dotty/tools/dotc/Compiler.scala"&gt;dotc&lt;/a&gt; has got lots of small, reasonable passes in the compiler rather than a few big monolithic passes.&lt;/p&gt;
&lt;div class="youtube-video"&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/WxyyJyB_Ssc?rel=0&amp;amp;wmode=transparent" frameborder="0" allow="encrypted-media" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="section" id="cbt"&gt;
&lt;h3&gt;CBT&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/cvogt/cbt"&gt;CBT&lt;/a&gt; is in my opinion the &lt;strong&gt;S&lt;/strong&gt;(imple)&lt;strong&gt;B&lt;/strong&gt;(uild)&lt;strong&gt;T&lt;/strong&gt;(ool) that should have been - Christian did a great talk explaining how cbt emerged from the design of &lt;a class="reference external" href="http://www.scala-sbt.org/"&gt;SBT&lt;/a&gt;. The slides are not yet up - here is the best I could do:&lt;/p&gt;

&lt;div id="slides_2258d9f0dce74fc59d7ec8ec4b241dfa" class="carousel slide" data-ride="carousel"&gt;
    &lt;ol class="carousel-indicators"&gt;
            &lt;li data-target="#slides_2258d9f0dce74fc59d7ec8ec4b241dfa" data-slide-to="0" class="active"&gt;
            &lt;/li&gt;&lt;li data-target="#slides_2258d9f0dce74fc59d7ec8ec4b241dfa" data-slide-to="1"&gt;
            &lt;/li&gt;&lt;li data-target="#slides_2258d9f0dce74fc59d7ec8ec4b241dfa" data-slide-to="2"&gt;
    &lt;/li&gt;&lt;/ol&gt;
    &lt;div class="carousel-inner"&gt;
                &lt;div class="carousel-item active"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/61_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
                &lt;div class="carousel-item"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/62_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
                &lt;div class="carousel-item"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/63_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
    &lt;/div&gt;
      &lt;a class="carousel-control-prev" href="https://blog.solidninja.is/posts/scala-world-2016/#slides_2258d9f0dce74fc59d7ec8ec4b241dfa" role="button" data-slide="prev"&gt;
    &lt;span class="carousel-control-prev-icon" aria-hidden="true"&gt;&lt;/span&gt;
    &lt;span class="sr-only"&gt;Previous&lt;/span&gt;
  &lt;/a&gt;
  &lt;a class="carousel-control-next" href="https://blog.solidninja.is/posts/scala-world-2016/#slides_2258d9f0dce74fc59d7ec8ec4b241dfa" role="button" data-slide="next"&gt;
    &lt;span class="carousel-control-next-icon" aria-hidden="true"&gt;&lt;/span&gt;
    &lt;span class="sr-only"&gt;Next&lt;/span&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;CBT looks very promising because:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;The model is much simpler than SBT so you do not need to know about &lt;a class="reference external" href="http://www.scala-sbt.org/release/docs/Scopes.html"&gt;scope axes&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;I doubt anyone will be writing a &lt;a class="reference external" href="https://www.manning.com/books/sbt-in-action"&gt;book&lt;/a&gt; about cbt though...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;It's fast! (both to startup and resolve dependencies)&lt;ul&gt;
&lt;li&gt;No ivy involvement helps a lot in this respect, though support for &lt;a class="reference external" href="https://github.com/alexarchambault/coursier"&gt;coursier&lt;/a&gt; is currently not in a good shape&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;There is no DSL - everything is a project and tasks are functions, so you can write your own plugins etc. the same way you always write code (in Scala)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="generic-derivation"&gt;
&lt;h3&gt;Generic derivation&lt;/h3&gt;
&lt;p&gt;I did not go to this one, but Travis Brown did an interesting talk on &lt;a class="reference external" href="https://meta.plasm.us/slides/scalaworld/#1"&gt;Generic derivation&lt;/a&gt; (in &lt;a class="reference external" href="https://github.com/travisbrown/circe-derivation"&gt;Circe&lt;/a&gt;, which is a &lt;a class="reference external" href="https://github.com/travisbrown/circe"&gt;fast json library&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="the-type-astronaut-s-guide-to-shapeless"&gt;
&lt;h3&gt;The Type Astronaut's Guide to Shapeless&lt;/h3&gt;
&lt;p&gt;With a title like that it was going to be hard to disappoint, and Dave Gurnell's talk about &lt;a class="reference external" href="https://github.com/milessabin/shapeless"&gt;shapeless&lt;/a&gt; was very good:&lt;/p&gt;

&lt;div id="slides_b68a62326bb04179ba859673c3691d90" class="carousel slide" data-ride="carousel"&gt;
    &lt;ol class="carousel-indicators"&gt;
            &lt;li data-target="#slides_b68a62326bb04179ba859673c3691d90" data-slide-to="0" class="active"&gt;
            &lt;/li&gt;&lt;li data-target="#slides_b68a62326bb04179ba859673c3691d90" data-slide-to="1"&gt;
            &lt;/li&gt;&lt;li data-target="#slides_b68a62326bb04179ba859673c3691d90" data-slide-to="2"&gt;
            &lt;/li&gt;&lt;li data-target="#slides_b68a62326bb04179ba859673c3691d90" data-slide-to="3"&gt;
    &lt;/li&gt;&lt;/ol&gt;
    &lt;div class="carousel-inner"&gt;
                &lt;div class="carousel-item active"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/64_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
                &lt;div class="carousel-item"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/65_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
                &lt;div class="carousel-item"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/66_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
                &lt;div class="carousel-item"&gt;&lt;img class="d-block w-100" src="https://blog.solidninja.is/galleries/scala-world-2016/67_scala-world-2016.jpg" alt=""&gt;&lt;/div&gt;
    &lt;/div&gt;
      &lt;a class="carousel-control-prev" href="https://blog.solidninja.is/posts/scala-world-2016/#slides_b68a62326bb04179ba859673c3691d90" role="button" data-slide="prev"&gt;
    &lt;span class="carousel-control-prev-icon" aria-hidden="true"&gt;&lt;/span&gt;
    &lt;span class="sr-only"&gt;Previous&lt;/span&gt;
  &lt;/a&gt;
  &lt;a class="carousel-control-next" href="https://blog.solidninja.is/posts/scala-world-2016/#slides_b68a62326bb04179ba859673c3691d90" role="button" data-slide="next"&gt;
    &lt;span class="carousel-control-next-icon" aria-hidden="true"&gt;&lt;/span&gt;
    &lt;span class="sr-only"&gt;Next&lt;/span&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;The worked example about doing automated case class migration (using &lt;tt class="docutils literal"&gt;HList&lt;/tt&gt; union and intersection) in particular was both useful and easy to follow.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/davegurnell/shapeless-guide/blob/develop/dist/shapeless-guide.pdf"&gt;The type astronaut's guide&lt;/a&gt; is currently in development on GitHub.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="a-whirlwind-tour-of-scala-meta"&gt;
&lt;h3&gt;A whirlwind tour of scala.meta&lt;/h3&gt;
&lt;p&gt;Ólafur Páll Geirsson presented a workshop on using &lt;a class="reference external" href="http://scalameta.org/"&gt;scala.meta&lt;/a&gt; to automatically transform scala programs (in one example, by replacing usages of &lt;tt class="docutils literal"&gt;Throwable&lt;/tt&gt; with the &lt;tt class="docutils literal"&gt;NonFatal(_)&lt;/tt&gt; extractor):&lt;/p&gt;
&lt;div class="youtube-video"&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/-l7pV0sFq1c?rel=0&amp;amp;wmode=transparent" frameborder="0" allow="encrypted-media" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;p&gt;At this point the Internet access at the workshop was not very good, but luckily the workshop is available here: &lt;a class="reference external" href="https://olafurpg.github.io/scala.meta-workshop/"&gt;scala.meta-workshop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="https://www.youtube.com/watch?v=IPnd_SZJ1nM"&gt;Metaprogramming 2.0&lt;/a&gt; talk is worth watching as well.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="talks-about-the-free-monad"&gt;
&lt;h3&gt;Talks about the &lt;tt class="docutils literal"&gt;Free&lt;/tt&gt; Monad&lt;/h3&gt;
&lt;p&gt;There were a few talks/workshops on the &lt;a class="reference external" href="http://underscore.io/blog/posts/2015/04/14/free-monads-are-simple.html"&gt;Free Monad&lt;/a&gt; which is (and has been) a fairly hot topic in the past year.&lt;/p&gt;
&lt;p&gt;Raul Raja presented a talk &lt;a class="reference external" href="https://speakerdeck.com/raulraja/run-wild-run-free"&gt;Run wild, Run free&lt;/a&gt; which gives a very natural exploration of the problem of composing your computations starting with &lt;tt class="docutils literal"&gt;for&lt;/tt&gt;-comprehensions and exploring until you arrive at the free monad.&lt;/p&gt;
&lt;p&gt;Pawel Szulc also gave a workshop on free monads: &lt;a class="reference external" href="https://github.com/rabbitonweb/make-your-programs-free"&gt;make-your-programs-free&lt;/a&gt;. The core idea is that while actually implementing the interpreter you get to a point where you are wrapping higher-level operations with low-level 'plumbing' code. One way of solving this problem is by definining an interpreter from a higher-level algebra to a lower-level algebra and implementing them separately (which you can see if you follow the commits in the workshop).&lt;/p&gt;
&lt;p&gt;There were plenty of mentions to libraries that help you with free monads: &lt;a class="footnote-reference" href="https://blog.solidninja.is/posts/scala-world-2016/#id11" id="id4"&gt;[1]&lt;/a&gt; &lt;a class="footnote-reference" href="https://blog.solidninja.is/posts/scala-world-2016/#id12" id="id5"&gt;[2]&lt;/a&gt; and it would not be fair to not talk about the downsides of &lt;tt class="docutils literal"&gt;Free&lt;/tt&gt; as well &lt;a class="footnote-reference" href="https://blog.solidninja.is/posts/scala-world-2016/#id13" id="id6"&gt;[3]&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="tuesday-keynote"&gt;
&lt;h3&gt;Tuesday Keynote&lt;/h3&gt;
&lt;p&gt;The keynote on Tuesday was Dick Wall and Josh Suereth talking about all the uses of &lt;tt class="docutils literal"&gt;for&lt;/tt&gt;s: &lt;a class="reference external" href="https://github.com/dickwall/use-the-fors-luke"&gt;Use the fors, Luke&lt;/a&gt;. It started off a super friendly to beginners and at the end also addressed the reasons why perhaps a &lt;tt class="docutils literal"&gt;for&lt;/tt&gt; is not the ultimate tool for Monad composition (shhh, that's a lie). Unfortunately slides/video are not up yet.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="managing-your-resources"&gt;
&lt;h3&gt;Managing your Resources&lt;/h3&gt;
&lt;p&gt;This talk was one of the highlights of the conference for me I think - resource management is one of the problems in Scala that is difficult to solve because of a lack of a &lt;a class="reference external" href="https://doc.rust-lang.org/book/lifetimes.html"&gt;lifetime system&lt;/a&gt; as found in &lt;a class="reference external" href="https://www.rust-lang.org"&gt;Rust&lt;/a&gt; say. And while there are more elegant ways to &lt;tt class="docutils literal"&gt;close()&lt;/tt&gt; your resources after yourself, most of the solutions require either some wrapping construct (such as a &lt;tt class="docutils literal"&gt;for&lt;/tt&gt; or a monad or a simple loan-pattern style closure). It is rare to see such simplicity (in Scala):&lt;/p&gt;
&lt;div class="youtube-video"&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/MV2eJkwarT4?rel=0&amp;amp;wmode=transparent" frameborder="0" allow="encrypted-media" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class="reference external" href="https://github.com/densh/talks/blob/master/2016-09-XX-scoped-resource-management.key"&gt;The presentation is available&lt;/a&gt; but it's in Keynote format which GitHub does not have a reader for.&lt;/p&gt;
&lt;p&gt;Here is a working example from the presentation:&lt;/p&gt;
&lt;script src="https://gist.github.com/1348bfb98928ba10ab18c5d7b51ee87f.js"&gt;&lt;/script&gt;&lt;noscript&gt;&lt;pre class="literal-block"&gt;
object MyApp extends App {
  type Resource = java.lang.AutoCloseable

  final class Scope extends Resource {
    final var stack = List.empty[Resource]

    def acquire[R &amp;lt;: Resource](res: R): R = {
      stack = res :: stack
      res
    }

    def close(): Unit = stack match { 
      case Nil =&amp;gt; ()
      case head :: tail =&amp;gt; 
        stack = tail
        try head.close()
        finally close()
    }
  }

  object Scope {
    def apply[T](f: Scope =&amp;gt; T): T = {
      val scope = new Scope
      try f(scope)
      finally scope.close()
    }
  }

  final class SafeWriter()(implicit sc: Scope) extends Resource {
    // vladimir-lu: java.io.PrintWriter is unsafe and should not be used in demos :P
    sc.acquire(this)
    
    private val writer = new java.io.StringWriter()
    println(s"acquired writer '$writer'")

    def write(msg: String): Unit = writer.write(msg)
    
    def close(): Unit = {
      println(s"releasing '$writer'")
      writer.close()
    }
  }

  Scope { implicit sc =&amp;gt; 
    val writer = new SafeWriter()
    writer.write("we want schedules")
    throw new RuntimeException("OOPS")
  }
}
&lt;/pre&gt;
&lt;/noscript&gt;&lt;/div&gt;
&lt;div class="section" id="scalafiddle"&gt;
&lt;h3&gt;ScalaFiddle&lt;/h3&gt;
&lt;p&gt;Scala officially entered the stage of languages with an online interactive sandbox, called &lt;a class="reference external" href="https://scalafiddle.io/sf/n6lR8Xh/2"&gt;ScalaFiddle&lt;/a&gt;. Play with it - it has decent highlighting, speed and libraries that you can use just by clicking and importing.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="tales-from-compiling-to-the-jvm"&gt;
&lt;h3&gt;Tales from Compiling to the JVM&lt;/h3&gt;
&lt;p&gt;This was an interesting talk by Lukas Rytz about certain things that had to change in the Scala 2.12 compiler because of Java 8. Like not initializing static final variables outside the class initialization block... Talk is not up yet unfortunately.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="typelevel-hackday"&gt;
&lt;h2&gt;Typelevel hackday&lt;/h2&gt;
&lt;p&gt;The third day of the conference was a &lt;a class="reference external" href="http://typelevel.org"&gt;Typelevel&lt;/a&gt; hackday which started off with a few talks in the morning. Of these I only took some notes for two of them:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/rabbitonweb/cats_toolbox/blob/master/src/main/scala/ct/Checkout.scala"&gt;Cats in London&lt;/a&gt; - this was Pawel Szulc attempting the what must be by-now infamous interview problem of the Checkout with apples and oranges using &lt;a class="reference external" href="https://github.com/typelevel/cats"&gt;Cats&lt;/a&gt; and the &lt;tt class="docutils literal"&gt;Free&lt;/tt&gt; monad&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/rklaehn/abc"&gt;Array-based collections&lt;/a&gt; - was a nice talk about a collection library that is very different - these ones are immutable and backed by a single flat array&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="other-references"&gt;
&lt;h2&gt;Other References&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;John de Goes ran an &lt;a class="reference external" href="https://gist.github.com/jdegoes/97459c0045f373f4eaf126998d8f65dc"&gt;Advanced Functional Programming with Scala&lt;/a&gt; training workshop for 2 days prior to the conference and the linked notes look great&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://monix.io"&gt;Monix&lt;/a&gt; was mentioned as a library quite often and I was not fully aware of it before coming to the conference&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So here is the presentation from flatMap Oslo 2016 talking about it:&lt;/p&gt;
&lt;div class="vimeo-video"&gt;
&lt;iframe src="https://player.vimeo.com/video/165922572" width="1280" height="720" frameborder="0" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowFullScreen"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;It was an excellent conference and I look forward to scala.world 2017!&lt;/p&gt;
&lt;table class="docutils footnote" frame="void" id="id11" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label"&gt;&lt;col&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="https://blog.solidninja.is/posts/scala-world-2016/#id4"&gt;[1]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="reference external" href="https://github.com/typelevel/cats/blob/master/docs/src/main/tut/freemonad.md"&gt;https://github.com/typelevel/cats/blob/master/docs/src/main/tut/freemonad.md&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="id12" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label"&gt;&lt;col&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="https://blog.solidninja.is/posts/scala-world-2016/#id5"&gt;[2]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="reference external" href="http://perevillega.com/freek-and-free-monads"&gt;http://perevillega.com/freek-and-free-monads&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table class="docutils footnote" frame="void" id="id13" rules="none"&gt;
&lt;colgroup&gt;&lt;col class="label"&gt;&lt;col&gt;&lt;/colgroup&gt;
&lt;tbody valign="top"&gt;
&lt;tr&gt;&lt;td class="label"&gt;&lt;a class="fn-backref" href="https://blog.solidninja.is/posts/scala-world-2016/#id6"&gt;[3]&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="reference external" href="http://www.slideshare.net/KelleyRobinson1/why-the-free-monad-isnt-free-61836547"&gt;http://www.slideshare.net/KelleyRobinson1/why-the-free-monad-isnt-free-61836547&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>scala</category><category>scala.world</category><category>schedule</category><guid>https://blog.solidninja.is/posts/scala-world-2016/</guid><pubDate>Wed, 21 Sep 2016 10:00:00 GMT</pubDate></item></channel></rss>