10. Appendix: Course Software

You can choose either or both of the following options.

10.1. Cloud-based development environment

This option is recommended if you have any problems with your local setup or if you prefer a basic cloud-based setup.

10.1.1. Pros

  • consistent, cloud-based environment

10.1.2. Cons

  • requires good network connection

  • lacks code completion

10.1.3. Setup

  • Use your GitHub, Visual Studio Team Services, or Google+ account to log into Codenvy.

  • If you do not have any of these accounts, create a GitHub account. Please see below for more information on GitHub.

  • Create a new workspace with the following settings:

    • New from blank …

    • Create new workspace from stack > BLANK

    • Name: lucproglangcourse

    • RAM: 3GB

  • Wait for the workspace to become available. Now you have a persistent, cloud-based, standard Ubuntu/Linux command-line environment that you can work in and come back to from any computer.

  • In the resulting Linux terminal, run this gist to install the Scala build tool (sbt):

    wget https://gist.github.com/klaeufer/c4040de09f51395b96be/raw/install-sbt-ubuntu.sh && sh install-sbt-ubuntu.sh
    
  • Now you can check out existing projects using git or create a new one like so:

    $ mkdir -p hello/src/main/scala
    $ cd hello
    $ cat > src/main/scala/Hello.scala
    object Hello extends App {
      println("hello")
    }
    ^D
    $ sbt run
    ...
    hello
    
  • For highly convenient integration of git username and email and SSH keys between IDE profile and console, enable the git agent (this will restart your workspace):

    workspaces > settings for desired workspace (gear) > agents > git credentials
    

10.1.4. Zero-install alternative

Scastie is an interactive playground for Scala with support for sbt configuration. It allows you to save code snippets to your GitHub account. To launch, visit https://scastie.scala-lang.org.

10.2. Locally installed development environment

This option will give you an advanced development environment with code completion, type info, etc.

10.2.1. Pros

  • provides powerful capabilities, including code completion

  • does not require network connection

10.2.2. Cons

  • might be slow on older machines

  • need to maintain on each machine you use

10.2.3. Required components

  • Java 8 and/or newer JDK

  • Git distributed version control system (usually preinstalled on Mac OS and Linux)

    • recommended installation option on Windows: Use Git and optional Unix tools from the Windows Command Prompt

    • optional on any platform, especially when not using IntelliJ IDEA: some GUI-based Git client

  • sbt Scala build tool

  • IntelliJ IDEA CE integrated development environment

    • check specific prerequisite details for your platform

    • for the following steps, make sure you have no projects open and are looking at the welcome window as in the attached screenshot

    • Scala plugin installation: IntelliJ IDEA > Configure (bottom right) > Plugins > Browse repositories > find and right-click Scala > download and install > close repository browser > OK to restart IDEA

    • JDK configuration: IntelliJ IDEA > Configure > Project Defaults > Project Structure > Platform Settings > SDKs > + > JDK > navigate to the installation directory of your most recent JDK > OK

10.2.4. Optional for all IntelliJ users

  • These are useful Android Studio/Intellij IDEA plugins. (Installation procedure is the same as for the Scala plugin.)

    • Key Promoter (helps you learn keyboard shortcuts)

    • MultiMarkdown

10.3. sbt optional plugins

This section applies to all uses of sbt, whether cloud-based or on the local command line.

These are useful additional sbt plugins. You can install them per project or globally. Some of the example projects already come with one or more of these plugins.

10.4. GitHub

GitHub is a provider of hosted Git repositories, which emphasizes community and collaboration. For this reason, we use it to host our course examples.

  • Create a GitHub account if you don’t already have one.

  • Get the GitHub Student Developer Pack using your official @luc.edu address. This will give you free unlimited private repositories.

  • Find and follow a few practitioners you respect. For example, I follow these developers. You’ll probably recognize a number of them.

  • Review these notes to understand the community-based development process.

  • For credit toward class participation, create some meaningful GitHub issues and/or GitHub pull requests for one or more of our course examples. (Make sure to navigate to the original repos as these forks do not have their own issue trackers). These can be functional or nonfunctional enhancements, requests for clarification, etc.

  • To enhance your visibility in the professional community, start doing the same for some open-source projects you are interested in.

You may find both of these cheat sheets useful:

10.5. Remote participation

This application enables you to grant others remote access to your desktop. This is helpful for diagnosing and overcoming obstacles without having to pair with the instructor in person. The application is free for personal use and does not require registration.

This software allows you to participating in class remotely in case of weather emergencies.