The Role of Algorithm Implementations and Testing in Development - .NET 181

Andrii Siriak is the lead .NET software engineer at SoftServe. They delve deep into the critical topic of algorithm implementations and testing in software development. They provide valuable insights into the importance of test-driven development, the significance of dynamic programming, and the careful curation of algorithm repositories. Join them for a thought-provoking exploration of the challenges and considerations surrounding algorithm selection, the quality of pull requests, and the impact of university curricula on developers' preparedness for the industry's demands. They also address the evolving landscape of AI and its potential implications for job security in the realm of algorithm advancement. This episode offers an in-depth look at algorithmic principles and their impact on software development, providing valuable insights for developers and technology enthusiasts.

Special Guests: Andrii Siriak

Show Notes

Andrii Siriak is the lead .NET software engineer at SoftServe. They delve deep into the critical topic of algorithm implementations and testing in software development. They provide valuable insights into the importance of test-driven development, the significance of dynamic programming, and the careful curation of algorithm repositories.

Join them for a thought-provoking exploration of the challenges and considerations surrounding algorithm selection, the quality of pull requests, and the impact of university curricula on developers' preparedness for the industry's demands. They also address the evolving landscape of AI and its potential implications for job security in the realm of algorithm advancement. This episode offers an in-depth look at algorithmic principles and their impact on software development, providing valuable insights for developers and technology enthusiasts.


Sponsors


Socials


Picks

Transcript


Hello, and welcome to another episode of adventuresin.net. I'm Sean Klayby, your host. And with me today, your other co host, Mark Miller. Hey, Mark. How you doing, Sean?

Hey. You good? Are you Peter, the beta branch? Since I'm I'm Greg, I'm above you on our screen for those who can actually see us with this. Son of a Yeah.

No. I'm good. I don't know if I'm Peter or not, but I'm feeling pretty good. Okay. I know you didn't ask.

Nobody really cares. But What's exciting in your life lately? Me? I don't know. We got the code rush release out.

I'm feeling good about that. That's with the new voice to code. I thought it was coming out next month. No. It was this morning.

No. It was March 4th that came out. March 4th. Star Wars Day. I thought it was oh.

Oh, yeah. Maybe I messed up if I said Star Wars Day. I don't know. It may have been me. But, yeah, we got that out, and so that's always a good relief, you know, big relief when you get some major stuff out.

And, yeah. No. I'm just it's interesting because, you know, our guest today is one of the the the the links that we got to prep for our guest is an algorithms page, and he's seems to be focused on algorithms and best practices, things like that. And I it's something I've been thinking about with this particular stuff I've been doing because it's, it it's kind of a represented a brand new challenge. Right?

How do I I've got 10,000 or 60,000 different possible combinations of an interpretations of what you said. How do I get it all to fit in very quickly into something that fits expectations of code? You know? And so that that's kind of been on my mind. I'm sure there there's ways that I can make it even better, even faster, that sort of thing.

But, yeah. No. No. That's where I am. I'm in that kind of lull after a whole bunch of hard work and, and just before things pick up again.

So you mentioned Star Wars Day. Did you anything do anything for Pie Day yesterday? Pie Day, we didn't really. So I'm on ketogenic diet, so we can't I can't really eat pie. Everybody else is like, let's eat some pie.

But, you know, I'm just like, okay. You guys go do your pie. And, you know, that idea fizzled out. So, no, I don't think we really did anything for pie day. No.

Oh, yeah. I'll tell you, though, there's you know, I live in Valencia, Spain, and, there's a celebration here called Las Fallas, where they have artists build giant sculptures. They're temporary sculptures that are very flammable, and they're up for about 3 or 4 days, and they're just putting them up now. They're gorgeous, gorgeous, like giant, kind of, like, almost caricatures, kind of a lot of weird kind of, you know, shapes and designs, beautiful colors. They're it's all going up around the city of of Valencia.

Absolutely gorgeous. It's f a l l a s, I think, if you wanna look it up and look at some of these, really, really gorgeous. And, and then they burn it all down. They burn them all down except for the one that wins. And so all the communities put money together to finance these, and so you've got these many communities within the city of Valencia, and they're essentially all in a competition.

And so one gets to stay there, and the others the others all burn, I think. So Very cool. Have you ever participated in the running of the Bulls? Nope. I don't I I do my dangerous stuff kinda like yeah.

Yeah. I do it in different places. Yeah. Behind the keyboard. Well yeah.

And I and I bike in semi dangerous ways. Today, I was, like, trying to pass a bus, and it kept honking at me. It honked at me, like, 3 times before. I was like, fine. I won't pass you.

