Latest / The Data Flowcast: Mastering Apache Airflow ® for Data Engineering and AI / How Airflow and AI Power Investigative Journalism at the Financial Times with Zdravko Hvarlingov
Transcript
- 0:00SPEAKER_02: We help journalists find stories that otherwise would not be told.
- 0:03SPEAKER_02: So without the use of technologies, they wouldn't be possible at all.
- 0:06SPEAKER_02: The main work is that we receive some information from editors, journalists about some data sets which are quite hard to process, and it takes a lot of time for them to go through them manually.
- 0:17SPEAKER_02: And we implement data pipelines on top of these data sets where we incrementally get the new data, we process the data, we connect with some different data sets, we apply some machine learning models within the data pipeline itself.
- 0:52SPEAKER_01: In just seven minutes, you can help shape the future of Airflow and grab a free Airflow 3 fundamentals or DAG Authoring certification worth$150 each.
- 1:02SPEAKER_01: Plus, you can enter to win an exclusive workshop with Mark Lumberti.
- 1:06SPEAKER_01: Don't miss out.
- 1:07SPEAKER_01: The survey link is in the show notes and closes November 21st.
- 1:14SPEAKER_01: Hi everyone, and welcome to the Data Flowcast.
- 1:17SPEAKER_01: I'm your host, Kenton Dannis, and today I'm joined by Zdrovko Harlingov, who is a senior software engineer at the Financial Times.
- 1:25SPEAKER_01: Zdrovko, how are you doing today?
- 1:27SPEAKER_02: I'm great, Kenton.
- 1:29SPEAKER_02: Thanks a lot.
- 1:29SPEAKER_02: A lovely afternoon here in Bulgaria.
- 1:32SPEAKER_02: So it's all great.
- 1:33SPEAKER_02: The moat is amazing.
- 1:34SPEAKER_02: So happy to be here and to have me in the podcast.
- 1:38SPEAKER_01: That's great.
- 1:38SPEAKER_01: Thanks so much for joining.
- 1:40SPEAKER_01: I think you might be the first guest we've had on from Bulgaria before.
- 1:43SPEAKER_02: Happy to be the first one.
- 1:45SPEAKER_02: I hope that I'm not the last one.
- 1:46SPEAKER_02: That's for sure.
- 1:48SPEAKER_01: I hope so too.
- 1:49SPEAKER_01: We are very blessed to have a very international audience and group of guests on this podcast, which is always fun.
- 1:55SPEAKER_01: Okay, well, let's go ahead and dive in.
- 1:57SPEAKER_01: So for today's podcast, we're going to discuss how the Financial Times uses Airflow to help their journalists tell better stories, which I'm very excited to dig into.
- 2:06SPEAKER_01: But I think we want to start with some background first.
- 2:09SPEAKER_01: So tell me about what the Financial Times does.
- 2:12SPEAKER_02: Yeah, let me start with that.
- 2:14SPEAKER_02: Financial Times is a leading global news organization.
- 2:17SPEAKER_02: I think the main coverage is related to business, finance, economics, world affairs, and everything related to that.
- 2:25SPEAKER_02: Quite a lot of business leaders, policymakers use our content to make their own decisions, but not only professionals, everyone around the world who is interested in these topics.
- 2:38SPEAKER_02: And information is provided both through the physical FT newspaper, the pink FT newspaper, and also through the digital platforms of the company.
- 2:48SPEAKER_02: I would say in the last more than 10 years, FT is investing quite a lot into technologies overall and its digital capabilities, not only for making information and news more accessible to the end audience and readers, but also for using technology for the so-called computational journalism, where technologies are used together with technical people, help journalists to write stories which are data intensive.
- 3:13SPEAKER_01: Very cool.
- 3:14SPEAKER_01: And independent journalism is, of course, so important.
- 3:17SPEAKER_01: So thank you for everything that you do to support that.
- 3:20SPEAKER_01: Speaking of, what do you and your team do specifically?
- 3:25SPEAKER_02: Initially, when I joined the FT, I joined the data platform team of the company.
- 3:29SPEAKER_02: And this is where my Airflow journey started.
- 3:32SPEAKER_02: I didn't have any experience with the software before that.
- 3:35SPEAKER_02: So I joined the data platform team and in particular the Airflow sub-team of the company.
- 3:40SPEAKER_02: Because within the FT Airflow is provided as a service to the whole company, to all different teams that have some use cases which fit the usage of Airflow.
- 3:49SPEAKER_02: And that's why we have a dedicated Airflow team who supports the whole infrastructure around Airflow version upgrades.
- 3:55SPEAKER_02: Also, we build different operators and capabilities on top of the two itself.
- 4:00SPEAKER_02: So different teams shouldn't do that on their own unless they have something quite custom.
- 4:05SPEAKER_02: So I have worked in that team for probably around three years, I would say.
- 4:10SPEAKER_02: And recently, one year ago, a bit more than one year, I have joined the story finding team where the idea about the story finding team is quite a new team within the company.
- 4:20SPEAKER_02: Two years ago, FT decided to invest quite a lot and to accelerate the usage of AI technologies, data into the newsroom.
- 4:28SPEAKER_02: So the team works pretty closely with journalists.
- 4:32SPEAKER_02: And the main thing is that we help them tackle different vouch data sets, which in most of the cases are unstructured.
- 4:40SPEAKER_02: So we get the data sets, we structure them as much as possible, we enrich with some additional information, we also connect them with two other data sets if that's needed at all.
- 4:50SPEAKER_02: And at the end, we provide this to the reporters so they can use this data for different investigations.
- 4:57SPEAKER_02: On the high level, I would say this is the summary.
- 5:00SPEAKER_01: That's so interesting.
- 5:01SPEAKER_01: I want to dig in a little bit to both of these different roles you've had because I think that they're both really interesting and have different interactions with Airflow and on the data engineering side.
- 5:12SPEAKER_01: So maybe let's first dive into your previous role on the data platform team.
- 5:18SPEAKER_01: So I'd love to learn more about how the Financial Times manages Airflow as a platform for all of their internal users.
- 5:24SPEAKER_02: Yeah, of course.
- 5:25SPEAKER_02: So within the FT, Airflow is used in a multi-tenancy manner.
- 5:30SPEAKER_02: Having the set, we have a single Airflow instance, which is used by all the teams within the company.
- 5:36SPEAKER_02: This system instance is hosted within Kubernetes using the Airflow Kubernetes executor.
- 5:43SPEAKER_02: And the main thing, apart from that, we have built a lot of additional operators and hooks, is this smooth tenancy support and the team isolation we provide within the system.
- 5:54SPEAKER_02: Okay.
- 5:54SPEAKER_02: This includes a lot of aspects.
- 5:56SPEAKER_02: First thing is that each team has a separate GitHub repository where they manage their own pipelines, and all of these different uh repositories get merged together to a single place through a CI CT pipeline.
- 6:10SPEAKER_02: Also, within the system, we have a separate role for each team so they can access only their own pipelines.
- 6:17SPEAKER_02: The connections for each team are stored in a separate place.
- 6:21SPEAKER_02: Within the FT, we use Doppler for secrets management.
- 6:25SPEAKER_02: It's quite a nice tool, I have to admit it.
- 6:27SPEAKER_02: So each team has a separate project within Doppler, and we have integration between Airflow.
- 6:32SPEAKER_02: So each team manages their own secrets on their own.
- 6:36SPEAKER_02: Within the Kubernetes cluster, also each team has a separate set of nodes.
- 6:42SPEAKER_02: So one team's pipelines can't influence the pipelines of other teams.
- 6:48SPEAKER_02: And yeah, we tried to cover most of the aspects, if not all, uh, in terms of team separation.
- 6:56SPEAKER_02: And the main thing is that we needed to wrap almost all the airflow built-in operators and hooks which FT needs with our custom logic so we can provide this team isolation and team extraction logic in the end.
- 7:09SPEAKER_02: And it's important here to mention why we decided to go with this extension and having a single Airflow instance.
- 7:16SPEAKER_02: I think there are a lot of reasons, but the main ones I can think of, first thing is that maintenance overall is less.
- 7:23SPEAKER_02: Once we have the initial setup done, maintenance is much easier compared to having a lot of different airflow instances.
- 7:30SPEAKER_02: Also, cost overall is less because we share some resources between the teams, at least the airflow system pods.
- 7:37SPEAKER_02: We can quite easily add new teams within the system.
- 7:39SPEAKER_02: We don't need to spin out some additional infrastructure.
- 7:42SPEAKER_02: Upgrades of the system overall and deploying some changes is pretty fast.
- 7:46SPEAKER_02: So, yeah, I think these are the main points.
- 7:48SPEAKER_02: And that's why FT hasn't gone to the direction of using a managed airflow provider, because of the lack of built-in mode tenancy support.
- 7:57SPEAKER_01: I definitely want to touch on that a little bit more, but thank you for going through that summary, especially the why you've decided to do it this way, because that totally makes sense to me, albeit it sounds like a quite a complex system that you have to manage.
- 8:09SPEAKER_01: I understand why you would have a whole team to implement and run that in the day-to-day.
- 8:15SPEAKER_01: So you just mentioned multi-tenancy, which is an interesting topic in Airflow, because it has been discussed as potentially being supported or implemented on the open source side for quite some time.
- 8:26SPEAKER_01: And I think there are a lot of challenges behind the scenes on how exactly to do that in a way that would support most users.
- 8:33SPEAKER_01: But I'm curious from your perspective, having worked on this team and managed Airflow in this way, if multi-tenancy was supported in open source airflow, how would that change things for that team?
- 8:45SPEAKER_02: Well, to be honest, this is something that we have been waiting for years, and we are looking forward to that for sure.
- 8:52SPEAKER_02: I would say, in my opinion, the AFT setup will be simplified dramatically overall.
- 8:57SPEAKER_02: Because the main thing, as I previously mentioned, is that we need to somehow ensure that we know which is the team owning the DAC, which is currently being executed or processed in any way.
- 9:09SPEAKER_02: This means that we need to have some logic which is able to extract the team in all the different airflow places.
- 9:16SPEAKER_02: So we have separate logic, different logic within the scheduler, we have different logic within the trigger pod, within the worker pods.
- 9:24SPEAKER_02: And it can get quite messy because we need to support that.
- 9:28SPEAKER_02: And in some situations, we use, let's say, the Python call stack to detect where is the location of the DAC within the file system, and based on that, we get the name of the team.
- 9:38SPEAKER_02: In some other situations, we use, for example, Kubernetes pot mutation hook to pass some environment variables to the work reports.
- 9:46SPEAKER_02: And the main challenge is that we need to support that during version upgrades because we rely on some internal airflow logic.
- 9:55SPEAKER_02: And in case that logic changes, we need to adapt and we need to make sure that everything is working fine after we release the new version because we have quite a lot of pipelines and we don't want to affect any of them at the end.
- 10:07SPEAKER_02: So yeah, I would say the code from our site will be reduced quite a lot because we wouldn't need to wrap almost everything which is coming from Airflow.
- 10:16SPEAKER_02: We haven't forked Airflow, we just extended the code with some additional stuff because we wanted to make sure we don't fork it, because we want to be able to make upgrades relatively easily.
- 10:26SPEAKER_02: So yeah, I would say it will help dramatically, it will make us be able to upgrade much faster.
- 10:33SPEAKER_02: And also you'll have the opportunity to start thinking about a managed airflow provider because I think long term this is the way to go.
- 10:40SPEAKER_02: There's no other option.
- 10:42SPEAKER_01: Yeah, I hear you.
- 10:43SPEAKER_01: I'm certainly biased from my perspective working at astronomer, but yeah, we have seen obviously managed airflow services can help a lot, just especially with smaller teams that are trying to manage it on their own for a lot of different use cases.
- 10:56SPEAKER_01: Yeah, totally hear you about the multi-tenancy support being an important piece of that if you're trying to run within a single airflow and not have multiple.
- 11:05SPEAKER_01: There's not a ton of way around that, obviously, without implementing it yourself.
- 11:10SPEAKER_01: Yeah, very interesting.
- 11:11SPEAKER_01: I would also really like to touch on your current role on the story finding team.
- 11:17SPEAKER_01: How do you guys use Airflow to help your journalists?
- 11:20SPEAKER_01: What does that look like?
- 11:21SPEAKER_02: Yeah, I think this is a completely different story for me.
- 11:25SPEAKER_02: Having made the switch from the data platform team to this new team where the situation is a bit more startup-like within the company itself, within a pretty large organization.
- 11:34SPEAKER_02: As I said, the main thing is that they have to decide to invest quite a lot of money into accelerating the usage of AI and data within the newsroom in the area of computational journalism.
- 11:45SPEAKER_02: And the main thing is that the slogan of the team, let's say, is we help journalists find stories that otherwise would not be told.
- 11:52SPEAKER_02: So without the use of technologies, they wouldn't be possible at all.
- 11:56SPEAKER_02: So the main work is that we receive some information from editors, journalists about some data sets which are quite hard to process, and it takes a lot of time for them to go through them manually.
- 12:10SPEAKER_02: And so we implement data pipelines on top of these data sets where we incrementally get the new data, we process the data, we connect with some different data sets, we apply some machine learning models within the data pipeline itself.
- 12:25SPEAKER_02: And at the end, depending on the use case, of course, we provide the data back to them in some kind of form.
- 12:31SPEAKER_02: Sometimes it's a raw format, let's say some CSV files or parquet files.
- 12:37SPEAKER_02: In some cases, based on the data we have structured and enriched, we build small user interface so they can interact with the data and search through them.
- 12:46SPEAKER_02: So it will depend on the use case.
- 12:48SPEAKER_02: In some situations, we implement notifications on top of the data.
- 12:52SPEAKER_02: So in case they are interested in the subset of the whole data, in case the dataset is quite large, we do it.
- 12:58SPEAKER_02: And for all of that, we rely quite heavily on Airflow as our main workflow orchestrator, and the main logic is within Airflow, including, I would say, most of the execution of the machine learning models, in case they are a bit lightweight.
- 13:14SPEAKER_02: If the module is much larger, usually we deploy it somewhere else and we call it from Airflow.
- 13:20SPEAKER_02: But for most of the use cases, because the team is moving quite fast, we're experimenting with different models, so it's easier to plug it within Airflow, execute it there, unless it's bottleneck for the execution.
- 13:31SPEAKER_02: I can definitely touch on a bit more details for a couple of examples in particular, if you have the time, but yeah, depends on you.
- 13:41SPEAKER_00: This episode is brought to you by Astronomer, creators of Astro, the leading fully managed airflow service designed for the modern data stack.
- 13:50SPEAKER_00: Whether you're orchestrating large language models, implementing a data mesh architecture, or streamlining complex workflows, Astro empowers your team to focus on innovation, not infrastructure.
- 14:02SPEAKER_00: To see how you can maximize airflow's potential within your data ecosystem, visit www.astronomer.io.
- 14:11SPEAKER_01: I would love to hear an example of a story that was enabled by having this data in.
- 14:17SPEAKER_02: Okay, so the first dataset I can think of, this is in fact the dataset that we started.
- 14:21SPEAKER_02: This was, let's say, the POC of the team, in a way, was the one dataset called UK Register of Members' Financial Interests.
- 14:29SPEAKER_02: This is a government data set within the United Kingdom, which contains financial interests held by the UK members of the parliament.
- 14:37SPEAKER_02: This includes, let's say, sources of income, gifts, donations, shareholdings, and other benefits that might influence their actions in any way.
- 14:46SPEAKER_02: So the idea is for the data set is to promote some kind of transparency and accountability so the society can track what happens.
- 14:54SPEAKER_02: So the main problem is that this data set consists of 600 plus pages and structured PDF reports released every couple of weeks, leading to lack of aggregation capabilities and quite a lot of important insights missed.
- 15:12SPEAKER_02: So our goal was to grab these PDFs, make use of the structure of the data as much as possible, also structure the parts which are unstructured or semi-structured, and reach with some additional information, connect with some other UK-based datasets, and in the end give reporters back the data in a structured way so they can use different things on top of it and to use it for different investigations.
- 15:37SPEAKER_02: So, in the context of Airflow, what's the idea is that we have separate steps for each of these parts of the processing.
- 15:44SPEAKER_02: So first we have one step, of course, which incrementally gets the new data.
- 15:48SPEAKER_02: In this case, we scrape some PDF files regularly and we keep track which are the ones that we processed during the previous runs.
- 15:55SPEAKER_02: We have one part for the structuring, which is mainly, I would say, executing some regex expressions, a lot of regex expressions, and extract as much as we can.
- 16:06SPEAKER_02: For the more sophisticated part of the processing where we use some machine learning models, we apply entity extraction on top of the free text, because there's a lot of free text within the PDF report, which doesn't comply to any structure.
- 16:20SPEAKER_02: So we get different entities like people, companies, roles, organizations, even amounts.
- 16:26SPEAKER_02: Because amounts in particular are quite interesting because there are some situations where the parliament member gave money instead of receiving some.
- 16:35SPEAKER_02: So in order for us to detect that, we run a classification model on top of the amount with some context around the amount in order to detect that.
- 16:44SPEAKER_02: Otherwise, we can overcount quite a lot when doing different aggregations.
- 16:48SPEAKER_02: So we needed to make sure that this is working as expected.
- 16:52SPEAKER_02: Another interesting thing during the more interesting part of the processing is the fuzzy matching aspect.
- 16:59SPEAKER_02: Because within the report, quite often one, the very same name, person, company can be written in a couple of different ways.
- 17:06SPEAKER_02: So when we do some aggregations, for example, how much money a certain company donated to a particular parliament member, we want to combine all of these different ways of writing down the same company.
- 17:16SPEAKER_02: So we apply fuzzy marching on top of the data.
- 17:19SPEAKER_02: And the last part is connecting this register to other data sets.
- 17:24SPEAKER_02: One of the interesting ones, I would say, is one which is called UK Companies House.
- 17:29SPEAKER_02: This is again some kind of a government data set where we have official company information for most of the UK-based companies.
- 17:37SPEAKER_02: And it has a lot of things inside.
- 17:39SPEAKER_02: For example, if we start with the basic things like company name, address, of course, but we have also filing history, we have also company officers, we have also people with significant control over the company.
- 17:52SPEAKER_02: We connected the register with this UK company's house data set because when we see that a certain company donated a certain amount of money, we know the people who stand behind this company.
- 18:03SPEAKER_02: And reporters use that quite often when doing some investigations, how money flows across different companies and peoples and when building some networks of people and companies.
- 18:13SPEAKER_02: Yeah, I would think regarding the UK side of things, this is one of our main use cases I've implemented so far successfully.
- 18:21SPEAKER_02: And one example story that pops in my head right away is related to the UK Prime Minister Keir Starmer.
- 18:29SPEAKER_02: He receives, received probably thousands of pounds for attending different football games for some kind of reason for a relatively short amount of time, which is definitely strange.
- 18:39SPEAKER_02: So yeah, this was the first successful use case that we were able to implement on top of Fairflow.
- 18:45SPEAKER_01: This is so great.
- 18:46SPEAKER_01: Thank you for speaking through that.
- 18:48SPEAKER_01: I love this illustration of such an important piece of financial and political reporting.
- 18:54SPEAKER_01: Because as you said, that's often a big part of accountability.
- 18:57SPEAKER_01: And we see stories around that sort of thing, certainly in the US all the time.
- 19:02SPEAKER_01: I imagine it's true in other countries as well.
- 19:04SPEAKER_01: But as you talked through it, it's quite complicated trying to get that data in a way that is digestible for the reporters.
- 19:12SPEAKER_01: And I imagine going through dozens or hundreds of pages of PDFs manually would take them much, much longer.
- 19:18SPEAKER_01: And time is of the essence when reporting stories like that.
- 19:21SPEAKER_01: So that's really cool that you're able to speed that up so much with airflow.
- 19:25SPEAKER_02: Yeah, and for sure there were some stories that were not possible at all before that, because there were some investigations that took weeks of manual data processing of these PDF files, and now it takes a couple of minutes.
- 19:37SPEAKER_02: And I would say one of the main challenging parts is the collaboration that's required between the plot and tech people, and between us and journalists and editorial, because in order for us to be able to implement such a pipeline within Airflow, we need quite a lot of domain knowledge for the data.
- 19:53SPEAKER_02: What's the meaning behind the data, which parts we need to focus on?
- 19:56SPEAKER_02: So, yeah, I would say this was one of the most interesting parts.
- 19:59SPEAKER_02: And being able to implement such a custom thing on top of Airflow is it's amazing.
- 20:04SPEAKER_01: Yeah, that's so great.
- 20:05SPEAKER_01: I find this so interesting, and I could definitely continue talking to you for uh probably the rest of my day.
- 20:11SPEAKER_01: It's still early in my day, so not later in the afternoon yet.
- 20:15SPEAKER_01: But just given our timing, I always like to end with a standard final question, and maybe this can be related to your current role since we already talked about multi-tenancy.
- 20:25SPEAKER_01: But my question is what would you most like to see from the Airflow project in the near future?
- 20:30SPEAKER_02: That's a great question.
- 20:31SPEAKER_02: Couple of things pop in my head.
- 20:33SPEAKER_02: The first thing is regarding the Airflow built-in backfilling capabilities.
- 20:38SPEAKER_02: For sure, in Airflow version 3, there is huge improvement in this aspect, of course.
- 20:43SPEAKER_02: I pretty much like it.
- 20:44SPEAKER_02: But I think the main missing part is the ability to be able to change the schedule of the pipeline during the backfilling process.
- 20:52SPEAKER_02: What I mean is that quite often we have some pipelines which run, let's say, every two hours, and each time another pipeline runs, we get the data for the last two hours in case something new arrived.
- 21:03SPEAKER_02: But during the backfilling, sometimes we need to backfill, let's say, three, four years of data.
- 21:09SPEAKER_02: And if we use the backfilling mechanism, this will result in thousands of different DACRARNs, and it's impossible to manage them.
- 21:16SPEAKER_02: So, what we do at the moment, the workaround, is usually we implement custom parameters on top of the DAC where we specify the start and the end of the period that we want to backfill, and we need to manually trigger these DACRANs.
- 21:30SPEAKER_02: And it still takes a lot of time because even if you have a single, let's say, DACRAN per month and you want to backfill the data for the last year, you need to manually start 12 different DACRARS and you can do it automatically.
- 21:44SPEAKER_02: Or sometimes what we do is initially we deploy the pipeline with a different schedule, we make the backfilling and then we change the schedule of the pipeline.
- 21:53SPEAKER_02: But it's kind of strange, I would say.
- 21:54SPEAKER_02: So definitely, I think it's not something very complex to be implemented for the backfilling, but in no aspects, I think it would be useful for a lot of companies and use cases.
- 22:04SPEAKER_01: I think that's a very reasonable request.
- 22:06SPEAKER_01: I'm gonna take that back to our team that works on Airflow because some of them implemented the current backfilling functionality.
- 22:12SPEAKER_01: I think they'll be interested to hear this feedback.
- 22:14SPEAKER_02: That would be amazing.
- 22:15SPEAKER_02: Yeah, I'm happy to help in any way if that's possible.
- 22:18SPEAKER_02: I can think of also one, two other small things.
- 22:22SPEAKER_02: The first one, better service level agreement capabilities.
- 22:26SPEAKER_02: I saw the new deadline awards capability, which is quite nice, but still I think the main missing part is the ability to be able to open Airflow, the main list of DACs, and to be able to quite easily see, let's say, which are the ones which are late and does not comply to the service level agreement in some way.
- 22:45SPEAKER_02: Because at the moment you need to swap between airflow and let's say emails and swags.
- 22:50SPEAKER_02: So within the FT, we try to implement, in a way, our own custom dashboard where we combine some built-in airflow information and also some custom calculations, measuring whether the DAC is late based on the previous rows and things like that.
- 23:05SPEAKER_02: But it's a lot of custom work.
- 23:07SPEAKER_02: So if there is something built-in, that would be amazing.
- 23:10SPEAKER_01: I totally get that.
- 23:11SPEAKER_01: That's a great request as well.
- 23:13SPEAKER_01: Okay, love it.
- 23:14SPEAKER_01: This is Dravco, it's been so wonderful speaking with you.
- 23:18SPEAKER_01: Just to close us out, what is the best way for folks to get in touch with you?
- 23:21SPEAKER_02: First of all, thanks for the time.
- 23:23SPEAKER_02: It was my pleasure.
- 23:25SPEAKER_02: I just wanted to say that I received a lot of help from the community for the last couple of years.
- 23:30SPEAKER_02: So if I'm able to give back at least part of it, it will be amazing.
- 23:34SPEAKER_02: So, yeah, I think the the safest place is LinkedIn, uh, of course, and also my email, give it to you and you can share it.
- 23:42SPEAKER_02: So, yeah, LinkedIn or email will be the best place.
- 23:45SPEAKER_01: Okay, great.
- 23:46SPEAKER_01: Well, thank you so much again.
- 23:47SPEAKER_01: This has been a great conversation.
- 23:49SPEAKER_01: We appreciate you taking the time.
- 23:51SPEAKER_02: Thank you very much, Kent.
- 23:52SPEAKER_02: And as I said, I hope is the first, but not the last, conversation with me and also with Bulgarians.
- 23:59SPEAKER_01: So that yes, absolutely.
- 24:02SPEAKER_01: We will have that as a goal for sure.
- 24:05SPEAKER_01: Thanks again.
- 24:06SPEAKER_02: Thank you very much.
- 24:09SPEAKER_00: Thanks for joining us for the latest episode of the Data Flowcast, mastering airflow for data engineering and AI.
- 24:16SPEAKER_00: You'll find links in the show notes to any resources mentioned in today's show.
- 24:20SPEAKER_00: If you're enjoying our podcast, please subscribe so you never miss an episode and leave us a five star review.