Hacking

Aka the DEVELOPERS readme, if you want to get your hands dirty with the code, this is the section for you.

  1. See the SBT Plugins for an overview of the SBT plugins we use
  2. See the release instructions on how to release

Quick Start (in an IDE)

You can then start up the app from the Main class.

To override the sensor file location (for the case when you’re testing without sensors), use -Dsensor.location=src/test/resources/examples.

Check the web page with http://localhost:11900.

If you want to add some test data, you can run the Example app (say, from within IntelliJ).

Build the Web App

The front-end is hosted in another project, https://github.com/tobyweston/temperature-machine-ui. Development goes on over there but when it’s ready to bring into the temperature-machine, run the following script.

build-webapp.sh

It will download the latest version of the web-app, build it and overwrite the content of src/main/resources.

The resources folder is statically served by Server.scala.

Scalaz vs. Cats Notes

We started with Scalaz but the latest version of Http4s prefers Cats. The break apart of Scalaz to FS2 etc all seems a bit complicated, so I’ve captured some notes below.

  • scalaz-stream (scalaz.concurrent.Task) has become FS2
  • cats-effects has some standard IO type classes for use with FS2.
  • Until we migrate away from Scalaz (if ever), use the shims for interop. Maybe. Sounds like there’ll be problems.
  • Task.delay(x) roughly translates to IO(x) (where x shouldn’t need to be evaluated / should be “pure”)