I understand it's a blind corner, and you're going around, and you're gonna swerve over into the other lane. I get all of that. I'm doing my math. But, anyway, I like it. I backed off.

Hey, folks. This is Charles Maxwell. I've been talking to a whole bunch of people that want to update their resume and find a better job. And I figure, well, why not just share my resume? So, you, if you go to topenddevs.com/resume, enter your name and email address, then you'll get a copy of the resume that I use, that I've used through freelancing, through most of my career, as I've kind of refined it and tweaked it to get me the jobs that I want.

Like I said, topendevs.com/resume will get you that, and, you can just kinda use the formatting. It comes in Word and Pages formats, and you can just fill it in from there. Alright. Well, let's bring out our guest for today and see what he has to say about, algorithms that you, are so interested in. So let's welcome Andrei Cyriak.

Hello. Nice to meet you all. Glad to be here. Yeah. Glad to have you on.

So, why don't you tell us a little bit about yourself? You know, what you how you got into development, what you do now, and what kind of interest you have with with, software. Yeah. Sure. So, basically, I'm a software developer, primarily working in dotnet, from Ukraine, Dnipro.

It's a central part of Ukraine. And, at this point, I have more than 6 years of experience working with different technologies, but the thing that comes comes up over and over is algorithms, and, they don't really age. They don't lose their relevance. And, that's why I was interested in them since, like, I was studying at university. And, that's when I really went into it, found some interesting, places online with collections of algorithms and got involved with it.

So did you get into dot net through university or some other reason that got you into dot net? Yeah. It it was through university, and I would say even before that. Okay. What kind of what kind of things do you typically create?

Are you web developer, are you back end, cloud? What kind of things you do? Yeah. Currently, I work as a lead dotnet developer. My main focus is web services.

So this is web development, backend part of it. And, I mostly work with Microsoft Stack, that is Azure Cloud. You know, all Microsoft libraries and frameworks. K. So with algorithms, what, really kind of peaked your interested into really doing a lot of research along that line?

Well, I guess I just like, tinkering with with computers, writing stuff that's that's fun for me. And algorithms are a particularly interesting place for that because there are just so many of that that you can never get enough. And, there is always something that you can learn new even if you're a seasoned developer. Yeah. Yeah.

At the same time, it's what people usually start with. Right? So it's not like we first become, like, senior developers and then learn algorithms. Right? It's one of the first things to learn.

Yeah. I was at the, I I was taking a look at the, c sharp repository, the algorithms, and then some of the other links that we got, which I'm sure we'll put down in the description as well. And I was looking at it, and as I was reading through it, I was like, oh, no. Oh, no. Look what they've done.

They've put down the complete path for AI to go scoop up all of our secret algorithms and then take over. Everything is laid out. It even says in the read me, it says, this repository, it's a collection of a variety of algorithms implemented in c sharp. Oh my god. AI is gonna eat this up so fast and come out, and our jobs are gonna be gone.

Thanks a lot, Andre. Thanks a lot. I don't know. The rest of the show should just be about, you know, how do I get a new job now? What am I gonna do?

Like, serve food? I can't do that. Well, I think I already does that better than you can. Oh my goodness. This dish is already taken.

So there's all sorts of different types of algorithms. You know, why don't you kind of familiarize us and the listeners with the different classes and types of algorithms that you've, put together? Yeah. Sure. So, one of the key, classes of algorithms are searches, source, string algorithms, like searches in a string for a pattern.

And, also there are techniques like dynamic programming, for example. And, what's interesting here is that, at first glance, this, this, project, the algorithms, it seems like it's about algorithms, right, and data structures. But, what I wanted to tell you is that in fact, it's not about that. It's not its main focus. So, the main focus is that we help new developers who are maybe only studying at universities get interested in open source development and get familiar with proper way to write c sharp, proper way to use GitHub actions, for example, how to, you know, use GitHub to open pull requests and so on.

So this is also one of key points of this project. You know, Andre, one of the things that that I have always found kind of interesting when you go in and study algorithms is that often, when you're trying when you're striving to solve performance and perhaps even memory, so you wanna not impact memory and you wanna have a really fast answer, that you you get in, you start pushing the edges of readability. You start getting, into some some, I don't know, designs or of the code or things that are hard to to to really understand what's happening at first glance. Do you have, like, any kind of reaction to that statement? Do you believe that's true?

Do you have a similar experience? Yeah. And and what I guess then what what can we do to make it more readable? Is it is it commenting? Is that what we do?

Is it is it is it the option just mail? You know what? I want more readable code, so I'm gonna I'll forego the the speed and I'll go with something that I can read. Is there like, do you have any any kind of thoughts on that decision making process? Yeah.

