Skip to content

Instantly share code, notes, and snippets.

@SethTisue
Last active August 29, 2015 14:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SethTisue/11405004 to your computer and use it in GitHub Desktop.
Save SethTisue/11405004 to your computer and use it in GitHub Desktop.
Scalawags #15

Scalawags #15

starring an Englishman and three hicks from flyover country who don't know Latin

Intro (0:00)

  • Daniel mistakenly calls Dick "Bill"
  • Josh is so excited about Scala 2.11 his tongue is stuck permanently out

Scala 2.11 announced (4:40)

  • https://groups.google.com/d/msg/scala-announce/OoQ996lFe4Q/fPbnGuEZLzgJ
  • 40+ libraries available by the time of the announcement
  • since the release was out before it was out
  • the Scala team issued a lot of patches and fixes to 3rd-party open-source projects
  • Daniel hit a 2.11 regression with type parameter bounds inference and variant polymorphic type constructors, in code involving Scalaz iteratees. or something like that
  • 2.11 was the first Scala release that came out on a timetable
  • what's ready in time gets in, if not, not

Scala 2.11 features and changes, part 1 (11:20)

  • so long, octal literals!
  • lots of deprecations
  • Seth's 2.11 upgrades were super low drama
  • spurious warnings, that's about it
  • standard library modularized (scala-parser-combinators, scala-xml, scala-swing)
  • modules can have their own version numbers, release timing
  • community now free to fix or replace scala-xml
  • Josh hasn't used XML in two whole days!
  • 2.11 has an experimental "delambdafy" flag (by James Iry)
  • fewer inner classes generated
  • moves us towards Java 8 style lambdas based on method handles

Scala 2.11 features and changes, part 2 (22:35)

  • features like delambdafy "sneak in" first as experimental
  • Seth notes that classifying features as experimental doesn't necessarily stop people from using them
  • library authors might start depending on them, e.g. macros, continuations plugin
  • Josh: macro-writing API can change without macro-using API changing
  • "experimental", "unsafe", "internal" ("beware of the leopard"?)
  • Seth: are the modularized 2.11 libraries abandonware?
  • evolution rate has nowhere to go but up
  • Josh: perhaps maybe separating them will actually work. it really is easier now to improve them
  • performance improvements to collections (Rex Kerr)
  • macro quasiquotes make writing macros sane
  • 2.10: compiler plugin
  • 2.11: it's built in
  • REPL is now usable as a scripting library (JSR-223)
  • REPL has :save now (in addition to the old :load and :replay)

Scala 2.11 features and changes, part 3 (34:30)

  • .NET backend is gone
  • what happened there? reified types were a problem
  • do we like reified types?
  • Daniel doesn't: "Your runtime is deciding what your type system can support."
  • Seth: "People who complain about type erasure should be careful what they wish for."
  • does Scala have types at runtime or doesn't it?
    • well, there's manifests and type tags and so forth
    • do typeclass instances qualify too? discussion.
    • what do people use reified types for, anyway?
  • improved -Xlint. more "unused" warnings. other new warnings

Scala.JS revisited (47:30)

  • Dick tries to teach Latin to the Americans
  • Daniel retaliates by calling him "Bill" again
  • thank you Erik Bruchez for sending us a batch of Scala.JS news
  • Haoyi Li made http://www.scala-js-fiddle.com
  • type your Scala code on the left, the server compiles it to JavaScript and it runs on the right
  • we didn't say so, but the tree-shaker is better now at removing unused code
  • async & await work!
  • a viewer asks, what happened to the proposed LLVM backend for Scala?
  • Geoff Reedy isn't still working on it as far as we know
  • no Akka in Scala.JS
  • some people want to use the same language to write both server and client code. the Node.js people seem to like it
  • Seth just wants (please, for the love of god) to write his JavaScript in something with a type system
  • Daniel says "Comet", betraying his advanced age. cool kids like Josh use WebSockets

Source code layout (1:02:20)

  • Daniel can't figure out where things are in Unfiltered
  • sbt is changing from tabs to spaces
  • Daniel's approach to reviewing pull requests is to lead off with a barrage of nitpicking about formatting
  • Josh thinks that might upset someone
  • Dick has the equivalent of tabs for hair

Reactive Streams (1:09:10)

  • read about it at http://www.reactive-streams.org
  • is it like scalaz-stream? kind of
  • it's Java compatible
  • it's about bringing Akka, Reactor, and Rx.Java in alignment
  • and maybe others too. there's a standard you can implement
  • digression on running Scala on GPUs
  • Josh on performance benchmarking of streams and iteratees
  • Josh proposes a reactive streams vs scalaz streams smackdown
  • if free monads are free, they must not be any good

Esoteric Ecosystem Enumerated (1:19:40)

  • there's a sbt plugin for Go now
  • Dick thinks Go is finding a niche as a "master of ceremonies", e.g. Docker and other configuration-y things
  • Dick's lawyers seem to have advised him to say he loves Groovy
  • anyone have ideas for Scala for the script bowl this year?

Scala Days 2014 (1:22:55)

  • Scala Days is in Berlin, June 16–18. http://www.scaladays.org
  • keynoters: Martin Odersky, Erik Meijer, Chad Fowler
  • Chad taught Josh: Anything you care about needs to be measured, and make your metrics public.
  • Does conducting project business in public encourage good behavior?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment