CR(UD): do not alter historical data, preserve it

The 9th and 10th of June were marked with big crosses in my calendar: Scala Days! I am a big fan of Scala and we use it on a daily basis on the work floor at Simacan. I was very excited for the Scala Days in Amsterdam and looking forward to all the inspiration I could get there.

The Scala Days started with a big opener for me: the keynote by Jonas Bonér. His talk was very interesting and hit something that matches a lot with the philosophy of Simacan:

Never delete Facts - Jonas Bonér

“Never delete Facts” – Jonas Bonér (Co-founder and CTO of Typesafe) (picture tweeted by @vwittal)

Never delete facts
In his keynote, Bonér stated: CRUD is dead. Out of CRUD, Creating and Reading are good, but Updating and Deleting are not. CRUD.

Bonér explained that basing new facts on old facts is better than altering old facts. This is something we totally agree with at Simacan. Most often the question is not: How is the current situation? But: How does the current situation relate to a situation in the past? Therefore, it is useful to preserve history to be able to improve services by reflecting on the past.

This is especially important with traffic-related information, since there are behavior patterns discernible. Having historical data makes it feasible to get a good estimation of the near future. It also makes scalability and distribution a lot easier! (These are still big challenges of course)

The principle ‘do not delete facts’ fits really well with the functional thinking of Scala: it is the application of immutability not only in code but also in the database.

I realized that we already apply a lot of incremental updating in our Simacan Traffic Cast product. We do not actually update data, we rather introduce a new fact that succeeds the old one, thus preserving the history.

Typed Actors and Types versus Tests
The keynote by Jonas Bonér was quite the presentation to start the Scala Days with. It was very inspirational and provided a different way of looking at all the Scala Days talks. This completely made up for the fact that I was unable to attend the first keynote by Martin Odersky.

Scala Days in Amsterdam

A big crowd of Scala enthusiasts gathering for lunch in the Beurs van Berlage. (picture tweeted by @scaladays)

A lot of the presentations that followed at Scala Days were about Distribution. I personally attended a few on Spark and how use it to do in-depth data analysis.

There are a two talks that I would like to highlight:

  • Typed Actors in Akka by Roland Kuhn: Kuhn is currently working hard on making it possible to use Typed Actors. I can see that the addition of Typed Actors can fit in perfectly in our code base, while Untyped Actors will sometimes be necessary for their flexibility. It was especially interesting to hear about the challenges he met while building the architecture.
  • Types vs Tests by Amanda Laucher: It was a really interesting talk about the symbiosis of using types (and test code by proven types) and tests. Both are really useful and should not be mutually exclusive at all!

All in all, two amazing and inspirational days!

Update 26 July: The video’s of all presentations are available on the Parleys channel Scala Days 2015 Amsterdam

Simacan software engineers at Scala Days Amsterdam

Enormous thanks to Simacan for giving us the opportunity to attend this conference!