Absolutely. It's a totally valid question that we, as maintainers of this project, have to face with, over and over again. Because as you can imagine, people, have very different experience. Some people are very seasoned professionals who know how to write the best code and the most performance code. Others are just starting and maybe C Sharp is their first language.

And so they produce very different results. And what we do actually here is that, well, I see this as 2 extremes. Right? One extreme is when you have a totally optimized the most performance code with 0 allocations. And the other extreme is when you have, like, almost a pseudo code from a textbook that, does the thing, but that's very inefficient, that contains a lot of allocations in memory, for example, that, you know, just uses excessive CPU cycles to assign and reassign variables and so on.

And so, we have to find balance here. And for this project, it doesn't try to be, you know, a library that you could use to use one of the algorithms in your project, even though you totally can do that. But you don't provide a new get package or anything like that. It aims to help people learn algorithms and, so readability is our main focus. So we prefer readability and clearance of intention.

So what this algorithms algorithm tries to do over, its performance. And so Yeah. At the same time, we are trying to use, like, all the, c sharp best practices and so on. So do you do you guys get pull requests from brand new developers? Are you are you how open is is this with regards to development?

Yeah. That's, also one of our, I would say, key key features of this project is that we are open to really, green developers who are only starting. Because, for example, if you just think of an open source project, could you just name a few, you know, famous open source projects? Are you asking me to name a few open source projects? Of the top of your head.

Yeah. What I don't know. I'm gonna say I don't know any. I'm the only ones I know are mine, which aren't famous at all. Auto auto mapper.

They're auto Sean saved me with auto mapper. Yeah. Well, I would name, like, Linux kernel, Android, Kubernetes. Right? They are all open source projects.

But if somebody like a university student wants to, you know, understand what open source is about, they just can't start and submit the pull request there because it's very complicated. It runs in production in, like, many, many companies. The threshold to enter it is just way too high. Right. And so we offer this place where people can, come.

We are very inclusive about that. They can submit a contribution or ask questions in our discord and then they will get this, you know, as if it's a demo experience of open source. So they will have this automated, checks, CI bills. They will have linters. We have code SCS set up to check for problems and so on.

They will get it reviewed and they will have to incorporate feedback in their pull requests And it will be only merged when it's done, when it's complete, when it's high quality. And so this really prepares them for working with a real project. So they will be they will not be daunted by, or how do I open a pull request, or should I open an issue, or just submit a pull request, or what are all these checks on a pull request mean? They will be ready for that, and they, then can focus on, the code itself of this feature that they are doing. Yeah.

That's nice. Kind of a nice way to get in. So it seems like, not only is algorithms and open source is important to you, but also education because I think that's kind of your driving thing here is to educate people on both of these things, public open source and and algorithms, things like that. Is that right? Yeah.

Absolutely. And, as I said, algorithms, they, don't age. And, all the, not all of them, but most of the algorithms that we use, they were invented long time ago. And so there are already plenty of textbooks written about them, and there are already a lot of libraries written in C plus plus that do it way faster than I can. So we are not trying to compete with them.

We are trying to, educate people, work with students and give a reference. If somebody wants to look up an implementation of an algorithm to see how it works, then they can use our website, the algorithms.com, to do that. There are implementations in many languages, not only in CIFAR. So do you have the algorithm that'll give me the winning lottery numbers? Well, I guess you could submit the pull request, right, to implement this one for everybody.

Alright. Not yet. Yeah. Bummer. So, of the algorithms you've kind of gone through, what kind of give us a couple of the most important ones and maybe the most ones that you like the most and tell us about them.

Well, I think, I won't talk about trivial, like, sorting algorithms because it's what everybody does. It's very popular. I would say, more about dynamic programming. It's not like an algorithm by itself, but it's a technique. And, because of that, it's particularly challenging to show it to people because if we are talking about bubble source, for example, or binary search, we can just implement it and it's here.

It's done. But for dynamic programming, it's a technique. And So there are a lot of applications of this technique. It can apply to different problems and, this makes it challenging because if we implement, if we apply the technique to one problem, people might not understand how to apply to a different problem. So, that's why we often get, many implementations, with problems from websites like Bitcode, for example, that apply dynamic programming, to a new problem.

And, well, in short, it's a technique to get, to get, an optimal answer to a problem, using, only, linear time, rather than doing full search on all possible, you know, combinations or path. So it gets you, like, a close to the good answer. Is that right? Yeah. In a short period of time?

Yeah. Yeah. That's interesting. Do you it seems like you're almost approaching, like, when you're you're talking about the dynamic programming, you're it seems like you're almost approaching, design patterns a little bit. Right?

