In the age of modular microservices, data pipelines, serverless, and IoT, handling data serialization has become a major design decision. While monolithic architectures are well, monolithic, coordination between components is simply a function call away. In contrast, components that are separated by a network or run as different stages in a workflow must communicate by serializing and deserializing data. Add in questions like how much data is being serialized, how often it needs to be serialized, how many languages are in play, and how various components evolve, and we can see how data serialization has turned from an incidental problem to a central one.
For the past couple of weeks I have been using Rust for a project at work and enjoying it a lot. The emphasis on systems programming aligns well with my interest in systems, the unique type system keeps the programming languages enthusiast in me interested, and the use of expressive types, as always, keeps me in check and makes me confident in my code.
I am excited to say my short paper "The Limitations of Type Classes as Subtyped Implicits" has been accepted at Scala Symposium 2017!
A couple weeks ago I was working on a project using Conal Elliott's uniform-pair library and
noticed it had a curious
Monad instance, which I've reproduced below.