GOTO Berlin is a vendor independent international software development conference with more that 60 top speakers and 600 attendees. The conference covers topics such as Java, Open Source, Agile, Architecture, Design, Web, Cloud, New Languages and Processes.

Iain Hull, Principle software engineer at Workday

Iain Hull

Biography: Iain Hull

Iain is a principle software engineer at Workday using Scala and Akka to deliver their next generation elastic grid. His twin passions are large scale distributed computing and applying clean code to complex problems. He is interested in good library and api design and how these can improve system design, reliability and reduce friction during development.
He is very active Scala evangelist within Workday, regularly talking and sharing new code and knowledge.And also speaks at conferences and Dublin Scala meetups.

Twitter: @IainHull

Presentation: Improving Correctness with Types

Track: Programming Languages / Time: Thursday 10:20 - 11:10 / Location: Hall 6

Object oriented programmers create and use types everyday, however these are usually limited to classes that group and encapsulate data. A type system is capable of much more, when used to express invariants, the type system can prove these hold and show where they do not. Tests prove your code is correct for some values, types can prove your code is correct for all values.

Using Scala, this talk is aimed at developers with a background in object oriented programming who want to learn new ways to use types to improve the correctness of their code. It introduces the topic in a practical fashion, concentrating on the “easy wins” developers can apply to their code today.

We will look at how invariants and preconditions are traditionally expressed with assertions and the runtime errors they produce. Then show how common invariants can be expressed with custom data types and how these use compile-time errors to prevent bugs. This will touch on tagged types, typesafe wrappers, algebraic data types and path dependent types.

Finally the talk demonstrates there is a whole world of types outside of object oriented design and hopes to encourage you to spend the time to discover these for yourself.