And that design patterns have the same kind of characteristics is that I could show you how to do a design pattern maybe for one specific example, and I could show you a different example, and that might also be useful to you. Right? Do you do you guys do in the organization of the algorithms, do you guys consider design patterns? Are you thinking about incorporating them? Are you like, you know what?

They're gonna we're gonna draw a line between, you know, very very focused, solution based kinds of kinds of algorithms as opposed to architecturally, you know, architectural based algorithms or Question. Yeah. So we we are not trying to move into the, patterns space, because this would dilute our focus. And, then we would just become, you know, a pile of everything, like a pile of object oriented design patterns of architectural styles, of, algorithms, data structures, of, I don't know, AI models. So, you know, you can be everything.

You need to be really good at something at one thing. And, well, one more interesting, point, that they can, tell you about is the, how it works, this process internally, because, on the surface, it just seems like a collection of algorithms. Right? But we really have to think carefully about what include and what not to include because there are an infinite number of algorithms. So, we are trying to include, the most popular ones, and maybe some variations, but not too many.

So, for example, we can have, an if approach to solving a problem, and we can have one more optimized approach, which is more obscure, more difficult to read, but which is, you know, closer to what would happen in in real life. Hey there. This is Charles Max Wood. I'm excited because I wanted to let you know about this thing that I pulled together that I had just I've been dying to have this for years, and I never felt like I could. And then I just realized that there's no reason why I can't.

So, I'm putting together a book club, and we're gonna read development focused books, career books, you know, technical books, whatever. The first book that we're gonna do is going to be Clean Architecture by Uncle Bob Martin. If If you're not familiar with Clean Code or some of the other stuff that Bob has done, check that out. I've also talked to him on the Clean Coders podcast, which is on Top End Devs. But, yeah, we're gonna get on.

He's gonna show up to some of our meetings. And what I'm thinking is we'll probably have, like, 5 or 6 people, part of the conversation along with Bob and I at the same time. And we'll just, so somebody can come on. They can ask their question. And then we'll just rope rotate people through.

So we'll we'll mute 1 person, unmute another person when it's their turn to come on and and be part of the discussion. So we'll do that for, like, an hour, hour and a half. And then the other part of it that I'm putting together is just kind of a meet and greet gather area on Gather Town. And so after the the meetup and the call, what we'll do is we'll all go over to Gather Town, and you can just log in, walk up to a group, and have a conversation. And that way, we can all kinda get to know each other and and make friends and and get to know people across the world.

One thing that I'm finding is that, yeah, the meetups are starting to come back, but a lot of people don't have the opportunity to go to a meetup. And I really wanna meet you guys and talk to you. So we're gonna put all that together. It'll all be part of that book club. You can go to top endevs.com/bookclub to be part of it, and I'm looking forward to seeing you there.

The first book club meeting will be in December, the beginning of December. We're starting the 1st week of December. And, you'll also be part of the conversation about which book we do next. I have one in mind, but I wanna see where everybody's at. So there you go.

So you've got there's kind of an editing, kind of a curating of of maybe the poll requests or the suggestions for what to include. So you're rejecting that means you're rejecting. So if I'm, like, a student and I've got, you know, my own algorithm for something, it's probably not gonna get included in here because it's not no well known enough. Right? Yeah.

Yeah. You are totally right. So we only include, things that we can find the reference for, like maybe a Wikipedia article or it's mentioned in some textbook, because, as you said, we can't really include everything. Otherwise, it will be just unsearchable, and people will just be scared away from it. Okay.

Yeah. And every time, it's it's really, I'll I'll speak frankly. It's really difficult decision for me every time because I see that this person has made really an effort. They are trying to add value, but at the same time, I understand that I can't really notice this because because we already for example, it's very, evident with dynamic programming. We probably have around 10, maybe more than 10 examples of dynamic programming.

So that's why we are trying not to include them anymore because they are all similar, more or less. So how frequently do you add a new algorithm? What are you adding them, like, once a month or once a week, once a day, once a year? Mhmm. Well, it's very, because our core audience are university students or people just starting, you know, learning programming.

This is a highly seasonal for us. So because sometimes they have exams and they don't submit pull requests at all, like, nobody, because they're preparing for exams or passing them. Sometimes, maybe, there is, you know, summer holidays and so on. But other times, they are starting a semester and they are starting attending this, algorithm's classes, and they are all at once starting submitting, pull request. So it it really depends.

Sometimes we get, like, a couple of algorithms a day, and sometimes we don't get any for a week or 2. So you get a couple algorithms. You look at them. You do the research. You're looking for an article to support it if you haven't heard it or seen of it.

You you haven't heard of it before. And then you basically allow it or not. Right? You bring it in or or or say no. Yeah.

Interesting. Yeah. We we're also trying to, educate people. We have, for example, code of conduct, and other, like, documentation that says what to do, that you first should open an issue, to discuss what you want to do. Say, for example, that I I want to, add a bubble sort algorithm.

And then a maintainer will come and say that, oh, you know, thank you for submitting that, but, it's already present. It's in, like, source slash bubble sort. So you won't, you know, waste your time opening things that will be closed anyway. That's too bad because a bubble sort collect the only algorithm I could say off the top of my head without having to look it up. Yeah.

That is very unfortunate. Oh, no. Thanks. That might be true for me too as well, though. I I might say I might I might join Sean in that.

I know bubble sort. I got that one. And So I'm working on a new bubble sword. You're not gonna let me bring that in? It's a brand new kind of bubble.

It it's kind of a sinking bubble sword is the way I I describe it. We can't, like, get that into the project? Don't. Yeah. That that's very unfortunate.

Yeah. Unfortunately, really, it's it's the reality that we have because every every year, freshmen, they start, learning from scratch, and they go through all this, you know, bubble sort and things that we already implemented before them. And, yeah, that's not an ability for everyone to contribute. You know, Andre, I'm looking through the source code here on the the the, algorithm c sharp, repository. And one of the things I'm loving are the test cases that you have for all of these algorithms.

I'm, like, really, really loving it. I think that it's one thing to say, here, I'm gonna provide you with the algorithm, but I think it's totally different to say I'm also providing you with unit test cases for the algorithms as well. Mhmm. Right? I think that's very cool.

Yeah. Actually, they function as documentation. Right? Because, for example, if you do test driven development, then we would write test cases first and then, like, the, algorithm of function itself. And, here is the same thing that, we require that all the codes, should be covered sufficiently by test cases to make sure, well, first of all, that it works because I don't know everything.

Really, sometimes I I'm just looking at test cases and hoping that it works, and I'm trying to do my best, but there is no person who knows everything or can check, you know, this code is totally valid. So that's one thing that it helps maintainers. And another thing is that it helps people who come, they can look at them and they can, you know, debug test cases to see how it works. That's what makes this project different from textbooks, that it's not implemented in pseudo code, that's just printed, that it's a living thing. You can launch it and you can step through it.

That's cool. So is this repository mainly used for reference purposes, or can somebody go in there and start learning about algorithms in general and, you know, how they work and how to write them, how to come up with them themselves? Well, I think it depends on the person, what you prefer. So speaking from myself, I prefer a more structural, structured approach. I would pick up a textbook and read it.

And when I get to, pseudo code, okay, it's like, abstract. It's not specifically some language, but I'm a c sharp developer, and I'm used to thinking in c sharp. So, that's, the point where, I would open, the algorithms, reference implementation, and, see, what it looks like in c sharp. Yeah. I'm I just wanna say, I think the I I wanna underscore out.

I think the the cool thing about these test cases that's different from reading a textbook is they'll often it's kind of like a black box. Right? If you if you if you don't know how the algorithm works, but you can see how the the algorithm is being pushed and poked from the outside, in other words, the test cases, you can start to see what kinds of things that people were thinking about, that would were considered the constraints of the box that it contains that contains the algorithm. Right? I think it's something that goes beyond I think there's value here in these test cases that goes beyond what you would find in a normal textbook.

Yeah. Absolutely. Especially when we are talking about edge cases, that algorithms handle. Right. Then it really shines because in a textbook, you just get this, you know, a single if with a specific condition and you don't really understand why it's needed, why it's there.

It looks like it should be working fine without it. But, with runnable test cases, you can just open them and run them and put a breakpoint inside of this if and and hit it. Yeah. No. It seems very cool.

Andre, do you feel like with your exposure to all of these algorithms that you've kind of developed this superpower that you know more algorithms than, like, most programmers do? And then do you find yourself using that superpower in, like, meetings or when you're talking in pair programming sessions? Do you, like, you know, say, well, we should use the knapsack algorithm for this one. And everybody's like, woah. We don't know what that is.

Well, I guess I know more than, developers know on average. But at the same time, I wouldn't consider myself, you know, an algorithm developer because, I don't do this professionally. And, in the things I write, which are, like, web applications, you know, CRUD, copy paste objects from web page to a database. They are not really used that often. So I would say that I mostly use them for detective purposes because I just like learning stuff.

