2015-07-22

Pitching Scala

I find myself in a position of pitching Scala to a couple of players tomorrow, and I thought I would organize my thoughts on what I might pitch to them in bullet points. These are IT generalists having a good familiarity with Java and the JVM, but not terribly familiar with Scala. I decided to arrange my bullets in the following manner, going from most important to least important:

  1. Headline pitch. A one-liner that both frames what Scala is, and is provocative enough to capture the listener's attention.
  2. What is Scala? A short list of bullet points that both gives a brief summary of what Scala is, at the same time promoting some of the core benefits of adopting and using Scala.
  3. What else makes Scala so awesome? More in depth points demonstrating the power and promise of Scala. Valuable topics of discussion, but things that I won't mind too much if the conversation wanders and I don't get around to mention.
Here's my pitch list. What do you think? Please let me know in the comments!

Headline Pitch:
  • Scala is a natural successor to the Java programming language, and is certain to be a key player in the Java ecosystem for years to come.
What is Scala?
  • Scala is a function/object-oriented hybrid. It is easy to program in Scala with a very Java like style, and to adopt the best features of functional programming at your own pace.
  • Scala/Java interop is seamless, allowing you to painlessly integrate with the thousands of Java libraries available on the JVM, as well as with your own legacy Java code.
  • Like other next generation languages that run on the JVM, you can code in Scala with massively less boilerplate than in Java.
  • Unlike other next gen JVM languages, Scala is strongly typed, improving code quality and coding productivity on large projects and in a team environment. Scala’s type system is actually quite a bit more expressive than Java’s, providing even more compile-time safety to the development team.
What else makes Scala so awesome?
  • A wide variety of Scala libraries and frameworks that are constantly becoming more robust and fully featured.
  • Many of these, such as Akka, Play, and Finagle, provide both Java and Scala APIs, making business-wide transitions from Java to Scala even easier.
  • The Scala community enthusiastically embraces reactive principles, paving the way for more robust, resilient, and scalable systems. This is especially notable in three areas:
    • Scala has powerful asynchronous tools such as Futures and Promises built right in to the language library.
    • ReactiveX styled asynchronous streams in RxScala.
    • Akka is unquestionably the premier actor framework running on the JVM.
  • Spark, written in Scala with APIs in Scala, Java, Python, and R, is rapidly becoming the go-to big data processing and analysis tool.
  • The Scala community is full of friendly and enthusiastic people!

Here are some of the sources I drew on to put this list together:
  • http://www.scala-lang.org/what-is-scala.html
  • https://twitter.github.io/finagle/
  • http://www.reactivemanifesto.org/
  • http://www.reactive-streams.org/announce-1.0.0
  • https://spark.apache.org/docs/latest/
  • http://www.typesafe.com/resources/video/reactive-streams-1-0-0-and-why-you-should-care



2015-07-19

Introducing Emblem - TypeKeyMaps

This is the third post in the Introducing Emblem series, where I discuss a reflection-based utility library I have developed called emblem. If you want to try emblem out on your project, follow these instructions. Or read this if you just want to explore try it out in the Scala REPL.

In the previous post, we looked at the core building block of the emblem library: the TypeKey. In this post, we begin to explore the utility of the TypeKey using TypeKeyMaps.