Introducing the Quill Framework
With the right toolset, an impossible problem can become solvable, and with the right abstraction, the inscrutable comes within reach. Examples of these things are Calculus, Polar Coordinates, and the Rosetta Stone. Programming languages are a human construct made to solve a particular problem, but their true power comes from their faithfulness to higher mathematics.
I love SQL because it gives me the power to talk to virtually any datastore and I love Objects because they give me the ability to reason about any discrete thing. However, it is only within the union of Functional Programming, that both of them can live together in harmony; the promises of category theory ensure it.
This is exemplified by the Quill framework of which I am a maintainer, and that I have used to build traditional database applications, as well as formidable ETL and Big-Data pipelines for the Financial Sector.
No video of the event yet, sorry!
SQL Queries can get large, really, really large. Typically this complexity is attacked using stacked SQL views or ORM frameworks like Hibernate, which both have major limitations. SQL itself has no objects so constructs more abstract than a View are unavailable, making programming graces like polymorphism all but a dream. ORM, on the other hand, comes at the cost of notorious impedance mismatch problems like N+1, which are so disastrous, they require framework-level compromises such as JPQL and EhCache. As a result of these things, ORM has been dubbed the Vietnam of Computer Science. Even if overtake these issues, as we frequently do, the dark reality remains that using Hibernate, we have usually very little idea what queries will run against our database until they break it!
What if there was an alternative? What if there was a way to use an Object Oriented language to construct queries, completely immune to the horrors of N+1? What if using this approach, every query our application will execute was synthesized during compile-time and could even be executed on the spot? These things are not only possible but are the exact feature set of an Open Source framework called Quill which I have proudly been both a user and maintainer of during the past four years. Using functional programming, polymorphism, and some Scala code, we can make big SQL queries sane, maintainable, and even fun!
- 2019 July 19 05:50
- 40 min
- Philly 2019