And there are people who know way, way more than I do, who actually work with them on a daily basis. Yeah. You really have to you've gotta kinda be in that space where you have an opportunity to really use these. And and I'm not sure where that space is these days. It kinda seems like, you know, the the frameworks are almost saying, we the algorithms are gonna be our domain.

We're gonna get you, you know, your your your your hash set, for example, you know, that sort of thing. We're gonna get you your concurrent dictionary. We're gonna take care of the kind of making sure we are very fast and solid reliable, and then you're gonna build on top of that. And when you're building on top of that, I don't know, it it feels like either you're inventing your own thing from scratch and you make it work, and it's fast enough, and you're like, okay. That's my algorithm.

Right? And because we gotta ship a product. Right? Or you live in this very special space where you have to be very, very fast, and you have enough, you know, resources to be able to really focus on a problem and really get close to what you believe is the fastest, the most memory efficient, you know, implementation, that sort of thing. Do you know what I mean?

If you go ahead. Yeah. Yeah. I would say that, what you have described are 2 opposites, and, life is somewhere in the middle. Because, yes, you are right that we are not solving it all from scratch and not writing, like, amazing new, algorithms every day.

But still, knowledge of them allows you to know how to apply them. So, for example, if I want to, you know, match items between 2 lists, then, I can do this with with 2 loops. But, if I use something like a hash set or dictionary, I can make it a linear complexity instead of a square. Right? So even though I haven't, like, written this dictionary from scratch, I still have to understand what operations on it are fast, what are slow, and, how to to use the thing.

Yeah. I personally think, that you should know, one level deeper than you work with. So, for example, if you use a dictionary, you should at least know, how it's implemented under the hood. That is such a great suggestion, by the way. I typically run at about one level higher, less deep than where I should be.

I don't even know the level I'm working on. I'm almost up there, but I don't know where I am here. That's for just me. So but I think that's a great suggestion. I love that.

Right? Because it'll does allow you to make decisions. Right? What should I do here? Do I have boxing, unboxing?

Am I dealing with, you know, am I picking a bad algorithm or a bad class to represent my data? Right? Should I be using something else? Great suggestion. Yeah.

Well, I'm a fool, though, compared to Andre, I think. So going through the the website, looking at some of the the algorithms that you have there, it is just basically the code to do this algorithm. There's no explanation of, use cases for each algorithm or when you might pick, like, doing a quick sort versus a merge sort, things along that line. So it then it seems like it's more like a companion to something, like you said, to your textbook or any anything else that you're working on that you just wanna see a concrete example of something that you only have abstract, information on. Yeah.

Absolutely. That's the way I feel about it, because, again, you know, writing textbooks, is an art in itself, And, well, I can do that. I haven't written a single textbook in my life. So, I leave it, up to people who, can do it better than me. And we'll have a link to the the the repo that's all on c sharp, but it's also in other languages too, isn't it?

Yeah. Absolutely. So, there are a total of 28 languages, in this organization. And, well, they differ in popularity a lot. Like, Python, for example, is much more popular than c sharp.

And, Java is also more popular than c sharp here. And, actually, that's also one of the things that I wanted to bring up is, well, maybe you have any ideas why why is it this? I think it's what students are studying or working with or learning. I think that your popularity is probably I think the appeal is probably more to beginner programmers. Programmers are just learning.

Yeah. You are just on point. So, with Java, many universities, give courses in Java, and, that's why, there are more people working with it. And it leads to some, quite interesting observations. So, for example, I will compare, Java, c sharp, Go and Rust repositories because, I have been working with them.

I have been reviewing Polycracker. And, what I can tell you is that in, RAST and Go, if somebody open a pull request, it's almost certainly will be merged because it's just very high quality. And, I think people who are working with those languages or at least in those repositories, they are all really professionals employed, and they have a lot of experience on the ZAR belt. For c sharp, it's somewhere in the middle. So the quality is quite high, but at the same time, I see many students also working with it.

For Java, it's much more active. But at the same time, sometimes we can get pull requests which, you know, just don't have, for example, a Java extension in a file. So they are totally negligent about that. And, another thing, actually, I have talked about seasonality, right, about the exams and so on. And another factor here is Hacktoberfest.

Are you familiar with that? Yeah. This event. Yeah. So, yeah.

Well, for those who don't know, it's an annual event in October where people are encouraged to submit full requests to open source projects and, they are then rewarded. They receive some gifts, but I think not last year. I'm not sure. And, so basically, what this leads to, to an influx of people really, like we get probably 10 times or maybe 20 times more activities than usual and we really just can't keep up with that. So, in c sharp, I can get, like, a pull request every 30 minutes, and, you know, I I just can can review all of that.

