DEV Community

Gerard Clos for Latitude

Posted on • Originally published at latitudedata.substack.com

My approach to building an open-source data tool: Python vs JavaScript

When we rebooted Latitude I strongly pushed the team to use Python as our main language.

It was an obvious choice: It has amazing community support, all DBs have first-party clients for it, it has the largest ecosystem of data-related libs, it supports all large data formats, it even has a freaking official spec for db connectors.

I had suffered building a data product not with Python (Ruby) for the last 2 years, and didn't want to go through that again.

However, Latitude is also a full stack framework.

Just a quick background about us. Latitude is an open-source embedded analytics framework designed with developers in mind. It integrates seamlessly with your database or data warehouse, leveraging SQL and straightforward frontend components.

I’d be very happy if you could give us a star and give me feedback! https://github.com/latitude-dev/latitude

We wanted to allow developers and data engineers to not only build dashboards in the web, but to build state-of-the-art, modern applications that could easily be extended with all the tools and primitives the current web offers.

This strongly pushed us to base our approach on existing web frameworks, and since we had chosen Svelte for the templating syntax, Sveltekit became the obvious chose.

Moreover, it is not like Javascript has bad support for data-centric work; It has in fact the second largest ecosystem of data libraries after Python. It has first-party clients for all major DBs.

It has excellent support for all major large data formats. It even has good support for dataframes via the excellent Polars. Combine it with an experience to build frontend experiences that's leaps and bounds ahead of Python, and you have a strong case for using Javascript.

So, there you have it. Time will tell if we made the right choice, but so far I have little regrets on the path chosen.

Top comments (0)