Menu
Sign In Search Podcasts Charts People & Topics Add Podcast API Blog Pricing

Paul Dix

๐Ÿ‘ค Speaker
750 total appearances

Appearances Over Time

Podcast Appearances

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

Prometheus and PromQL is written in Go.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

And I knew from basically historical experience with the Prometheus project that Prometheus has a very extensive test suite for PromQL that is outside of the... It's actually like they have a whole DSL that's basically this text-based thing where they can define data input, the query, and the expected result.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

And they built all this tooling originally so that they could validate

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

compatibility for various Prometheus backends, right?

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

Prometheus being the canonical example, but then other things like Cortex and all the other cloud provider specific Prometheus backends, right?

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

There are probably at this point, at least a dozen or two dozen backends that support PromQL as a query language.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

And you can use these tests

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

With this, it's actually in the Prometheus repo.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

So basically, there's a bunch of Go code as a test runner, and there are all these tests.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

My thesis was, well, the agents do a lot better job if you give them verification signals that they can use.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

So I thought...

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

why not have the agent try to create a port of the Prometheus PromQL implementation in Go over to Rust so that we can have just native PromQL support in FluxDB 3?

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

Yeah, that makes sense.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

Right?

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

I was just like, okay, I had a rough idea of how I wanted to look.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

I said, first, go look at the, you know, I checked out the Prometheus code base because it's all Apache 2 licensed open source.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

I was like, go look at the Go codebase, create a document that summarizes that, specifically focused on the Prometheus query language, not on all the other parts.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

And focus on the test runner because I'm going to have you create a test runner in Rust that we can put into InfluxDB, which I had separately.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

So I created that and then I said, okay, here's how we're gonna organize the code within the project.

The Changelog: Software Development, Open Source
Building the machine that builds the machine (Interview)

And I knew I didn't want it touching the existing database code base, right?