Yeah. That's the the other side of this, you know, popularity because, usually, it's it's not my main job. I have work. I do this in my spare time, but during October, it just consumes so much time that I just, unfortunately, can't keep up, and I just can't answer everybody. Well, we really appreciate you putting together something like this for, you know, the communities out there.

They're doing development and need to have, you know, these references for algorithms like that. So, you know, you might, not hear it all a lot, but I'm sure there's a lot of people that that really appreciate the work that you're putting into it. Yeah. Thank you. Actually, people come and really thank us in our Discord from time to time because, well, they have used our, algorithms to, to prepare for exams, and they got a good mark.

So they're really happy about that. And, I'm glad it really helps people. And, I have even worked with, well, it's very uncommon to be frank, but, I have worked with people in my company, who were really experienced developers, but they still wanted to, you know, brush up on, algorithms. Maybe they forgot something from their university years and, they still could use this repository, to look up reference implementation. Well, when I was in university, the I learned, Pascal, Fortran, and COBOL.

So I don't know if the algorithms are still necessary for those, but that's because I'm old. Sean tells a joke every week that ends with a pussy punch line. Yeah. There was back then back then, there was such a disconnect between what you learned in university and what the the, you know, the the commercial businesses were looking for in developers. So, you know, now that they're they're teaching things like, you know, Python and Java and some are using dot net is is really great.

So people, once they get out of you and soon as university, have something they can actually put the to good use in an actual job. Yeah. I I kinda get the feeling that's gonna always be true, that there's gonna always be a discrepancy between what you can learn at a university and what's actually needed for when you're on the job. Right? It just it just seems like, especially in this world, right, where technology is moving so fast that developers are, you know, all constantly researching to stay on top of it.

Right? If that's the world we live in, of course, the universities are gonna be maybe a little bit behind. Or, of course, the university is gonna say, oh, let's all teach this, because this is easy to teach. Right? And I've got my course already ready or whatever the whatever the incentive is.

I think it is kinda interesting. But back to this, you know, back to this repository. Yeah. I just wanna I agree with Sean. I think that this is a it's an awesome, like, almost beautiful creation that's sitting out here.

Right? It's got some really, high quality information in it, it seems. Yeah. We are trying to bridge the gap between, as you said, universities and, well, real life. And while I personally, I don't think that it's, a big problem that you don't get, knowledge for work at university, because if you want to get knowledge for work, you can go work and get paid there instead of spending money on university.

I think it's, you know, more for different things, like for, getting this really, broad experience with many things, which you wouldn't necessarily try at work. We're still trying to, you know, bridge the gap because people study at universities, and they need to be prepared for work or, just if not for work, just for contribution to open source. And, from my experience, I have seen that many people don't really know about open source. So, because it's not taught anywhere. You know, there is no, Car Citizen University, which is called open source development.

And, most people at work also work with, closed source. So, that's why I think that's why I'm so passionate about this project is that it brings, more people to open source, basically. Yeah. I think anytime that somebody puts in this many hours to put together something for the community that's, you know, open source and they're not getting paid for, you can really feel that passion that they've have to have in order to, you know, feel like just internally to themselves that it was worth it. So is there anything else that you wanted to cover before we move on to PIX and and wrap up?

Well, I think we've had a great discussion, and, I think we have covered everything. Okay. Great. Yeah. I think we've had a great discussion too.

And, hopefully, you get some, you know, more, contributions of people helping out with maybe some of these pull requests and things like that. So especially this October, you're not totally overwhelmed, that would be great for the community to help out there. Yeah. And, actually, one more thing for people who are thinking about contributing, you don't necessarily have to add a new algorithm. There are a lot of other things to do.

Like, for example, sometimes our workflows break and they need to be fixed. You can do that. Sometimes a new version of dot net comes out and we need to update to it. And, we are also trying not to do this by ourselves, but to open issues for people to pick this up because it's really a great opportunity to, get started. K.

I love it. I love it. Alright. With that said, let's, go ahead and move on to picks. Have you ever wished that you had a group of people that were just as passionate about writing code as you are?

I know I did. I did that for for most of my career. I go to the meetups. I try and create other opportunities, and it was just really hard. Right?

The meetups, I got some of that, but they were only, like, once or twice a month. And it was just really hard to find that group of people that I connected with and and really wanted to, you know, talk about code a lot. Right? I mean, I love writing code. I think it's the best.

And so I've decided to create this community and create it, a worldwide community that we can all jump in and do it. So we're gonna have 2 workshops every week. 1 of those or 2 of those every month are gonna be q and a calls, right, where you can get on. You can ask me or me and another expert questions. The rest of them are gonna be focused on different aspects of career or programming or things like that.

