WEBVTT

00:00:00.000 --> 00:00:01.000
Vadym Kostiuk (00:02)
Hello, hello Marcin. Thanks for joining us on our podcast, Closure in Product. We'll do it again.

00:00:01.000 --> 00:00:02.000
Artem Barmin (00:10)
Hello.

00:00:02.000 --> 00:00:03.000
Marcin (00:12)
Hello, hello to everyone.

00:00:03.000 --> 00:00:04.000
Vadym Kostiuk (00:15)
Yeah, it's nice to see you ⁓ on our recording. And to begin, I suggest maybe just a few questions about yourself and your ⁓ journey as an engineer, as a closure engineer in particular. So if you could please, can you tell us a bit about your background? Like you mentioned that learning closure, that you were learning closure while at dentists and you were new to closure when you joined them.

00:00:04.000 --> 00:00:05.000
So can you please share your experience on this matter? How was it for you ⁓ in dentists? And yeah, is it generally a good experience for you?

00:00:05.000 --> 00:00:06.000
Marcin (00:58)
Yeah, so ⁓ it's actually a quite long journey. So I have started in Dentons six years ago as a junior web developer and Clojure was introduced to me by two excellent developers. One was, ⁓ let's say the lead developer, the architect of the referral network that I am leading now. Second one was... ⁓

00:00:06.000 --> 00:00:07.000
senior closure engineer, like this guy was from with closure from the very beginning of being of the language. And I had a React background. So ⁓ while working with React, I was introduced to the concept of pure functions in general, you know, pure functional programming. ⁓

00:00:07.000 --> 00:00:08.000
And when I joined, those guys showed me a Clojure script. And at the beginning, I was involved in writing Clojure script. So it was very, very interesting concept where I saw that things from React that I have considered like the top level ⁓ code with memoization, pure functions, it was already there.

00:00:08.000 --> 00:00:09.000
And this feeling ⁓ that I could write this highly optimized code right away was just amazing. it was my first encounter to Lisp. So it was very, very different from what I was doing previously. So yeah, the syntax wasn't this scary.

00:00:09.000 --> 00:00:10.000
Artem Barmin (02:19)
Thank you.

00:00:10.000 --> 00:00:11.000
Mm-hmm.

00:00:11.000 --> 00:00:12.000
Marcin (02:48)
I was already familiar with concepts of LIPS as I started with programming when I was studying chemistry in the University of Łódź in Poland. One guy that I was living with inside the room was into IT and programming and he encountered some of the LIPS.

00:00:12.000 --> 00:00:13.000
Artem Barmin (03:17)
Thank

00:00:13.000 --> 00:00:14.000
Marcin (03:18)
And he showed

00:00:14.000 --> 00:00:15.000
Artem Barmin (03:19)
you.

00:00:15.000 --> 00:00:16.000
Marcin (03:19)
me that and there was like this crazy book of Lisp or something like that. So yeah, it was quite long ago. But yeah, that's how I started. since then, always, wherever I ⁓ am, I'm trying to like put this functional approach to problems and things that I've encountered in Clojure.

00:00:16.000 --> 00:00:17.000
Yeah, that's how it started.

00:00:17.000 --> 00:00:18.000
Artem Barmin (03:50)
Interesting. Have you started from closure or closure script?

00:00:18.000 --> 00:00:19.000
Marcin (03:55)
I started with Clojure script and then I was guided by my co-workers into Clojure. So it was a very good, you know, hints how I should proceed to learn the language itself, starting from the concepts that I'm not familiar with.

00:00:19.000 --> 00:00:20.000
Artem Barmin (04:04)
Mm-hmm.

00:00:20.000 --> 00:00:21.000
Marcin (04:22)
to the language and all this JVM ecosystem, interrupt with Java, working with databases. That was something new. I had some of, a little bit of full stack experience when I was working with React and my, let's say, ⁓ unfinished little projects.

00:00:21.000 --> 00:00:22.000
and where I was learning new concepts. yeah, that's how I ended in the closure ecosystem.

00:00:22.000 --> 00:00:23.000
Artem Barmin (05:02)
Mm-hmm.

00:00:23.000 --> 00:00:24.000
Vadym Kostiuk (05:04)
That's interesting, actually. Thank you. And I had a question about Dentis and Clojure. So it's one of the biggest law firms in the world. And it's interesting to hear how actually Clojure ended up there. ⁓ Considering the size of Dentis, it's a niche language, pretty much. So ⁓ maybe you heard anything from your coworkers or from the one who maybe introduced Clojure to Dentis.

00:00:24.000 --> 00:00:25.000
how it started.

00:00:25.000 --> 00:00:26.000
Marcin (05:37)
Yeah, so it's quite interesting story because ⁓ Dentons itself, it's a very large firm and long ago, before I have started, there was a need for the firm to grow and therefore the concept of next law and referral network arised and ⁓ it was basically a venture.

00:00:26.000 --> 00:00:27.000
of the, let's say, CEO senior project management where the firm needed to create an environment for lawyers to work closely together. It was quite separated from the rest of the firm and therefore there was an opportunity to pick something different ⁓ than, you know, usually corporate

00:00:27.000 --> 00:00:28.000
languages like Java or C sharp or even, you know, TypeScript. So there was a place for closure as it was very expressive. This language is, you know, in general, very expressive. It allows a small team to achieve really great goals, in my opinion. And with very small team,

00:00:28.000 --> 00:00:29.000
Artem Barmin (06:37)
huh.

00:00:29.000 --> 00:00:30.000
Marcin (07:05)
the initial team that has started the project that I'm currently maintaining, they were familiar to Clojure. So they, with very small capacity, they were able to achieve really big things. So that's how it ended up here. And yeah, it's, I know that this language isn't,

00:00:30.000 --> 00:00:31.000
Artem Barmin (07:16)
Mm-hmm.

00:00:31.000 --> 00:00:32.000
Marcin (07:34)
picked in firms of this size, there is from time to time a place for foreclosure might be found in really big firms. yeah, that's how it ended in Dentons.

00:00:32.000 --> 00:00:33.000
Artem Barmin (07:50)
Do you know the story, how it started? Was there a discussion? ⁓ Should we choose Clojure? Should we go with the Java? Do you know the history of this decision?

00:00:33.000 --> 00:00:34.000
Marcin (08:04)
yes. It was quite simple, you know. So when I'm chatting with other developers or people in the firm and I'm saying things about Clojure, you know, I need to how to spell it, you know, what is this language? But after you mentioned that we have Java underneath, you know, we can do everything that Java offers, but quicker. And that's something that is very catchy.

00:00:34.000 --> 00:00:35.000
Artem Barmin (08:28)
Uh-huh.

00:00:35.000 --> 00:00:36.000
Marcin (08:33)
So, yeah, that's how it was picked basically. yeah, that's the story.

00:00:36.000 --> 00:00:37.000
Artem Barmin (08:34)
Uh-huh.

00:00:37.000 --> 00:00:38.000
I'm

00:00:38.000 --> 00:00:39.000
I see, I see, very interesting. And can you tell a bit about the place of the closure right now in Dentos? So is it used in one project or it's kind of more broadly used in a company for other projects or subsystems?

00:00:39.000 --> 00:00:40.000
Marcin (08:58)
⁓ Sorry, Artem, can you repeat? I'm

00:00:40.000 --> 00:00:41.000
having...

00:00:41.000 --> 00:00:42.000
Artem Barmin (09:06)
Sorry, are you here? Yeah, yeah. OK, yeah, yeah, yeah. So the question is basically, what is the place of closure right now in Dantest? Is it used for one ⁓ subsystem, or it's more widely used for different modules, different microservices? I don't know.

00:00:42.000 --> 00:00:43.000
Marcin (09:08)
Can you repeat once again? I'm having issues with connection.

00:00:43.000 --> 00:00:44.000
Yeah, so right now it's, let's say, sitting in its own spot. So there is a delegated environment for the Clojure ecosystem that is running in Nexlo. So basically everything that was associated with Nexlo was intended to run on Clojure. And right now,

00:00:44.000 --> 00:00:45.000
Artem Barmin (09:57)
Mm-hmm.

00:00:45.000 --> 00:00:46.000
Marcin (10:00)
⁓ It's own spot, sitting right there. And some of the services are integrated. We are opening some gateways for the APIs. So that's mainly it. So like...

00:00:46.000 --> 00:00:47.000
Artem Barmin (10:16)
Okay.

