Skip to content

Instantly share code, notes, and snippets.

@travisbrown
Last active November 22, 2017 16:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save travisbrown/2869533cb9bb38b1d68e65e21503e95f to your computer and use it in GitHub Desktop.
Save travisbrown/2869533cb9bb38b1d68e65e21503e95f to your computer and use it in GitHub Desktop.

Scala Exchange 2017

Travis Brown, A tour of Typelevel by way of Circe, 90 minutes

In this workshop we will introduce concepts from a range of Typelevel (and Typelevel-adjacent) projects—from Cats to Shapeless to Monocle to fs2—while coming up with practical solutions to JSON processing problems with Circe. If you've heard ever about functors or monads or generic programming or lenses and wondered "but what are these things good for?", this workshop is for you.

Travis Brown, Circe 1.0 preview and discussion, 60 minutes

We have many improvements and new features in the works for Circe 1.0, including a more convenient JSON representation, better error messages, more options when decoding JSON numbers, and—most significantly—a new approach to decoding that makes it possible to work with alternative formats (like BSON) or other libraries' JSON representations, without mapping through io.circe.Json.

This session will consist of a short overview of some of these changes, followed by time for discussion and feedback from current and potential Circe users.

London Scala Users' Group

Travis Brown, The future of decoding in Circe

The 1.0 release of Circe will introduce a new approach to decoding that replaces cursors with a simple algebra of navigation and reading operations. While this approach is largely source-compatible with existing decoder definitions, it opens up a wide range of new possibilities. By decoupling the interpretation of the decoder from any particular JSON representation, we're now able, for example, to define (or generically derive) a Decoder value and then use it to decode an instance of Circe's Json AST, or of ScalaJSON's AST, or even to decode a type representing a BSON or YAML value.

While this new approach will be included in the core Circe module in 1.0, it's available now as a separate dependency. This talk will begin with a high-level overview of the motivations for the change, but the focus will be a hands-on exploration of the capabilities of the new approach.

Bio

Travis Brown currently writes Scala for Stripe, maintains several open source Scala libraries (including Circe and iteratee.io), and contributes to many others (for example Finch, Cats, and Shapeless).

(I don't think I have a good photo handy but here's the one I use for Twitter, GitHub, etc.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment