Development Tools In Scala 
Increase Programmer’s Productivity
Me 
https://facebook.com/hiraq 
https://twitter.com/_hiraq @_hiraq
Scala Programmer Levels 
A1 : Beginning Application Programmer 
A2 : Intermediate Application Programmer 
A3 : Expert Application Programmer 
L1 : Junior Library Designer 
L2 : Senior Library Designer 
L3 : Expert Library Designer
Disclaimer 
1. My Level -> A1 (Wannabe) 
2. Research > Coding
Why I Choose Scala ? 
1. Twitter: From ruby to scala (backend) 
2. Foursquare: From php to scala (all) 
3. Mindtalk : From python to scala 
from dynamic typing to static 
typing
Problem With Scala 
1. Internet Connection 
2. Compile 
3. SABAR
Companies Using Scala 
1. Twitter 
2. Foursquare 
3. Netflix 
4. Ebay 
5. Tumblr 
6. AirBnB 
7. Mindtalk 
8. …………...Apple?
Scala’s Frameworks 
1. Lift 
2. Play (hello world) 
3. Scalatra 
4. Finatra (proved) 
5. Splay (toolkit)
Scala Web Server 
1. Finagle (Twitter) -> Finatra 
2. Socko 
3. spray-can
Scala NoSQL Framework 
1. Casbah (Mongodb) -> proved 
2. ReactiveMongo : Asynchronous Mongodb 
3. Sandra : Apache cassandra & Scala 
4. Scala-redis 
5. Gizzard
Scala Unit Test 
1. Scalatest -> proved 
2. Scalacheck -> property based unit test 
3. Spec2 -> bdd
For Development 
1. sbt (plugins: assembly / pack) 
2. conscript 
3. g8
SBT - (not so)Simple Build Tools 
1. Scala 
2. Java 
3. c++
SBT - What’s for 
1. Choose Scala Version 
2. Library dependency management 
3. Compile & package
SBT - Plugins 
1. Assembly - Fat jar (Finatra) 
2. Pack - compile, packaging + installing 
(support unix (linux) & windows), support 
versioning 
https://github.com/sbt/sbt-assembly 
https://github.com/xerial/sbt-pack
Conscript & g8 
conscript : install & update 
g8 : generate files & directories from 
templates published in github
g8 example template 
1. fayimora/basic-scala-project : simple scala project + scala test 
2. pmandera/basic-scala-project : simple scala project + spec2 
3. scalatra/scalatra-sbt : basic scalatra template
Installation - Conscript 
curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | 
sh
Installation - g8 
curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | 
sh
Command line 
1. g8 fayimora/basic-scala-project 
2. sbt
Setup sbt pack 
packSettings 
packMain := Map("shorten" -> "api.hiraq. 
google.shortenurl.Shorten")
Demo - Google ShortenURL API 
1. g8 -> fayimora/basic-scala-project 
2. Basic scala project 
3. Scalatest 
4. sbt pack 
https://github.com/hiraq-scala/google-shorten-url

Scala Development Tools

  • 1.
    Development Tools InScala Increase Programmer’s Productivity
  • 2.
  • 3.
    Scala Programmer Levels A1 : Beginning Application Programmer A2 : Intermediate Application Programmer A3 : Expert Application Programmer L1 : Junior Library Designer L2 : Senior Library Designer L3 : Expert Library Designer
  • 4.
    Disclaimer 1. MyLevel -> A1 (Wannabe) 2. Research > Coding
  • 5.
    Why I ChooseScala ? 1. Twitter: From ruby to scala (backend) 2. Foursquare: From php to scala (all) 3. Mindtalk : From python to scala from dynamic typing to static typing
  • 6.
    Problem With Scala 1. Internet Connection 2. Compile 3. SABAR
  • 7.
    Companies Using Scala 1. Twitter 2. Foursquare 3. Netflix 4. Ebay 5. Tumblr 6. AirBnB 7. Mindtalk 8. …………...Apple?
  • 8.
    Scala’s Frameworks 1.Lift 2. Play (hello world) 3. Scalatra 4. Finatra (proved) 5. Splay (toolkit)
  • 9.
    Scala Web Server 1. Finagle (Twitter) -> Finatra 2. Socko 3. spray-can
  • 10.
    Scala NoSQL Framework 1. Casbah (Mongodb) -> proved 2. ReactiveMongo : Asynchronous Mongodb 3. Sandra : Apache cassandra & Scala 4. Scala-redis 5. Gizzard
  • 11.
    Scala Unit Test 1. Scalatest -> proved 2. Scalacheck -> property based unit test 3. Spec2 -> bdd
  • 12.
    For Development 1.sbt (plugins: assembly / pack) 2. conscript 3. g8
  • 13.
    SBT - (notso)Simple Build Tools 1. Scala 2. Java 3. c++
  • 14.
    SBT - What’sfor 1. Choose Scala Version 2. Library dependency management 3. Compile & package
  • 15.
    SBT - Plugins 1. Assembly - Fat jar (Finatra) 2. Pack - compile, packaging + installing (support unix (linux) & windows), support versioning https://github.com/sbt/sbt-assembly https://github.com/xerial/sbt-pack
  • 16.
    Conscript & g8 conscript : install & update g8 : generate files & directories from templates published in github
  • 17.
    g8 example template 1. fayimora/basic-scala-project : simple scala project + scala test 2. pmandera/basic-scala-project : simple scala project + spec2 3. scalatra/scalatra-sbt : basic scalatra template
  • 18.
    Installation - Conscript curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh
  • 19.
    Installation - g8 curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh
  • 20.
    Command line 1.g8 fayimora/basic-scala-project 2. sbt
  • 21.
    Setup sbt pack packSettings packMain := Map("shorten" -> "api.hiraq. google.shortenurl.Shorten")
  • 22.
    Demo - GoogleShortenURL API 1. g8 -> fayimora/basic-scala-project 2. Basic scala project 3. Scalatest 4. sbt pack https://github.com/hiraq-scala/google-shorten-url