00:00:47.000 --> 00:00:48.000
Marcin (10:27)
I won't get into details, but right now it's quite enclosed with some connection endpoints available to the rest of the firm.

00:00:48.000 --> 00:00:49.000
Artem Barmin (10:41)
Mm-hmm. I see, I see. So you don't know any other closure team inside the dentists?

00:00:49.000 --> 00:00:50.000
Marcin (10:49)
No, I'm quite alone with this technology in a firm. But when I'm showing some of the concepts of the language, everybody gets like the light bulb above their heads and they seem to find it really interesting.

00:00:50.000 --> 00:00:51.000
Artem Barmin (10:56)
Mm-hmm.

00:00:51.000 --> 00:00:52.000
Hmm.

00:00:52.000 --> 00:00:53.000
Martin, you are lagging ⁓

00:00:53.000 --> 00:00:54.000
Marcin (11:26)
Okay, sorry.

00:00:54.000 --> 00:00:55.000
Artem Barmin (11:28)
Yeah, we're here. We're here. Vadim, ⁓ you're on mute.

00:00:55.000 --> 00:00:56.000
Marcin (11:32)
Okay.

00:00:56.000 --> 00:00:57.000
Vadym Kostiuk (11:41)
Yeah, I was just saying, don't worry about it. We will just cut it off, be the final recording. So, ⁓ and it saves locally again. Should be fine.

00:00:57.000 --> 00:00:58.000
Artem Barmin (11:44)
Mm-hmm.

00:00:58.000 --> 00:00:59.000
Yeah, that's not a

00:00:59.000 --> 00:01:00.000
problem. That's not a problem until we have at least audio connection.

00:01:00.000 --> 00:01:01.000
Vadym Kostiuk (11:54)
Marson, are you as us?

00:01:01.000 --> 00:01:02.000
Marcin (12:01)
Yeah, I'm having some connectivity issues. The video is lagging.

00:01:02.000 --> 00:01:03.000
Vadym Kostiuk (12:14)
Can you hear us?

00:01:03.000 --> 00:01:04.000
Can you hear us at all?

00:01:04.000 --> 00:01:05.000
Marson?

00:01:05.000 --> 00:01:06.000
There's no pause here.

00:01:06.000 --> 00:01:07.000
Artem Barmin (13:05)
Well, yes.

00:01:07.000 --> 00:01:08.000
Vadym Kostiuk (13:08)
I don't understand. ⁓

00:01:08.000 --> 00:01:09.000
Artem Barmin (13:25)
Well, no, I can't it, but I can't see it, you're so clear-faced.

00:01:09.000 --> 00:01:10.000
There were no connectivity problems I don't remember that.

00:01:10.000 --> 00:01:11.000
Vadym Kostiuk (13:47)
No, not our country, not in speakers.

00:01:11.000 --> 00:01:12.000
Artem Barmin (13:49)
Yeah,

00:01:12.000 --> 00:01:13.000
that's how it was done.

00:01:13.000 --> 00:01:14.000
You're torturing yourself.

00:01:14.000 --> 00:01:15.000
Vadym Kostiuk (14:04)
I thought about it. Can Marsin join the meeting that is already being recorded?

00:01:15.000 --> 00:01:16.000
Artem Barmin (14:12)
He's not.

00:01:16.000 --> 00:01:17.000
HZ.

00:01:17.000 --> 00:01:18.000
Vadym Kostiuk (14:17)
Let's check it

00:01:18.000 --> 00:01:19.000
Artem Barmin (14:18)
No idea.

00:01:19.000 --> 00:01:20.000
Vadym Kostiuk (14:52)
I'll write it

00:01:20.000 --> 00:01:21.000
Artem Barmin (14:53)
Mm-hmm.

00:01:21.000 --> 00:01:22.000
Marsin, Marsin. Such big company. I'm not hero.

00:01:22.000 --> 00:01:23.000
Vadym Kostiuk (15:07)
Mm-hmm.

00:01:23.000 --> 00:01:24.000
Thank I you good luck!

00:01:24.000 --> 00:01:25.000
Artem Barmin (15:14)
you

00:01:25.000 --> 00:01:26.000
Vadym Kostiuk (15:16)
It's an maybe there Wi-Fi, it's really beautiful.

00:01:26.000 --> 00:01:27.000
Definitely not for podcasting.

00:01:27.000 --> 00:01:28.000
Artem Barmin (15:25)
U-huh. The video Everything is in squares.

00:01:28.000 --> 00:01:29.000
Vadym Kostiuk (15:33)
I'm not really worried about because it will be okay. If the was okay.

00:01:29.000 --> 00:01:30.000
Artem Barmin (15:37)
No, it's just as indicator,

00:01:30.000 --> 00:01:31.000
know, even the video lags.

00:01:31.000 --> 00:01:32.000
Vadym Kostiuk (15:55)
Did write you a link? ⁓

00:01:32.000 --> 00:01:33.000
Artem Barmin (15:59)
in

00:01:33.000 --> 00:01:34.000
It easier for to because browser will open time.

00:01:34.000 --> 00:01:35.000
Vadym Kostiuk (16:07)
No Not just

00:01:35.000 --> 00:01:36.000
these days.

00:01:36.000 --> 00:01:37.000
work tool.

00:01:37.000 --> 00:01:38.000
into a hundred wire.

00:01:38.000 --> 00:01:39.000
Marcin (16:27)
Okay, I'm back, hopefully.

00:01:39.000 --> 00:01:40.000
Artem Barmin (16:29)
⁓ Good, good.

00:01:40.000 --> 00:01:41.000
Vadym Kostiuk (16:35)
Can you hear us well?

00:01:41.000 --> 00:01:42.000
Marcin (16:43)
I can hear you, but the reverse side just crushed my browser. had to restart everything.

00:01:42.000 --> 00:01:43.000
Vadym Kostiuk (16:44)
Marcin?

00:01:43.000 --> 00:01:44.000
Artem Barmin (16:50)
Yeah. Ho, ho, ho.

00:01:44.000 --> 00:01:45.000
Vadym Kostiuk (16:54)
That's the first time I see that.

00:01:45.000 --> 00:01:46.000
Artem Barmin (16:56)
Yeah.

00:01:46.000 --> 00:01:47.000
Marcin (16:56)
Yeah, I've never had such

00:01:47.000 --> 00:01:48.000
issues.

00:01:48.000 --> 00:01:49.000
Artem Barmin (16:59)
Maybe it's recorded too much.

00:01:49.000 --> 00:01:50.000
Marcin (17:01)
Yeah, I've never had such issues on other. ⁓

00:01:50.000 --> 00:01:51.000
Vadym Kostiuk (17:10)
Yeah, that's interesting. ⁓ Yeah, just once again, can you hear us well? If yes, we can just continue with the questions.

00:01:51.000 --> 00:01:52.000
Marcin (17:19)
Yeah, I can hear you really well.

00:01:52.000 --> 00:01:53.000
Artem Barmin (17:23)
Okay, good. So let's continue. So we were talking about the history, how the closure ended up in dentists. And to continue this question, it's really interesting about internal status of closure inside the dentists. So was it officially sanctioned when you started...

00:01:53.000 --> 00:01:54.000
Marcin (17:27)
I can hear you but you are frozen to me.

00:01:54.000 --> 00:01:55.000
Artem Barmin (17:53)
knew not you, but when project was started, ⁓ it was kind of under...

00:01:55.000 --> 00:01:56.000
Marcin (17:57)
Sorry, Artem, I

00:01:56.000 --> 00:01:57.000
can't understand.

00:01:57.000 --> 00:01:58.000
It's the sound is also lagging.

00:01:58.000 --> 00:01:59.000
Artem Barmin (18:08)
Okay.

00:01:59.000 --> 00:02:00.000
Poo Poo Poo Poo

00:02:00.000 --> 00:02:01.000
Vadym Kostiuk (18:16)
⁓

00:02:01.000 --> 00:02:02.000
I'm just trying to understand if it's because of the speed connection or because of the reverse side interacting with your browser and with your machine. Is it possible for you to check the speed of the internet? Just use it.

00:02:02.000 --> 00:02:03.000
like speed test, tool or anything.

00:02:03.000 --> 00:02:04.000
Marcin (18:44)
Yeah, it's like around eight megabytes per second, 16 megabytes.

00:02:04.000 --> 00:02:05.000
Vadym Kostiuk (18:56)
Yeah, probably it is the case.