Right? So it'll go anywhere from, like, deployments and containers all the way up to managing your 401 k and negotiating your benefits package. We'll we'll cover all of it. K? And And then we're also gonna have meetups every month for your particular technology area.

So we have shows about JavaScript, React, Angular, View, and and so on. We're gonna have meetups for all of those things. I'm gonna revive the freelancer show. We'll have one about that, right, so you can get started freelancing or continue freelancing if that's where you're at. And I'm working on finding authors who can actually do weekly video tutorials on something for 10 minutes that's related to, again, to those technology areas so that you can stay current and keep growing.

So if you're interested, go to topendevs.com/signup, and you can get in right now for $39. When we're done, that price is going to go up to $75. And the $39 price gets you access to 2 calls per week. The the full price at a $150, which is gonna be $75 over the next few weeks. That price is gonna get you access to all of the calls and all of the tutorials and everything else that we put out from Top End Devs along with member pricing for our remote conferences that are coming up next year.

So go check it out, topenddevs.com/signup. Mark, you wanna start us off with your pick? Yeah. I actually have, what I think is a good one for you kids, this time, you know, that I really, really am enjoying. It's dark on, Netflix.

It's a German sci fi kind of thriller, and, if you don't speak German, you're gonna wanna have subtitles on in whatever language you speak. Keep the original German vocals because, the actors are great. The casting is over the top. Really, really good in this series. I, by the way, tried starting dark because Netflix recommended it to me 2 times before this last time.

And both times, the first one of the times I had, like, English voices overs, so I could, you know, understand, and it would be easy. My brain didn't have to read, and didn't work because the performances weren't great. And, one of the other times didn't get through it, but it was again recommended to me. I got into it, and I it's 3 3 seasons, and I'm I think I've finished the first season. And I'm and I'm, you know, just binging it, episode after episode.

Really liking it. If you like, if you're like me and you like, kind of if you like sci fi and you like surreal, mind bending kinds of kinds of things, this is, I think, definitely definitely a good pick for you. Alright. I had German in college, but I'm old, so that was a long time ago. Yeah.

No. The the you got great performances. You got what seems like a really good story, some mind bending stuff, you know, and it's like it also is getting a little intense, it seems. It's like it's kind of like a slow crank of the pressure, right, across these episodes of the season. It's just getting it's just just building.

So, yeah, I'm really enjoying it. Okay. My pick this week is also a a Netflix show, but it's not, something that's, you know, fiction like like yours, It's a show called Blown Away. Oh, right. Season 4.

Just season 4 just came out. Yes. It's very good. Yep. My my wife loves to watch it, so it's good for all members of the family if you like class.

So blown away, they're talking about glass blowing. So Also, I will say that their production value also, they had you know, the first couple seasons, they had a host that was made me cringe every time I watched this guy. He didn't see he seemed like, you know, somebody who just showed up and got on camera with no qualifications. They seem to have fixed this in season 4, and their production value and editing is so much higher than in previous seasons. I almost would say jump into season 4 instead of seeing the earlier ones.

But, yeah, it's a it's a great show. Our family loves that show. Yeah. And then there was the holiday special too. I don't know if you caught that one.

I didn't see that. Yeah. So that was, maybe 2 years ago or something like that. So there was a blown away holiday just in doing, like, Christmas stuff and things like that. So try to find that.

But, yeah, that's what, my wife and I are watching this weekend. So check it out, blown away on Netflix. Alright, Andre. Do you have a pick for us? Yeah, absolutely.

But it's very, very different from yours. Okay. So, for me, it's a book, software architecture in practice, and, I have read it, relatively recently, and it's very, well, it's a really awesome book. I can totally recommend it to everybody. It's about, software architecture and, qualities of programs, which we don't usually think about.

So today, we have talked about algorithms and data structures, but there are also qualities of programs like main maintainability, how readable is it, and, how easy it is to split it up so that many people can work on it and so on. So we don't usually think about that. That's why I wanted to recommend it. Okay. Great.

Awesome. Well, thanks for coming on the show. Yeah. Thanks, Andre. If our listeners have questions and wanna reach out and get in touch with us, let us have suggestions or just feedback.

They can find me on all the platforms. I am at dotnetsuperhero. That guy right there. Yeah. It's a podcast, Mark.

They can't see where you're pointing. I'm pointing right there. They can see it. I'm pointing right at it. Alright.

Thanks, everybody. We'll catch you on the next episode of adventuresin.net.
Album Art
The Role of Algorithm Implementations and Testing in Development - .NET 181
0:00
54:07
Playback Speed: