January 25, 2019
Just got back from Carfax’s annual Employee Appreciation Party; it was a good night of talking (shouting… it was loud) with co-workers. Interviewed co-worker Jesse Pasley on Sunday. We had a lot of good talk mainly focused on his past life in Japan and China.
After years, finally got to catch up in person with former professor John Frymire and Aaron Abernathy. We hung out at Shakes eating and drinking for 4 straight hours on Martin Luther King Jr. Day. Funnily enough John is an expert historian on the similarly-named but unrelated figure, Martin Luther.
Damn did I spend almost all of my passion project time working on Carfax-related stuff. That’s just how it goes some times. Some times Carfax is my passion (or at least the technical problem we’re working on is…).
I’m particularly interested in GraphQL, a query language and runtime for creating APIs around deeply connected data. We’ve been using it more and more.
A few years ago, this way of modeling data and APIs seemed like it required a special case. But the more I think about its possibilities, the more I find it hard to imagine a use case where it isn’t the best option.
At Carfax, much of our data is deeply connected. However, if I pick 3 domains that I commonly work with — Shops, MyCarfax Users, and Reviews — I often find that these concepts are separate and the data associated with them are presently in three separate databases and are served up by three separate APIs / Services. So a developer writing a UI that displays information from all three domains would have to write code that calls those three different services to get the data from the three different databases.
What a pain…
Wouldn’t it be nice to not only visualize the data as a singular structure but also make a singular request with a singular query?
That’s where GraphQL comes in. It’s basically the tool that allows you to implement data / APIs in a graph form even if the data and / or services that it calls are completely independent. If the front end needs to display all some shop information for every review a myCarfax user made, the query to the GraphQL API would look something like “give me all the shop information associated with the shops that this myCarfax user reviewed.” And the GraphQL API that was built could make sense of this and present the information to the client easily and quickly.
Anyway — long story short, I’ve been spending a lot of time and excitement really getting to know this technology recently and will probably be doing so even more for the next few weeks.
Written by Joseph Weidinger.