00:02:05.000 --> 00:02:06.000
Marcin (19:00)
Can you give me five minutes? I will try to do something maybe.

00:02:06.000 --> 00:02:07.000
Vadym Kostiuk (19:00)
slow.

00:02:07.000 --> 00:02:08.000
Artem Barmin (19:07)
Of course, of course.

00:02:08.000 --> 00:02:09.000
Vadym Kostiuk (19:08)
Yeah, sure, sure.

00:02:09.000 --> 00:02:10.000
Artem Barmin (19:55)
And here, Vadim, you also hung up.

00:02:10.000 --> 00:02:11.000
I'm a

00:02:11.000 --> 00:02:12.000
Hello, hello?

00:02:12.000 --> 00:02:13.000
Vadym Kostiuk (20:13)
I just protested and thought that everyone has a speed.

00:02:13.000 --> 00:02:14.000
Artem Barmin (20:17)
Oh, you tested it, and I thought something was

00:02:14.000 --> 00:02:15.000
Yeah, good. Gigabit.

00:02:15.000 --> 00:02:16.000
minus.

00:02:16.000 --> 00:02:17.000
The Mafia.

00:02:17.000 --> 00:02:18.000
in often. Yes? Well, that's it.

00:02:18.000 --> 00:02:19.000
Vadym Kostiuk (20:38)
By the very safe here. I

00:02:19.000 --> 00:02:20.000
was that there a tyrant here, I don't know what years. A dictator. He was thrown away and the Albanian mafia And now it's very safe Some people leave on road, open windows and just go somewhere.

00:02:20.000 --> 00:02:21.000
Artem Barmin (20:45)
Bye.

00:02:21.000 --> 00:02:22.000
No.

00:02:22.000 --> 00:02:23.000
Yeah. Hmm.

00:02:23.000 --> 00:02:24.000
Pretty cool.

00:02:24.000 --> 00:02:25.000
Yes

00:02:25.000 --> 00:02:26.000
Vadym Kostiuk (21:10)
They the in the shops. They the keys. Or someone can the bag on the entrance, in front of the shop entrance, then take and take it away.

00:02:26.000 --> 00:02:27.000
Artem Barmin (21:13)
Hmm ⁓

00:02:27.000 --> 00:02:28.000
serious

00:02:28.000 --> 00:02:29.000
No

00:02:29.000 --> 00:02:30.000
It is that there is mafia, heroines are taking...

00:02:30.000 --> 00:02:31.000
Well, then, globally.

00:02:31.000 --> 00:02:32.000
Vadym Kostiuk (21:43)
I

00:02:32.000 --> 00:02:33.000
don't know any that doesn't have crime. I think even Switzerland has

00:02:33.000 --> 00:02:34.000
Artem Barmin (21:47)
Mm-hmm.

00:02:34.000 --> 00:02:35.000
Okay, let's try one more time.

00:02:35.000 --> 00:02:36.000
Marcin (21:51)
Okay, hopefully it will be better right now.

00:02:36.000 --> 00:02:37.000
Vadym Kostiuk (21:57)
Yeah, we can hear you loud and clear, so it should be better.

00:02:37.000 --> 00:02:38.000
Marcin (21:59)
Okay, so

00:02:38.000 --> 00:02:39.000
it's also much better for me.

00:02:39.000 --> 00:02:40.000
Artem Barmin (22:02)
Cool, cool. Okay, so we were talking about the place of closure in the dentist right now and to follow up this topic with a question, I'm curious about the status of a closure inside the company. So was it ⁓ originally sanctioned by, I don't know, a CTO of a company?

00:02:40.000 --> 00:02:41.000
to put this language into the stack or it was kind of under a radar and only afterwards when everyone say so that it works okay and very good, it was sanctioned. So was the status changed over the time? That's interesting.

00:02:41.000 --> 00:02:42.000
Marcin (22:46)
⁓ Well, I'm afraid that I wasn't at the very beginning and this knowledge was a little bit hidden from me. ⁓ But from what I know, it was accepted by the global team. ⁓ So it was conscious decision.

00:02:42.000 --> 00:02:43.000
Artem Barmin (22:53)
you

00:02:43.000 --> 00:02:44.000
Mm-hmm.

00:02:44.000 --> 00:02:45.000
Marcin (23:11)
and we had security checks, everything had to be in place. So yeah, was, from what I know, a very well-made decision at the very beginning.

00:02:45.000 --> 00:02:46.000
Artem Barmin (23:12)
Mm-hmm.

00:02:46.000 --> 00:02:47.000
Mm-hmm.

00:02:47.000 --> 00:02:48.000
Very interesting to see the results of security checks of the closure. What kind of checks, what vulnerabilities. That's pretty interesting.

00:02:48.000 --> 00:02:49.000
Vadym Kostiuk (23:42)
You said for the very beginning, ⁓ so everyone was happy, but like looking back in the conversations with your colleagues, again, with those maybe who introduced Clojure to the dentist, maybe they shared any unexpected benefits or perhaps like drawbacks of using Clojure ⁓ in, you know, in some time. So looking back how it's ended up, ⁓ is it more positive or?

00:02:49.000 --> 00:02:50.000
Marcin (24:06)
Mm-hmm.

00:02:50.000 --> 00:02:51.000
Vadym Kostiuk (24:11)
negative experience and if so it would be interesting to hear the details.

00:02:51.000 --> 00:02:52.000
Marcin (24:17)
⁓ So I think that in the process, while we needed to integrate a bit more into the corporate ecosystem, we started to find obstacles. So like from our end, was ⁓ quite simple. It was just some coding with APIs.

00:02:52.000 --> 00:02:53.000
Artem Barmin (24:36)
Mm-hmm.

00:02:53.000 --> 00:02:54.000
Marcin (24:47)
But there were issues with understanding from the other developer teams which were running mostly C sharp things or TypeScript node servers. When they heard that we are running something in Java and in AWS, not in Azure, they started scratching their heads. Why? Why it's like that?

00:02:54.000 --> 00:02:55.000
In the process from a very happy lone island somewhere in the firm when there were need for integrations ⁓ some cracks started to arise. So yeah, that's a general overview how it looks.

00:02:55.000 --> 00:02:56.000
Artem Barmin (25:33)
And what kind of cracks? I'm curious because from my understanding, if you are only exposing the APIs, you can provide the documentation, maybe Swagger docs or just Google docs, I don't know. And that should be enough.

00:02:56.000 --> 00:02:57.000
Marcin (25:48)
Yeah, mainly because of how to say that, ⁓ not usual technologies that we use. So it wasn't mostly like coding or something like that, but from the project management perspective. yeah, we have like, you know, we have Metabase and why are you not using Power BI, for example?

00:02:57.000 --> 00:02:58.000
Artem Barmin (26:06)
Mm-hmm

00:02:58.000 --> 00:02:59.000
Mm-hmm. Mm-hmm. Mm-hmm.

00:02:59.000 --> 00:03:00.000
Marcin (26:15)
those types of things and we were supposed to run closure stack ⁓ but we already have something in place so it adds complexity to the general firm ecosystem.

00:03:00.000 --> 00:03:01.000
Artem Barmin (26:21)
Uh-huh.

00:03:01.000 --> 00:03:02.000
Mm-hmm.

00:03:02.000 --> 00:03:03.000
So have you provided some training about the Metabase? As I understand this is kind of a data analytics tool, not a developer's tool, yeah?

00:03:03.000 --> 00:03:04.000
Marcin (26:44)
Yeah, so if somebody would like to see the data that we are working on, I need to give everybody a short tour around Metabase. So from developer perspective, it's excellent, but it stills little amounts of everybody's time because people are already familiar with some technologies, know, Power BI's.

00:03:04.000 --> 00:03:05.000
Artem Barmin (26:51)
Mm-hmm.

00:03:05.000 --> 00:03:06.000
Hmm, uh-huh, I see.

00:03:06.000 --> 00:03:07.000
Uh-huh.

00:03:07.000 --> 00:03:08.000
Mm-hmm.

00:03:08.000 --> 00:03:09.000
Uh-huh.

00:03:09.000 --> 00:03:10.000
Marcin (27:14)
other tech stacks running like dotnets in in such a big corporate environment and suddenly you're being you know people that are in in business for 20 years or something like that are being introduced to very fresh new technologies and that they are not familiar with and it's always something new and

00:03:10.000 --> 00:03:11.000
Artem Barmin (27:18)
Mm-hmm.

00:03:11.000 --> 00:03:12.000
Mm-hmm.

00:03:12.000 --> 00:03:13.000
Mm-hmm.

00:03:13.000 --> 00:03:14.000
Marcin (27:43)
a call or one or two is needed for explanations what, where and why.

00:03:14.000 --> 00:03:15.000
Artem Barmin (27:46)
Let's go.

00:03:15.000 --> 00:03:16.000
I see, I see, very interesting. So it's kind of very isolated lake of closure inside the sea of the dentist technologies.

00:03:16.000 --> 00:03:17.000
Marcin (28:00)
Yeah, we can call it like that.

00:03:17.000 --> 00:03:18.000
Artem Barmin (28:02)
Yeah, very interesting. ⁓ Now, let's move more into the team and collaboration part of the podcast. So can you tell about the current role, what you are doing in Dantos? Do ⁓ you have day-to-day hand coding sessions, something like this, or are you more managing the people?

00:03:18.000 --> 00:03:19.000
Marcin (28:28)
So let's say it's a bit complex because in the last year I have changed my official title. So right now I'm global data developer in Dantons. I'm working mostly right now with PySpark and Databricks, doing operations on very large data sets. ⁓

00:03:19.000 --> 00:03:20.000
Artem Barmin (28:39)
Mm-hmm.

00:03:20.000 --> 00:03:21.000
I'm going.

00:03:21.000 --> 00:03:22.000
Mm-hmm.

00:03:22.000 --> 00:03:23.000
Marcin (28:57)
Yeah, that's what I'd mostly do right now. But in the same time, I'm also sharing lead developer role for the Nextdoor referral network, which is the closure app that is running side by side with whole Danton ecosystem. ⁓ So in the referral network, since

00:03:23.000 --> 00:03:24.000
Artem Barmin (29:18)
Mm-hmm.

00:03:24.000 --> 00:03:25.000
Marcin (29:27)
⁓ Previously, it was very hard coding, let's say, let's call it. So a lot of coding, lot of also, I think, architecture. ⁓ So AWS stuff, DevOps, that's what I was doing quite a lot. And with the closure part itself, it was...

00:03:25.000 --> 00:03:26.000
Artem Barmin (29:32)
No, no, no.

00:03:26.000 --> 00:03:27.000
Marcin (29:55)
⁓ a lot of pull requests, reviews, lot of changes done by myself to the, let's call, ⁓ critical parts of the application. So that's how I was operating. And in the very beginning, it was mostly front-end related tasks. And after that, I had to really quickly jump into

00:03:27.000 --> 00:03:28.000
Artem Barmin (30:09)
Mm-hmm.

00:03:28.000 --> 00:03:29.000
Marcin (30:24)
⁓ the backend stuff with with Clojure. So yeah, it was it was quite a lot of coding and I think in the last two years it has mainly changed to reviewing pull requests, marking the direction for the others, ⁓ so reviewing pull requests.

00:03:29.000 --> 00:03:30.000
Artem Barmin (30:27)
Mm-hmm.

00:03:30.000 --> 00:03:31.000
Marcin (30:52)
let's structuring ideas for the new features, how they can be implemented. So yeah, that's, that's mostly it. And from the coding perspective, right now it's, I'm coding in, let's say in, different languages, but I'm still doing a lot of, a lot of pull requests, reviews in closure. So it's,

00:03:31.000 --> 00:03:32.000
Artem Barmin (31:13)
Mm-hmm.

00:03:32.000 --> 00:03:33.000
Hmm.

00:03:33.000 --> 00:03:34.000
Marcin (31:22)
Yeah, and also cooperation with business. That's mostly Tassel.ly developer.

00:03:34.000 --> 00:03:35.000
Artem Barmin (31:25)
You heard him.

00:03:35.000 --> 00:03:36.000
You mentioned that the size of a Clojure team originally was pretty lean. What is the current size of a Clojure team?

00:03:36.000 --> 00:03:37.000
Marcin (31:41)
So currently it's me as lead developer ⁓ one closure developer that is doing the hard work, let's call it. So yeah, this guy is also really cool. He joined us, let's say, mid developer fresh after let's say junior. And I think that

00:03:37.000 --> 00:03:38.000
Artem Barmin (31:46)
Mm.

00:03:38.000 --> 00:03:39.000
Mm-hmm.

00:03:39.000 --> 00:03:40.000
⁓

00:03:40.000 --> 00:03:41.000
Marcin (32:10)
project currently for him is a really nice sandbox for evolving his skills. that's how I'm viewing it. And in addition to that, have testers, automation and manual testers. We have also right now three DevOps guys. So yeah, that's how the team is structured right now.

00:03:41.000 --> 00:03:42.000
Artem Barmin (32:38)
Mm-hmm.

00:03:42.000 --> 00:03:43.000
Mm-hmm. Three DevOps and one developer. Very interesting report.

00:03:43.000 --> 00:03:44.000
Marcin (32:45)
Yeah,

00:03:44.000 --> 00:03:45.000
that's mostly because of the maturity of the referral network itself. We have delivered very cool features that required a lot of and a lot of closure coding for the past years. And right now, since the also objectives of the Dantons have ⁓ shifted, we basically

00:03:45.000 --> 00:03:46.000
Artem Barmin (32:51)
We're done.

00:03:46.000 --> 00:03:47.000
yeah.

00:03:47.000 --> 00:03:48.000
I hear you.

00:03:48.000 --> 00:03:49.000
Marcin (33:14)
Well, it's not so easy. Actually, there's quite a lot of coding because, but for example, we are migrating to Rated from Composure API. So yeah, that's something new. We have to rebuild basically all our API. A lot definitely horrendous amount of work. So yeah, that's how it looks.

00:03:49.000 --> 00:03:50.000
Artem Barmin (33:26)
I think that's

00:03:50.000 --> 00:03:51.000
I'm sorry.

00:03:51.000 --> 00:03:52.000
and why you decided to migrate from composure.

00:03:52.000 --> 00:03:53.000
Marcin (33:47)
Well, I think actually I will start with the issue that in general the closure community has like the old but gold projects are dying out. So when I'm seeing that project isn't maintained for two years or that last patch was introduced,

00:03:53.000 --> 00:03:54.000
Artem Barmin (34:04)
Mm-hmm. Mm-hmm.

00:03:54.000 --> 00:03:55.000
Mm-hmm.

00:03:55.000 --> 00:03:56.000
Marcin (34:15)
year ago or that the team that is maintaining the library is shifting towards another project. I think that's a yellow light or in some cases a red light that we should make our make up our minds on what we need to do because some of the old projects have

00:03:56.000 --> 00:03:57.000
Artem Barmin (34:30)
Thank you.

00:03:57.000 --> 00:03:58.000
Hmm.

00:03:58.000 --> 00:03:59.000
Marcin (34:45)
all dependencies and we know how it's with all dependencies when they are not maintained. that's basically the idea behind the migrations changes in our libraries.

00:03:59.000 --> 00:04:00.000
Artem Barmin (34:48)
Before... ⁓

00:04:00.000 --> 00:04:01.000
I'm here.

00:04:01.000 --> 00:04:02.000
Is it kind of security implication for these changes?

00:04:02.000 --> 00:04:03.000
Marcin (35:05)
Yes, this is security implication. That's the one thing. And the other thing is also developer experience as with the new, with, with new libraries, I'm seeing ⁓ improved approach to some of the issues. ⁓ So like, I don't know, Stuart Sierra component has evolved into integrand, for example.

00:04:03.000 --> 00:04:04.000
Artem Barmin (35:21)
Mm-hmm.

00:04:04.000 --> 00:04:05.000
Mm-hmm.

00:04:05.000 --> 00:04:06.000
Mm-hmm.

00:04:06.000 --> 00:04:07.000
Mm-hmm.

00:04:07.000 --> 00:04:08.000
Marcin (35:34)
So

00:04:08.000 --> 00:04:09.000
like this part, but mainly it's ⁓ security ⁓ from this perspective, it's definitely security.

00:04:09.000 --> 00:04:10.000
Artem Barmin (35:43)
I see.

00:04:10.000 --> 00:04:11.000
Very interesting because we've touched this question a lot in previous podcasts and it was never mentioned as a problem and it was mentioned like as a good thing. So it's not, know, it's kind of, it's done basically. This library is need, don't need to be changed at all. And you're saying about the security implication dependencies. Yeah. And it's pretty valid point. Very interesting. Do you have some...

00:04:11.000 --> 00:04:12.000
Marcin (36:07)
Mm-hmm.

00:04:12.000 --> 00:04:13.000
Artem Barmin (36:15)
⁓ security scanner in the system or maybe on the CI parts, the checking the dependencies.

00:04:13.000 --> 00:04:14.000
Marcin (36:22)
So ⁓

00:04:14.000 --> 00:04:15.000
we have, I think it was Lane Ancient. So we have this in place, but we also from time to time have black box testing and white box testing from an external contractors that are trying to break stuff.

00:04:15.000 --> 00:04:16.000
Artem Barmin (36:30)
Mm-hmm.

00:04:16.000 --> 00:04:17.000
and

00:04:17.000 --> 00:04:18.000
Mm-hmm.

00:04:18.000 --> 00:04:19.000
Marcin (36:47)
And when they are scanning, like in the white box testing some of our dependencies, are... Basically, that when some senior manager gets a list with 10 critical severities from the NVD list, it gets nasty. And especially when you're running a law firm.

00:04:19.000 --> 00:04:20.000
Artem Barmin (36:47)
Mm-hmm.

00:04:20.000 --> 00:04:21.000
Yeah.

00:04:21.000 --> 00:04:22.000
Hmm.

00:04:22.000 --> 00:04:23.000
guys.

00:04:23.000 --> 00:04:24.000
Mm-hmm.

00:04:24.000 --> 00:04:25.000
Marcin (37:15)
and handling sensitive data. It's important to keep everything secure. So we have those scans, I think, yearly right now. that's one of ⁓ our main coding tasks. yeah, keeping things secure, especially that, you know,

00:04:25.000 --> 00:04:26.000
Artem Barmin (37:27)
I don't know. I don't know.

00:04:26.000 --> 00:04:27.000
Mm-hmm.

00:04:27.000 --> 00:04:28.000
Mm-hmm.

00:04:28.000 --> 00:04:29.000
Marcin (37:44)
I think from what I'm seeing that the dangers that are hidden in the web and the new methods that are constantly being tried by malicious actors. Yeah, it's something that I think every everything needs to take care of because otherwise you end up like some vibe coded up.

00:04:29.000 --> 00:04:30.000
Artem Barmin (38:00)
and

00:04:30.000 --> 00:04:31.000
Marcin (38:12)
spitting out thousands of personal data and then it's good to be a law firm because you have lawyers that might handle the lawsuit but yeah, it's better not to.

00:04:31.000 --> 00:04:32.000
Artem Barmin (38:12)
That's it.

00:04:32.000 --> 00:04:33.000
Thank

00:04:33.000 --> 00:04:34.000
Very interesting perspective. Probably first time I hear this kind of this point of view about the security. Aren't you afraid that every library enclosure ecosystem at some time will be abandoned? Because I've seen a lot of ⁓ kind of abandoned projects five years ago, last comets.

00:04:34.000 --> 00:04:35.000
Marcin (38:51)
⁓ Yeah, that's something that I wouldn't like to see in the future. So fortunately, there is a new bank team. There is also guys from Metosyn. So I think that because Clojure is widely adapted also in banking and fintechs.

00:04:35.000 --> 00:04:36.000
Artem Barmin (38:57)
Mm.

00:04:36.000 --> 00:04:37.000
Mm-hmm. Yeah.

00:04:37.000 --> 00:04:38.000
Mm-hmm.

00:04:38.000 --> 00:04:39.000
Marcin (39:20)
I think that we are good for some time. one thing is that it's very easy to write something in Lisp. Second thing is that when it gets to maintenance, you are getting into GitHub seeing that one maintainer. Imagine, ⁓ we based our all-away connectivity on this one.

00:04:39.000 --> 00:04:40.000
Artem Barmin (39:23)
⁓

00:04:40.000 --> 00:04:41.000
Mm-hmm

00:04:41.000 --> 00:04:42.000
Marcin (39:48)
very neat library and this guy is being struck by a bus and you know, so that's another story. yeah, that's one of the things that makes me a bit nervous in like long lifespan of the application.

00:04:42.000 --> 00:04:43.000
Artem Barmin (39:52)
Yeah.

00:04:43.000 --> 00:04:44.000
Mm-hmm.

00:04:44.000 --> 00:04:45.000
I'm curious, is this ⁓ technical decisions pass some checklists from the, I don't know, procurement team, I don't know who is making the decisions. For example, one maintainer in the open source project should be forbidden probably.

00:04:45.000 --> 00:04:46.000
Marcin (40:30)
Yeah, so in Next Lower For All Network, the decisions are not made by the stars from GitHub, but I would, for example, if I see guys like, know, from the Closure Core team behind some of libraries, then...

00:04:46.000 --> 00:04:47.000
Artem Barmin (40:42)
Mm-hmm.

00:04:47.000 --> 00:04:48.000
Hmm.

00:04:48.000 --> 00:04:49.000
Marcin (40:57)
I'm feeling comfortable with using it. So we are picking, let's say libraries that are battle tested and not like some time ago I was doing a little bit with machine learning with Clojure. I wanted to see how it works and there are cool libraries, but you know, there was one guy maintaining it and he was selling books for his library. So somebody, you know,

00:04:49.000 --> 00:04:50.000
Artem Barmin (41:00)
It's not.

00:04:50.000 --> 00:04:51.000
Please leave me alone.

00:04:51.000 --> 00:04:52.000
Mm-hmm.

00:04:52.000 --> 00:04:53.000
Marcin (41:27)
⁓ makes living off of it, but, ⁓ it works well. But, you know, many things can happen when you have like one king and ruler of, of some library.

00:04:53.000 --> 00:04:54.000
Artem Barmin (41:31)
Thank you. ⁓

00:04:54.000 --> 00:04:55.000
It's coming.

00:04:55.000 --> 00:04:56.000
Yeah, yeah. I heard the stories even about languages when one maintainer, ⁓ there was a Haskell inspired language for the front end. I don't remember its name, but I heard the story that one maintainer decided to change the roadmap and the way the language works and it basically breaks and the community was ⁓ disappointed. They created many forks, but no fork.

00:04:56.000 --> 00:04:57.000
was elected as a new king, so it just disappeared. Yeah, yeah, I can understand. It's worrying.

00:04:57.000 --> 00:04:58.000
Vadym Kostiuk (42:23)
And speaking of maintenance of the libraries, ⁓ guess same applies to the team and to the maintenance of the project itself. And you mentioned that the team is not pretty big in terms of the closure ⁓ engineers. However, at some point you probably have onboarded new people or will onboard new people. Can you maybe share in a few words, how do you do this? Like how do you ensure the knowledge transfer?

00:04:58.000 --> 00:04:59.000
⁓ Maybe especially to the people who are our closure engineers. ⁓ Yeah, just how do you handle the situation on the project?

00:04:59.000 --> 00:05:00.000
Marcin (43:05)
So situations where I do not have closure engineers, it's something that is really in front of me. So I need to show the project and the language and all the ecosystem to some of my friends from the global data services team that I'm currently in.

00:05:00.000 --> 00:05:01.000
as we are sharing some of the responsibilities. So we are reducing the bus factor. So basically, think that the strongest part is to create docs, So with descriptions of like fire emergency situations, like critical procedures, and so everybody can

00:05:01.000 --> 00:05:02.000
come in, run some CLI commands or ⁓ change some of the code in critical part, for example, certificate and put an application up to the speed. So ⁓ in general, sharing knowledge across teams are one hour every week for some period of time. And once you have... ⁓

00:05:02.000 --> 00:05:03.000
I think experienced developers wrapping their mind around closure, especially if they were ⁓ doing some ⁓ functional stuff, for example, in JavaScript, they know the concepts carrying, et cetera, et cetera. It's quite simple, actually. That's what I'm thinking. And with the new developers,

00:05:03.000 --> 00:05:04.000
Artem Barmin (44:48)
Mm-hmm. Yeah. Yeah.

00:05:04.000 --> 00:05:05.000
Marcin (45:02)
that I'm introducing well. I think that I'm searching for a need to learn new stuff and not being discouraged because, know, like I have problems with parentheses, you know, it can be solved with one plugin into IDE. So that's how I'm perceiving it.

00:05:05.000 --> 00:05:06.000
Artem Barmin (45:12)
Mm-hmm.

00:05:06.000 --> 00:05:07.000
Mm-hmm.

00:05:07.000 --> 00:05:08.000
Marcin (45:29)
I'm looking always when I'm showing this language or project to younger developers. I'm thinking how I started it. I wanted to learn, I wanted to learn new cool stuff and I'm searching for this in others.

00:05:08.000 --> 00:05:09.000
Artem Barmin (45:49)
Interesting. Do you have some internal courses for the closure? Kind of changing the stack? ⁓

00:05:09.000 --> 00:05:10.000
Marcin (46:02)
Honestly, no, I don't have nothing internal like like courses. It's honestly, it's better to from my experience, better to meet and just point your finger at something that, you know, here is the part that you need to start from and you go up to the, you know, stack trace and you will find the root cause, you know, and how the application works. So I think that the

00:05:10.000 --> 00:05:11.000
Artem Barmin (46:14)
Good night.

00:05:11.000 --> 00:05:12.000
Mm-hmm. Mm-hmm.

00:05:12.000 --> 00:05:13.000
Marcin (46:30)
⁓ interaction between people is much better than watching a YouTube video. So that's how, in my opinion, courses end up.

00:05:13.000 --> 00:05:14.000
Artem Barmin (46:36)
Uh-huh.

00:05:14.000 --> 00:05:15.000
I see. Yeah. Especially in enclosure scripts, stack traces can be rather confusing. I remember using ⁓ Async, Core Async, and it was a really interesting experience to debug.

00:05:15.000 --> 00:05:16.000
Marcin (46:49)
Yeah.

00:05:16.000 --> 00:05:17.000
Yeah,

00:05:17.000 --> 00:05:18.000
you need to know how JavaScript works really, really well and how this whole loop of JavaScript events is being handled, cetera, and et cetera. Also React knowledge is really needed when you're working with Reagent.

00:05:18.000 --> 00:05:19.000
Artem Barmin (47:08)
I'm not gonna use ⁓

00:05:19.000 --> 00:05:20.000
Yeah, that's true. And speaking about other parts of the systems, aside of the closure, you mentioned already ⁓ Metabase. And I'm curious, you use some closure-specific databases like Datomic, maybe XTDB, or something like this? And can you elaborate a bit more about the whole technical stack of the project? ⁓

00:05:20.000 --> 00:05:21.000
Marcin (47:43)
So technical stack, we have Postgres as our database. we are using, ⁓ you know, I can fire up my ID and tell you more about dependencies if you would like to chat about the in general, I don't want to overshare. So we also have ⁓ Elasticsearch.

00:05:21.000 --> 00:05:22.000
Artem Barmin (47:50)
Mm-hmm.

00:05:22.000 --> 00:05:23.000
You're free.

00:05:23.000 --> 00:05:24.000
Yeah, that would be cool.

00:05:24.000 --> 00:05:25.000
Of course.

00:05:25.000 --> 00:05:26.000
Marcin (48:12)
underneath for indexing and handling the data, reagent, reframe. We had Composure for quite some time and then Composure 2.0, alpha, and now Migrate Interacted. ⁓ And what do we have else there? You it's hard to...

00:05:26.000 --> 00:05:27.000
Artem Barmin (48:12)
I hear you. I hear you.

00:05:27.000 --> 00:05:28.000
Mm-hmm.

00:05:28.000 --> 00:05:29.000
Uh-huh. ⁓

00:05:29.000 --> 00:05:30.000
⁓ huh.

00:05:30.000 --> 00:05:31.000
Mm-hmm.

00:05:31.000 --> 00:05:32.000
Marcin (48:41)
tell this from out of memory, honestly.

00:05:32.000 --> 00:05:33.000
Artem Barmin (48:45)
Yeah, frankly speaking, I think that's more than enough. You don't need to tell about all minor dependencies that you have. yeah.

00:05:33.000 --> 00:05:34.000
Marcin (48:52)
okay, that's cool. Also,

00:05:34.000 --> 00:05:35.000
I wouldn't get into details. yeah, that's mostly the app is, we always try to keep application really simple. you know, having a stack like Postgres Elastic and, you know, Clojure with some of the Java interrupts.

00:05:35.000 --> 00:05:36.000
Artem Barmin (48:56)
Of course.

00:05:36.000 --> 00:05:37.000
Mm-hmm.

00:05:37.000 --> 00:05:38.000
Marcin (49:21)
and also we also have Material UI on the front end. So, yeah, that's mostly it. I think worth of mentioning.

00:05:38.000 --> 00:05:39.000
Artem Barmin (49:24)
Mm-hmm.

00:05:39.000 --> 00:05:40.000
I see. Very interesting. And can you tell maybe about ⁓ how do you keep the code base clean? How long the project exists actually?

00:05:40.000 --> 00:05:41.000
Marcin (49:45)
⁓ So

00:05:41.000 --> 00:05:42.000
it's almost nine years. I think nine years. So ⁓ cleanups. I remember this like blog post about a crooked tree that is growing in the mountains. ⁓ So that's how it is with software projects that are running for multiple years. So

00:05:42.000 --> 00:05:43.000
Artem Barmin (49:49)
Nine years.

00:05:43.000 --> 00:05:44.000
We

00:05:44.000 --> 00:05:45.000
do.

00:05:45.000 --> 00:05:46.000
Marcin (50:15)
It's like that, you know, this project needed to withstand multiple differing business requirements, shifts in strategies, in the shape of the team. So the cleanups, well, we are, I don't know how to tell that, you know, just through.

00:05:46.000 --> 00:05:47.000
Artem Barmin (50:24)
Mm-hmm.

00:05:47.000 --> 00:05:48.000
Marcin (50:38)
find the library, hit control F, replace everything with empty space and see what breaks them go after chase the rabbit, know, so until you eradicate the issue to the limits. So that's how the cleanups basically work, you know, so it requires a lot of work, but I think that the best example in such, you know,

00:05:48.000 --> 00:05:49.000
Artem Barmin (50:41)
huh.

00:05:49.000 --> 00:05:50.000
I think.

00:05:50.000 --> 00:05:51.000
Adieu.

00:05:51.000 --> 00:05:52.000
Marcin (51:07)
cleanup stuff ⁓ is Facebook with PHP. They have chosen this technology at the very beginning and they decide we need to live with it. We've wrote so much stuff with PHP that we needed to write our own compiler. So that's how it is with, in my opinion, with software projects. If you decided to stick with something,

00:05:52.000 --> 00:05:53.000
Artem Barmin (51:12)
Thank you.

00:05:53.000 --> 00:05:54.000
Mm-hmm.

00:05:54.000 --> 00:05:55.000
Yeah.

00:05:55.000 --> 00:05:56.000
Mm-hmm.

00:05:56.000 --> 00:05:57.000
Marcin (51:34)
the decision to just leave it alone and forget about it, know, it ends up with, in my opinion, more and more work than is necessary. you just need to, you know, hold your breath for a second when you're countered this...

00:05:57.000 --> 00:05:58.000
awful function from this library that we should leave and eradicate two years ago, but there are more important things, especially to customers than one or five wasted minutes of looking into the function signature.

00:05:58.000 --> 00:05:59.000
Artem Barmin (51:59)
Thank

00:05:59.000 --> 00:06:00.000
Mm-hmm.

00:06:00.000 --> 00:06:01.000
Yeah, that's true, that's true. You know, from my experience, from what I've seen in some Clojure projects, especially that we built with a big team, with kind of turnaround, with the new guys coming in, and sometimes when they learn the Clojure, the power of Clojure, Macros, some advanced stuff,

00:06:01.000 --> 00:06:02.000
They tend to over engineer things and to create ⁓ accidental complexity in the system. So have you meet such situations in your practice?

00:06:02.000 --> 00:06:03.000
Marcin (52:55)
Mmm.

00:06:03.000 --> 00:06:04.000
Yeah, I think that it's when you will show macros to somebody, he will try to place them everywhere. When you will try to when somebody will see or is learning async, he will try to put async everywhere. So I think that the main goal is to keep every

00:06:04.000 --> 00:06:05.000
Artem Barmin (53:22)
Hey. ⁓

00:06:05.000 --> 00:06:06.000
Marcin (53:29)
thing as simple as possible. That's one of the most important parts of, I think, Clojure talks ever, simple made easy. So that's how I'm seeing it. ⁓

