Marcus Crestani

Software Architect @ Active Group

Marcus Crestani is an experienced software architect and works at Active Group GmbH. His interests lie in functional programming, software architecture, and programming languages. Currently he is working on developing and running large, stream-based event systems with long-time storage and time-series databases.


Software developers, functional programmers, programming-language enthusiasts


Using functional abstractions like optics, lenses, and projections to specify composable bidirectional data transformation.


Data structures build the basis of software. Different components have different demands on how to structure data and use different data structures. Transmitting data over a network requires a format that is more suitable to be serialized. Persisting data requires a format that is more suitable to be stored. Thus, programmers need to transform data and convert between several data structures and formats all the time. Converting data is a lot of work and programmers need to implement the logic twice, once for each direction. This is redundant, annoying, tedious, and error-prone. We show how using bidirectional data transformations that use functional optics like lenses and projections as abstractions simplify the conversions. These ideas and techniques make converting data easy and clear and foster understanding of your data by explicitly describing how the data is connected in a composable manner.