GeoTrellis (http://geotrellis.io/, https://github.com/locationtech/geotrellis) is an open source Scala library, mainly developed by Azavea here in Philadelphia, for doing fast processing of geospatial data on the web and in Apache Spark. We use a number of interesting design patterns in the library, and this talk will share those patterns, as well as lessons learned.
We will go over things like:
- Organizing functionality around core data types using method addition via implicit classes
- Avoiding using subtype constraints in generics by using context bounds and the kind-projector compiler plugin
- Macros for overloading functions that inline primitive data checks and other optimizations
- Specialization for writing code against primitives once without sacrificing speed (and where that wasn’t possible)
Attendees will walk away from this talk seeing how some of the more subtle techniques of Scala are used in GeoTrellis to solve real problems, and perhaps picking up a tool or two for their own bag of tricks.
Rob Emanuele is an open source geospatial developer in Philadelphia, working for Azavea, Inc. He is the maintainer of the Scala library GeoTrellis, a LocationTech project that provides geospatial capabilities to Scala generally and Apache Spark specifically. He is a member of the LocationTech Project Management Committee, an open source advocate, a musician and a proud Philadelphian.