00:06:06.000 --> 00:06:07.000
Artem Barmin (53:31)
Mm-hmm.

00:06:07.000 --> 00:06:08.000
Mm-hmm.

00:06:08.000 --> 00:06:09.000
Marcin (53:48)
Honestly, yeah, I think that I saw this practice where it's mostly related honestly to macros. When somebody sees macros, he's trying to find a place to put them. honestly, I am always trying to use functions in Clojure. If I can use a function, I'll use function.

00:06:09.000 --> 00:06:10.000
Artem Barmin (53:59)
Mm-hmm.

00:06:10.000 --> 00:06:11.000
Mm-hmm.

00:06:11.000 --> 00:06:12.000
Marcin (54:17)
Macros are reserved for special use cases in my opinion. So yeah, that's that.

00:06:12.000 --> 00:06:13.000
Artem Barmin (54:29)
I see. ⁓ Maybe you can tell about some ⁓ implications that were created by enterprise ecosystem that we are working in. maybe ⁓ something that's ⁓ best practice in the usual closure world are not applicable in the enterprise environment.

00:06:13.000 --> 00:06:14.000
Marcin (54:57)
Honestly, to tell because in the referral network when I have started, we were operating quite like a startup. So we had startup ideas, more free will than you have in the enterprise where every decision needs to pass.

00:06:14.000 --> 00:06:15.000
Artem Barmin (55:12)
Mm-hmm.

00:06:15.000 --> 00:06:16.000
Mm-hmm.

00:06:16.000 --> 00:06:17.000
Marcin (55:26)
a process in the referral network. We had a lot of free space to roam with new technologies, new libraries. So I think that's ⁓ the element that differs to structures, to organizations. So when I've shifted from

00:06:17.000 --> 00:06:18.000
the referral network and jumped into more structured corporate environment. It was, you know, a little bit frustrating for me to see that, you know, I need to wait for someone to create a resource group for me. And it was, my God, so much time, like I could done this by myself, like in minutes or whatever. And it takes, you know, much longer.

00:06:18.000 --> 00:06:19.000
Artem Barmin (55:59)
We love you.

00:06:19.000 --> 00:06:20.000
Hmm.

00:06:20.000 --> 00:06:21.000
you

00:06:21.000 --> 00:06:22.000
Marcin (56:23)
But you know, we have the process. It was placed, the process was created for a reason. And, you know, for to prevent such developers as me to, you know, I have created like 10 resource group and this new Azure account is a mess. And, you know, it prevents you from, you know, doing like spawning some super GPU.

00:06:22.000 --> 00:06:23.000
Artem Barmin (56:29)
Uh-huh.

00:06:23.000 --> 00:06:24.000
Mm-hmm.

00:06:24.000 --> 00:06:25.000
Mhm.

00:06:25.000 --> 00:06:26.000
Marcin (56:52)
⁓ instances

00:06:26.000 --> 00:06:27.000
for hosting static websites. that's how it looks. So very different approaches to problems.

00:06:27.000 --> 00:06:28.000
Artem Barmin (57:01)
We're here.

00:06:28.000 --> 00:06:29.000
Very interesting that, you know, this very isolated department in the technical sense. So you are talking about, know...

00:06:29.000 --> 00:06:30.000
Marcin (57:19)
Yeah, so I don't want to get into politics, but I'm getting into that. In such big corporations, you can only imagine how such big corporations have different ventures, different departments, different offices, and in Dentons...

00:06:30.000 --> 00:06:31.000
Artem Barmin (57:24)
Mm-hmm.

00:06:31.000 --> 00:06:32.000
Thank

00:06:32.000 --> 00:06:33.000
Marcin (57:47)
All of those offices have autonomy. So this is one of our main policies being polycentric. And that's how Dentons was growing for past years. We do not have like a single decisive center in the firm. ⁓ Each office is capable of...

00:06:33.000 --> 00:06:34.000
doing its own ventures if they find it necessary, useful or whatever. like referral networks parked out of the global team, multiple regions in Dentons have their own ventures.

00:06:34.000 --> 00:06:35.000
Artem Barmin (58:31)
Mm-hmm.

00:06:35.000 --> 00:06:36.000
Vadym Kostiuk (58:36)
That's actually interesting, like having this decentralization within the team. ⁓

00:06:36.000 --> 00:06:37.000
Marcin (58:41)
Yeah,

00:06:37.000 --> 00:06:38.000
that makes Denton special as a firm. So yeah, it's one of, I think, very interesting things about this firm itself. we do not have like Apple has Cupertino and there are just like everybody sits there and the decisions are flowing from there. It's very different in here.

00:06:38.000 --> 00:06:39.000
Artem Barmin (58:46)
Mm-hmm.

00:06:39.000 --> 00:06:40.000
Vadym Kostiuk (59:10)
Yeah, that's, I guess it's really interested, like working in such a, in such team. ⁓ yeah. And, you know, while we were speaking about, ⁓ having problems with composure, ⁓ because of, of, ⁓ like security reasons and you had some audits that showed that, yeah, there are some dependencies. need to, ⁓ remove them. need to like solve them. ⁓ I was thinking.

00:06:40.000 --> 00:06:41.000
Artem Barmin (59:17)
Hmm.

00:06:41.000 --> 00:06:42.000
Vadym Kostiuk (59:40)
If you may be like in the history of you working on a team, if you ever had a case when someone told you that we should think about moving from closure in general, because it's a liability or anything. mean, there are multiple reasons that might cause this discussion. Yeah, security itself. Have you ever had such conversation with anyone?

00:06:42.000 --> 00:06:43.000
Artem Barmin (59:55)
Security.

00:06:43.000 --> 00:06:44.000
Marcin (1:00:05)
Not exactly about security, but conversations about, let's say, simplifying the tech stack or ⁓ things like that. So the very best answer was that I have heard it was back when I wasn't a lead developer. I think it was my second or third year.

00:06:44.000 --> 00:06:45.000
Artem Barmin (1:00:15)
You

00:06:45.000 --> 00:06:46.000
Marcin (1:00:31)
is that, okay, so what do we want to do? Do we migrate to WordPress with Google Sheets? So that's in general my answer. So if somebody asks me to change the test stack, I'm saying I'm asking to what, what's the plan? And usually then the ⁓ conversation goes into other direction.

00:06:46.000 --> 00:06:47.000
Artem Barmin (1:00:52)
Mm-hmm.

00:06:47.000 --> 00:06:48.000
Mm-hmm.

00:06:48.000 --> 00:06:49.000
Marcin (1:00:59)
because it's very easy to question something and it's very hard to put something in place. if somebody would told me, we need to migrate to this and that, what is the cost effect? So we will waste, I don't know how many weeks, months, time, and we will achieve maybe the same thing or maybe something worse. ⁓

00:06:49.000 --> 00:06:50.000
Artem Barmin (1:01:13)
Mm-hmm.

00:06:50.000 --> 00:06:51.000
Cheers.

00:06:51.000 --> 00:06:52.000
Mm-hmm.

00:06:52.000 --> 00:06:53.000
Marcin (1:01:28)
Yeah, that's in general, my response. What will be the cost effect? What will achieve? That's how it ends.

00:06:53.000 --> 00:06:54.000
Artem Barmin (1:01:33)
Mm-hmm.

00:06:54.000 --> 00:06:55.000
Vadym Kostiuk (1:01:42)
Yeah, that's interesting. know, we just, ⁓ I was thinking maybe you had such conversations. ⁓ Because, ⁓ but I see that Dintoss is not like the other enterprise environments that you worked before, because we used to work with enterprise where like the decisions are made from the top to the bottom. And it's not such a decentralized force.

00:06:55.000 --> 00:06:56.000
Artem Barmin (1:01:50)
Mm-hmm.

00:06:56.000 --> 00:06:57.000
Mm-hmm.

00:06:57.000 --> 00:06:58.000
Vadym Kostiuk (1:02:11)
within the team.

00:06:58.000 --> 00:06:59.000
Artem Barmin (1:02:13)
Yeah, very interesting culture.

00:06:59.000 --> 00:07:00.000
Marcin (1:02:16)
Yeah, so

00:07:00.000 --> 00:07:01.000
a lot of things in Dentons are actually coming from the bottom. people, you know, at least for me in here, the culture in this firm is absolutely amazing. It's as I'm working here, it's a great thing to experience. like people that, you know, we can call it flat structure of the firm in some cases, but

