This is the first in a series of “praise of a tool” blog posts. You know that feeling when a tool (or library, framework, or even a song or movie) feels so cool that you just have to shout about it to the entire world? Today, for me, it’s the “Observable Framework.” By the way, I’m not sure how many articles this series will have… Another tool I’m thinking of praising is “mermaid.js,” but I’m not sure if I’ll have “enough words” for a full article about it. In case I don’t, just know this: mermaid.js is great! But let’s get back to today’s star – the Observable Framework.
Initial Options
I needed to analyze some data. Googling and ChatGPT-ing (if that’s still considered English) dumped a ton of options on me for visualizing data. Some of these were paid solutions, which I dismissed immediately (yep, I’m a cheap bastard). I’m more interested in open-source, and therefore eternal, solutions.
There were some specialized tools for visualization, but none of them felt quite right. Some had unintuitive APIs; others had poor documentation. I’m not going to list all the rejected open-source tools because, frankly, I don’t remember them. They were just eliminated during my investigation process.
First Light at the End of the Tunnel
The tool I initially stuck with was Grafana. Oh, Grafana is cool. It’s open-source, free, has great documentation… If it had a decent ass, I’d probably ask for its number.
But as I started working with it, I found it wasn’t the easiest tool for exploratory data analysis. Don’t get me wrong—Grafana is fine, but not ideal for my needs. The main issue was that I had to use its UI (which feels ironic for a coder like me who actually writes UIs).
When I reached my goal, I had two options to save my progress:
- Backup all the data from the Grafana instance (e.g., Docker volume).
- Export the dashboard specs in JSON format.
Now, let’s talk about that JSON file: OMG. Okay, I’ll try it again: OMG. Well, I’ve tried. Grafana’s dashboard JSON is just not readable unless you have two years of spare time to dedicate to deciphering it. I wouldn’t be surprised if it was created by the same person behind the package-lock.json file.
In summary, Grafana is a great tool, but I turned out to be too dumb (or impatient) to use it effectively for my needs.
Accidental Encounter That Saved the Day
I’ve been a long-time subscriber to a YouTube channel called Fun Fun Function. For me, it’s one of the greatest YouTube channels out there, at least as a developer. Recently, the channel had a reboot—it’s now more focused on data science (it used to be mostly about JavaScript).
One of his videos came out at just the right time — it was about the Observable Framework, and the topic coincided perfectly with what I needed. I didn’t even finish watching the video before realizing this was exactly what I was looking for.
Finally, We’re on the Topic
It took a while, I admit. But now, about 500 words later, we’re finally getting to the Observable Framework.
The first thing you’ll see when visiting their site is the text: “The best dashboards are built with code”. That’s exactly what I wanted!
The funny thing for me about the Observable Framework is how quickly I was able to visualize data. Compared to the other tools I tried, it was stunningly easy. From the fast setup process to the intuitive basics and ending with the coolness of their library plot.js, the whole experience was the smoothest.
I won’t go into technical details because this isn’t a tutorial. There’s no point in repeating their excellent documentation — it has everything you need. I’ll just briefly describe my use case: I needed to analyze some team metrics. For example, estimation accuracy, bug counts, and the correlation between bug counts and task sizes. The main goal was to find relationships between variables, so I needed to iterate quickly. The framework’s ease of use allowed me to do exactly that. If I decided to explore another relationship midway, it was effortless to pivot. And because everything is built with code, it’s “hard to lose it”.
To be fair to Grafana, the task I had was probably not Grafana’s usual use case. Or maybe for a more experienced Grafana user, it would have been a piece of cake. But as someone with limited experience in both Grafana and the Observable Framework, the latter won my heart.
Python folks are probably laughing at me right now. Their ecosystem has been doing heavy data analysis since the Middle Ages, and I’m sure they have plenty of great libraries for visualization. But for a regular full-stack developer like me who just needed to do some quick exploratory data analysis, the Observable Framework was a perfect fit. If you have a similar use case and want to do it with code, tinkering with the Observable Framework might be worth your time.