00:07:01.000 --> 00:07:02.000
Artem Barmin (1:02:21)
Mm-hmm.

00:07:02.000 --> 00:07:03.000
Marcin (1:02:46)
I think that, let's call it like people at the normal worker level are always being heard by people at the top. So yeah, that's how the world looks.

00:07:03.000 --> 00:07:04.000
Artem Barmin (1:03:00)
And talking about moving from the closure, have you ever discussed the problems with recruiting, with finding new talents for the closure?

00:07:04.000 --> 00:07:05.000
Marcin (1:03:15)
Yeah, so that's one of, in my opinion, biggest pain points of closure in general. in my opinion, it's very good in this ecosystem to keep very friendly relations with other developers because you don't know when you will need help.

00:07:05.000 --> 00:07:06.000
Artem Barmin (1:03:21)
Mm-hmm.

00:07:06.000 --> 00:07:07.000
Yeah.

00:07:07.000 --> 00:07:08.000
Marcin (1:03:42)
So that's my opinion about that. yeah, it's honestly, it's quite hard to find somebody that is willing to basically has the skill or is willing to learn this technology as its niche. So that's actually hard. So we often had to...

00:07:08.000 --> 00:07:09.000
Artem Barmin (1:03:56)
Uh-huh.

00:07:09.000 --> 00:07:10.000
Mm-hmm.

00:07:10.000 --> 00:07:11.000
is real.

00:07:11.000 --> 00:07:12.000
Marcin (1:04:09)
We're often in situation where we need to ask contractors ⁓ for some help because we had some issues with finding somebody right away or the recruitment processes were taking very long. yeah, we need more people ⁓ in closure. That's my opinion.

00:07:12.000 --> 00:07:13.000
Artem Barmin (1:04:18)
Mm-hmm.

00:07:13.000 --> 00:07:14.000
Mm-hmm.

00:07:14.000 --> 00:07:15.000
Yeah, yeah, it's really hard to f-

00:07:15.000 --> 00:07:16.000
Marcin (1:04:39)
But

00:07:16.000 --> 00:07:17.000
it's also like, how to put it, I found that people that are writing closure are approaching some problems in a different way than the others. it makes, think,

00:07:17.000 --> 00:07:18.000
Artem Barmin (1:04:58)
Yeah. Definitely.

00:07:18.000 --> 00:07:19.000
Marcin (1:05:07)
those developers are available as it's the language and the methodologies provide different mindset.

00:07:19.000 --> 00:07:20.000
Artem Barmin (1:05:10)
I hear you now.

00:07:20.000 --> 00:07:21.000
Yeah, we discussed this a lot and you've noticed that Clojure works as a filter for developers. So the guys who still learned Clojure, they are pretty good in general in development, not only in Clojure, but even in other technical stacks. Yeah. Hmm. Very interesting. ⁓ Okay. So let's move to another block.

00:07:21.000 --> 00:07:22.000
Marcin (1:05:27)
Yeah, that's true.

00:07:22.000 --> 00:07:23.000
Artem Barmin (1:05:45)
of questions and the name of our podcast is Clojure in product, would you do it again? So that's the main question. Would you do it again or would you start a new project in Clojure if you asked, for example, ⁓ Marcin, let's create some new module or new project in the company? So would you suggest Clojure as a technical stack?

00:07:23.000 --> 00:07:24.000
Marcin (1:06:13)
It depends. It's not an easy, the answer is not easy. So in Dendons, in my current firm, I think that it will be hard to recommend this language as I know, let's say after all those years, I know the firm very well and I know that people in here are using different text stacks usually.

00:07:24.000 --> 00:07:25.000
Artem Barmin (1:06:15)
Hmm.

00:07:25.000 --> 00:07:26.000
Mm-hmm.

00:07:26.000 --> 00:07:27.000
Marcin (1:06:42)
And considering all business related topics, as we were speaking previously, it's hard to find somebody. And in my opinion, in such big firms, it's very important to be able to reach out for people from basically the job market.

00:07:27.000 --> 00:07:28.000
Artem Barmin (1:06:53)
Mm-hmm.

00:07:28.000 --> 00:07:29.000
Mm-hmm.

00:07:29.000 --> 00:07:30.000
Mm-hmm.

00:07:30.000 --> 00:07:31.000
Marcin (1:07:12)
⁓

00:07:31.000 --> 00:07:32.000
so we, it's much easier to find, ⁓ someone that is writing, example, C sharp or third type script. ⁓ if I would be running startup, ⁓ and I would like, you know, ⁓ how, this Western was called seven magnificent or something like that. And I would have to pick like, ⁓ seven really good developers for a startup.

00:07:32.000 --> 00:07:33.000
Artem Barmin (1:07:20)
Mm-hmm.

00:07:33.000 --> 00:07:34.000
Thank you.

00:07:34.000 --> 00:07:35.000
Mm-hmm.

00:07:35.000 --> 00:07:36.000
Mm-hmm.

00:07:36.000 --> 00:07:37.000
Marcin (1:07:40)
I think that I would recommend the closure. So ⁓ it depends on the scale. It depends on what you want to achieve on goals, strategy. ⁓ Yeah, so it's not easy decision.

00:07:37.000 --> 00:07:38.000
Artem Barmin (1:07:46)
Mm-hmm.

00:07:38.000 --> 00:07:39.000
We should.

00:07:39.000 --> 00:07:40.000
I see, I see. Very wise answer. Very interesting. You're probably the first one who not ⁓ said definitely yes. But your answer is more complex.

00:07:40.000 --> 00:07:41.000
Marcin (1:08:09)
It's a bold statement, definitely.

00:07:41.000 --> 00:07:42.000
I'm also considering closure. I was thinking before this podcast about that. So it's, in my opinion, when you had this Star Wars scene when Luke meets Obi-Wan for the first time and he shows him the lightsaber.

00:07:42.000 --> 00:07:43.000
Artem Barmin (1:08:32)
That's right.

00:07:43.000 --> 00:07:44.000
Marcin (1:08:38)
What is

00:07:44.000 --> 00:07:45.000
Artem Barmin (1:08:43)
and

00:07:45.000 --> 00:07:46.000
Mm-hmm.

00:07:46.000 --> 00:07:47.000
⁓

00:07:47.000 --> 00:07:48.000
Yeah. analogy. Maybe you have some words to people that are listening to us right now. Maybe from enterprise, maybe they are thinking, maybe they want to try Clojure for some microservice because sometimes Clojure brings as a microservice language when you don't need to think a lot about big things. Maybe.

00:07:48.000 --> 00:07:49.000
Marcin (1:09:12)
Wow.

00:07:49.000 --> 00:07:50.000
Yeah, so what I like to say, to people that haven't tried Clojure, definitely try it. It's a great language that will change your viewpoint on multiple problems. And basically it will make your better developer. And for people that are already running Clojure, let's spread the word about this language.

00:07:50.000 --> 00:07:51.000
Artem Barmin (1:09:32)
I'm fine with yours.

00:07:51.000 --> 00:07:52.000
Marcin (1:09:58)
⁓ and stick together. That's it.

00:07:52.000 --> 00:07:53.000
Artem Barmin (1:10:03)
Yeah. Yeah.

00:07:53.000 --> 00:07:54.000
Let's build the job market together. Yeah. Thank you. Thank you, Marcin. It was really interesting, know, very unusual point of view on the state, ⁓ on the way, how do you approach ⁓ the technical things. And basically that's it. And I want to thank you that you joined podcast.

00:07:54.000 --> 00:07:55.000
Marcin (1:10:08)
Ha

00:07:55.000 --> 00:07:56.000
Artem Barmin (1:10:31)
that you share all this knowledge, all this insights about the enterprise usage. And thank you, basically.

00:07:56.000 --> 00:07:57.000
Marcin (1:10:41)
Thank you. Thank you, Artem. Thank you, Vadim.

00:07:57.000 --> 00:07:58.000
Vadym Kostiuk (1:10:42)
Yes. Thank you very much, Marcin.

00:07:58.000 --> 00:07:59.000
⁓ Yeah, it was nice to hear about Dentons and how you use Clojure and the history. yeah, special thanks to our audience as well. So until next time.

00:07:59.000 --> 00:08:00.000
Artem Barmin (1:10:50)
Hmm.

00:08:00.000 --> 00:08:01.000
Yeah, until next time, bye. See you.

00:08:01.000 --> 00:08:02.000
Marcin (1:10:58)
See you.