
Microsoft Community Insights Podcast
Welcome to the Microsoft Community Insights Podcast, where we explore the world of Microsoft Technologies. Interview experts in the field to share insights, stories, and experiences in the cloud.
if you would like to watch the video version you can watch it on YouTube below
https://youtube.com/playlist?list=PLHohm6w4Gzi6KH8FqhIaUN-dbqAPT2wCX&si=BFaJa4LuAsPa2bfH
Hope you enjoy it
Microsoft Community Insights Podcast
Episode 33 - .NET Open Source Library: Lessons Learned with Jochen Kirstätter
In this episode, we speak with software developer Jokey about his extensive experience with .NET, the challenges of integrating legacy systems, and the importance of continuous learning in the tech industry. Jokey shares insights on his journey in software development, his contributions to open source, and the innovative projects he has undertaken, including the creation of a unified SDK for Google Gemini. The conversation emphasizes the significance of community engagement, personal growth, and the evolving landscape of software development.
Joki shares his fascinating journey of building the Google Gemini SDK for NET from scratch—a project that now approaches 50,000 downloads and caught the attention of Microsoft engineers who contribute to its development. You'll discover how he unified Google's AI interfaces before Google themselves implemented a similar approach in their official SDKs, demonstrating the innovation possible within the NET ecosystem.
Link to the Repo https://github.com/mscraftsman/generative-ai
Thank you very much. Welcome to Microsoft Community Insights Podcast, where we share insights from community experts to stay up to date in Microsoft. I am Nicholas and I'll be your host today In this podcast. We will dive into NET Open Source Library lessons learned. But before we get started, I want to remind you to follow us on social media so you never miss an episode and help us reach more amazing people like yourself. Today we have a special guest called Joki. Can you please introduce yourself please?
Speaker 2:Yes, hi there everyone. My name is Jochen Kirstedt or, as you said, joachim is Joki, which keeps it easy for each and everyone. Yeah, I'm a software developer since now more than two decades. Enjoying development on Windows is where I started, kind of on classic desktop development. I jumped into the first betas or early betas of NET back in the 2000s and, yeah, kept it in regular touch with it, went through the different stages of the framework and enjoying latest NET, 8.NET 9 development and bits and pieces. It's quite good. Apart from that, doing a couple of things on Cloud, like on Microsoft Azure or on Google Cloud Platform, and having some fun with AI recently Good, great.
Speaker 1:So let's dive into what you do on today as a software developer. Can you just briefly describe what your role is and what you're involved?
Speaker 2:Okay, yeah, sure, well, actually I'm running my own business, so I'm offering software development services for customers mainly in Europe. Different projects, different areas keeps it nice and interesting over time because there are always new challenges coming up, which is pretty great, pretty great. For example, recently I was, I'm, in the middle of development regarding the electronic sick leave system in Germany, so it's pretty interesting how to, you know, develop this and make a client integration with NET, which is pretty cool. On the other side, I have to admit I do legacy applications because I'm the majority of my time I spend actually with microsoft visual fox pro, which is some really old school stuff, but still, yeah, it's, it's a cash go for for many clients and, um, you know, the the um numbers of developers that are still very familiar with these kind of systems similar to COBOL is getting lower, so there is a high demand.
Speaker 2:I mean, I'm pretty happy. My position is looking very good. However, keeping on the pulse of time, as I mentioned, I'm also doing NET and, yeah, as I said, electronic sick leave system, bits and pieces, electronic invoicing system that is in Germany, that is in Europe. So these are all these kind of things that I'm integrating into these kind of applications using NET. Kind of applications using NET. So still working with possibilities that you can enhance existing legacy systems with latest functionality provided by NET.
Speaker 1:Okay, so tell us more about that electronic system, because I'm curious. Are you using a NET with AI in that electronic system?
Speaker 2:Come again. What do you mean exactly?
Speaker 1:As in the electronic system you say you're making with NET, as in the back end, are you using any like AI with it involving?
Speaker 2:I think Not really. So actually, what I'm doing is that I'm writing on the one side, I'm writing components that can be then used and integrated with the legacy applications. So it's actually direct integration, you know, like via COM interface, which is one possibility. However, there is also the possibility that you can have this COM free integration of runtime into the application. So there's a kind of a bridge system, and that's what I'm using, and so this gives us the ability that, okay, with the existing legacy systems, we can then, you know, use the performance, security and power of what NET is offering and bring it into those legacy applications, you know.
Speaker 2:For example, if it's like you need to have communication with a third-party system, there is an existing library for NET. It's easier to use this NET library, write some kind of an interface slash wrapper for the legacy application, instead of having to write a complete client outside of NET.
Speaker 1:It's like easy way to upgrade your legacy system to a new version of NET.
Speaker 2:Well, it's extending it. The core and the application stays in Foxmoor, but pieces, components, functionalities, let's say modules of the applications yeah can we uh run then with with that components?
Speaker 1:yes, okay, so what are some of the challenges that you've faced throughout your journey using dotnet as a software development?
Speaker 2:so oh right, right, right there. There had been quite a few over the time. So one of the things is actually that in between I was too much focused on on sticking with her with um, you know, a legacy application, so I missed about half a year, one year of active development. So I was like, oh my word, it's like you're losing a quarter of your life, you know, if you're not on the spot, like with a one year of a break, it's like. You know.
Speaker 2:It was like I think it was back from dotnet framework 4.0 to 4.5 or something like that, and there was so much stuff happening during this time and I was like, oh, my word, there was so much stuff happening during this time and I was like, oh, my word, there's so much new stuff in NET in bits and pieces. And then I was actually quite happy that NET Core came out, because then it was really like, okay, everything new from scratch, at least code-wise. And I also liked the fact that NET Core from the beginning was cross-platform, because, although that I'm doing my professional activities on the Windows platform, I'm a diehard Linux user since very early days. So therefore I was really happy as well that, you know, with that core. I could then get my hands directly on the latest dotnet stuff, um, and experimenting with it on on linux and not just on windows, so that that was actually how it helped me to bridge that gap of knowledge that I lost in between.
Speaker 2:And other other than that, yeah, I mean having this NET Core, net development from scratch, and the comparison about the differences in the APIs between NET Framework and what is now in NET 8 available and bits and pieces, so how you can bridge these two with using NET Framework and what is now in NET 8 available and bits and pieces, how you can bridge these two with using NET Standard. That was quite challenging, but on the other side, I love it because it's really fantastic way to migrate applications as well. If you have something still running in NET Framework, you push it onto NET Standard and you have something still running in dotnet framework, you push it on to dotnet standard and you have your your open path to migrate bits and pieces here and there then to dotnet 8 and it's it's just great to work with that okay, so one of question I've got act is that what's the difference between dotnet frameworkwork and NET Core?
Speaker 1:Because they're different types of NET, isn't it?
Speaker 2:Yeah, it is.
Speaker 1:I mean, NET Framework came out. Is it just library? That's different.
Speaker 2:No, it's a complete development stack. I mean, the thing is that NET Framework came out back in 2001,.
Speaker 2:2002. Framework came out back in 2001, 2002, um, and it is. It is um, built on top of the windows 32 apis, so you have still quite some activities that are windows specific and the. The breakage came then with NET Core, because NET Core directly had the shift in the paradigm about hey, there's not only Windows, there's Linux, there's macOS, there are other platforms like ARM64, as it turned out, and so, even though that they share the same name, net, it's two different products that are having similarities, and NET Core or nowadays, since NET 6, it's just NET is really a product that has been built up from scratch, being cross-platform, giving you this unified experience that you can really have these cross-platform, giving you this unified experience that you can really have these cross-platform development.
Speaker 2:Of course, there are still, you know, here and there, some restrictions because certain implementations are not available on one or the other platform. However, it's completely free of any kind of Windows activities and I think this is the major step forward that Microsoft did when they came out around 2015, 2016, with the development of NET Core, and I really love it about this way Because, even if you see, on Azure, the majority of systems is running on Linux and not on Windows anymore, Having done the ability that you can say okay, you can offer your services for the net developers running on a stable Linux system under the hood.
Speaker 2:That's a win-win for each and everyone.
Speaker 1:You can put a NET in the Linux environment.
Speaker 2:Yeah, sure, I mean, if you set up your project, you're, like you know, NET new and you write your project and your implementations and bits and pieces and you have your assembly. Because whatever you compile with your NET build, at the end it's a DLL that comes out and then you need to host, environment the host to execute and launch your assembly. The interesting thing is, you can take the example, the DLL as it is, from a Windows system and you can run it on Linux system and vice versa, and even on a Mac system.
Speaker 1:Okay, yeah, it's multi-system now, so everywhere it can run the NET, so that's quite cool. So what are some of the most interesting things or projects that you've been on that use NET or something like that?
Speaker 2:Well, I mean for the customers on the one side. Yeah, is it just like?
Speaker 1:updating libraries or migration? No, no, no.
Speaker 2:No, no, I mean one part is that we have their existing legacy systems about extending them, even migrating them, to NET. On the other side, it's a situation that last year, around February, march, I jumped into a sprint organized by Google in regards to their Gemini AI system, and there I then said, ok, let's have a look what is available for Google Gemini, and, to my surprise, it's a situation that there is no SDK by Google that allows you to use Google Gemini in NET. And so then last year in March, I sat down because it was a, let's say, scheduled sprint for over four weeks and, yeah, I really went into the documentation, into the API reference, into the samples about how the existing SDKs like in Python worked and how they were designed, and I created the Gemini SDK for NET from scratch.
Speaker 1:Wow, how long does it take you? That's quite an accomplishment.
Speaker 2:Well, actually I have to say that within those four weeks, so during the month of March, I got it up and running with, let's say, 80% of functionality compared to the Python SDK, and then, in, let's say, april, may, I added the remaining bits and pieces. And the interesting part is also that Google Gemini actually comes with two interfaces. On the one side, you have the, let's say, the one running on Google AI Studio, so you get one API for Gemini, which is more like for, you know, hobbyists and prototyping, you know, just for quick and easy experimenting. But on the other side, you have Google Cloud Platform, and there you have the second interface, which is then actually Vertex AI.
Speaker 2:And the interesting part back in the time, let's say last year, march, it was that Google offered two SDKs for each programming language.
Speaker 2:So there was for Python, you got one SDK for Google AI and one for Vertex AI. For Java, the same. There were two SDKs for each program language that Google supported, which was really strange and weird, and so one of the things that I did is that I looked into the documentation of both interfaces, and the NET SDK that I created directly had this unified experience, so that, using just one SDK for NET. You could actually then program against both interfaces, whether it was the hobby side on the Google AI Studio interface or the Vertex AI running on Google Cloud Platform. And the cool part is actually that around about October, november last year so let's say like half a year ago this is when Google themselves came out with their unified SDK for Python, which offered exactly the same kind of feature that you take one SDK and you can decide during initialization which interface that you want to use and operate against. So that was a pretty cool experience and you know to see that unified SDK All right.
Speaker 1:You get it in NET before even Google handed it out in their official SDKs. Okay, yeah, I'm not sure if there's one SDK for, like Agile AI, so I'm not sure that there's some for you. Like Ag AI, found stuff you want to do dot net or something for building applications. So it could be like an integration alongside Google, if you want.
Speaker 2:Yes, there's additional functionalities. Is that you have for Microsoft? You have semantic kernel and you also have the Microsoft Extensions AI. And the interesting part is that, based on the interface definition in the Microsoft Extensions AI, I created a second package specifically for Microsoft integration. So meaning that my package that I created for Google Gemini has a second NuGet package that offers those implementations. So meaning that just by using one of my packages, you get the what is it? Ichat client as well as the iEmbedding generator for.
Speaker 2:Gemini. So it's really three lines of code and you can use Google Gemini in your application using Microsoft Extensions AI package.
Speaker 1:Okay, so you can. Probably it's a way to integrate bit of Google AI and Microsoft AI into your NET application so they have both functionality.
Speaker 2:Yes, yes, I mean. Well, it is that you use the Gemini, the Google AI system, in your NET application. So it is separate from OpenAI, from Azure OpenAI, so it's just Google Gemini. This is what you can use. All the available models, whether it's 1.5, 2.0, 2.5, the latest models, it's 1.5, 2.0, 2.5, the latest models, even gemma, um, all of their, all of the models that are provided by google are supported by the sdk, and you can again, with adding the nougat package three lines of code and then you can, you can use google gemini in your dotnet applications. Straightforward, yeah, that's, that's quite cool.
Speaker 1:So let's dive into some of the open source things, that contribution that you're doing, because you mentioned earlier that you you created your own sdk for dotnet. Have you been create? Have you created any like open source libraries?
Speaker 2:well, it is open source, this one, so this gemini sdk is an open source library, so it's it's hosted on github. Um, I guess we, we, I don't know, should I share the link with you you want to put it in notes or something.
Speaker 1:Yeah, so later on I just put it up in notes, thanks, yeah, okay, so it's open source and anyone can use it and it needs away. That's quite cool, yeah yeah, you get.
Speaker 2:You get it as a new cat package. So, simply by you, you know, go forward, say dotnet, add package, msc, dot, generative AI, you add it to your project. And the interesting part is also that, uh, it works for dotnet framework, yeah, um, as well as for dotnet core or dotnet. So it's it's supporting, um, both uh sites. So you can, you know, use the full range of net applications in order. Order then, to integrate Google Gemini with it.
Speaker 1:Okay, that's quite cool. That's amazing. This is a quick question for myself. So what are some of the? How can you integrate One again? I can't remember what's the question. Yeah, how do you keep track of NET libraries up to date? If you should check for vulnerability in CSV, what's the best way, a more efficient way?
Speaker 2:Well, in my case, that with the library data I created is that I keep it as small as possible.
Speaker 2:So I think I have maybe one third party and I think, two and two, yeah, because, as I said, I mean I have the Microsoft extension logging to provide iLocker interface, but I really keep it on purpose on a small number of dependencies and I think at the moment there are two maximum free libraries that I need in order to implement the SDK, and if there is the need for more, I have a separate package for it. So, for example, if you want to use the integration of Google Gemini with ASPNET, there's actually a web package that is built on top of my core package.
Speaker 2:If you want to integrate it, as I mentioned, with microsoft extensions, ai, there's a microsoft package on top of my core package so that you know, the actual number of dependencies is as small as possible. So this this helps me to keep a good overview and I'm also like more or less keep a good overview and I'm also like more or less um. Every second, every other day I check if there are new get updates and um and then I keep it up to date, like just earlier today I did. I saw that there was a package dependency package that was updated. Um did the upgrade and pushed it out. So earlier today, just a few hours ago, I pushed out a new release based on the fact that everything is just running on, you know, ci CDs. For me it's about taking the version, pushing it and then at the end it appears automatically on NuGet in the gallery and people can update their clients.
Speaker 1:Yeah, because I remember at my current workplace I think we kind of use Dependent Bot for GitHub to try to update it, but there's a few like we still have to approve the PR and check whether the CSV is correct against the latest one and find a fix towards it so I guess the best and what your advice is can you the apis that you use in your library at a smaller minimum, so you can just only concentrate on few exposure that you need to update?
Speaker 2:yeah, at the moment I'm monitoring myself. As I said, every second day I check if there's package updates, because I don't have much of dependencies. However, I also looked already into the Dependabot and I have it ready at hand. It's just that I need to push the changes into the repository and enable it on GitHub so that I get the automatic pull requests from Dependapod if there's anything. And so far I have to say that, for example, with the Microsoft Extensions AI, because they are still in preview and there's a lot of, let's say, movement happening and there's a lot of, let's say, movement happening. It's pretty cool actually that Steven Taub from Microsoft, he is actually creating the pull requests for my SDK if there are any changes in the Microsoft Extension AI, and he does it also for a couple of other repositories, which is pretty cool because you know it's like wow, you're getting pull requests from a Microsoft team for your SDK.
Speaker 1:Yeah, Wow, yeah, it's quite a lot of contributors. It means that lots of people are using your SDK, so it's great it's an amazing thing to do I'm just checking, let me have a look.
Speaker 2:Um well, we are close to 50 000 downloads on new get and a total of about 75 80 000 over all four packages. So yeah, maybe a few people are using the package not so many, but I mean, I'm super, I'm super happy about it. I'm close to 50,000 downloads. I mean, I didn't expect that when, I started it last year in March. So it was like come on, I want to use Google Gemini for my own NET applications, and I was like okay let's put it as a repo or make it public see what happens, and yeah, it's fun.
Speaker 1:so yeah, I'm curious to know whether microsoft got like a github, like github copilot, with dot net, because I know that they have one for video studio and video studio code, so I'm not sure if they have one for dot net or a different interface like ar built-in. Yes, you, do.
Speaker 2:On the one side, I have to say, for example shameless spot now I'm using JetBrains Rider because I'm running on Linux, so I'm actually doing the development of this SDK is happening on Linux, so I'm using JetBrains Very cool, cool JetBrains Rider. So I really love it. On the other side, on windows, I'm using visual studio and I'm also using visual studio code on both platforms. So, and yeah, as you might have noticed, I really love and like google gemini. So since the very beginning is actually that I'm using their code assistant, um, in order then to review and to improve my code. So, just, it was only recently that I started experimenting a bit more with copilot. However, since since almost two years now, I'm using Google Gemini as a code assist and so far I've been really happy. It's also for the SDK. The majority of the documentation, whether it is source code documentation like the XML docs, or even if it's then actual documentation or if it's unit tests that I needed for my SDK, the majority of them has been generated using Gemini.
Speaker 1:Okay, wow, yeah, so yeah, that's quite good. Plus, you have 50,000 downloads on your SDK, so it's quite amazing.
Speaker 2:Almost almost.
Speaker 1:Yeah, so, apart from your passion for dot net and software development, uh, so we like to always get to know our guests, so are you? What do you like to do in your spare time? Do you like to just contribute to open source community?
Speaker 2:um, yes, so let's, let's take this in uh, two tracks um on the one side.
Speaker 2:On the one side is a situation that, um, before I immigrated to to mauritius, I was yeah, I grew up in germany, so, uh, during time I was already part in the developer ecosystem. For over two years I was running a regional user group focused on Foxpro Until. About the end of 2006, then beginning of 2007, I immigrated to Mauritius, enjoying it here on the tropical island. It's pretty cool, but the situation was that the concept of user groups was not really present, so people were like doing their nine to five jobs.
Speaker 1:And.
Speaker 2:I was then asking a few colleagues at the time it's like don't you do you know voluntary or in your free time user group meetings, maybe in the evening or maybe on a Saturday? And they were like what are you talking about? What is this user group? We haven't heard about that. We haven't heard about that.
Speaker 1:And so then, with you know after, sorting out a couple of things with the business and then with private life.
Speaker 2:It was that in 2013, my let's say yeah appetite for user groups grew so much that I then just said okay, I start my own, you know, purely selfish and I have to say that.
Speaker 2:Then I have to say that it's like you know, I had this concept, this idea about you know doing like a weekly code and coffee meeting just at a, at a public coffee, and and seeing maybe somebody is is showing up, and I have to say that I think the first six times I was completely on my own, I don't know. I spent there like two hours at the cafe having my tablet, checking my emails, doing you know bits and pieces, and hoping that somebody would show up. And then finally, after like seven weeks, two people showed up and they were actually Linux guys and, as I love Linux, we actually talked about a lot of Linux during this first real get-together back in 2013.
Speaker 2:And, yeah, now, with 12 years passed, we are it's the largest user group here on the island in the country. We have like close to two and a half thousand subscribers or members Since 2015,. We are organizing an annual developers conference. Our next one is scheduled for July. Last year, we had over 1,500, 1,600 attendees over those three days and so, yeah, it's been really a blessing.
Speaker 2:You know that I started the user group back then and I'm still having fun because I have. You know, I have this passion, this drive about sharing experience with others. Yeah, also, if they're coming up with questions, I like to assist. I like to help. Maybe, you know, asking the right questions when they are stuck to stimulate them about coming up with solutions, maybe looking at problems at a different angle. This is what I like, which also means that during the past years, I participated in a couple of mentorship programs. I helped a couple of people to excel in their areas. So this is one side in my spare time. On the other side, is that private life is that well, I try from time to time to go scuba diving. However, that's not happening often enough. Diving, however, that's not happening often enough. Um, since covet or since after covet, um also that after I had been uh treated and cured uh from cancer.
Speaker 1:Is that um?
Speaker 2:we are looking more into yeah, we are looking a little bit more into gardening, you know a little bit more healthy activities, so you know, enjoying quality of life yeah, that's brilliant.
Speaker 1:Yeah, so, in terms of the, the user group, one kudos to you, because some and it started the, the journey or anything. It's it's quite tough, but if you keep going towards it it get eventually better. So it's just, it's, it's normal. Yeah, so it's amazing thing that you do, trying to balance everything else your work, your passion for the community, as well your hobbies with, like, doing things that help your, your life, your lifestyle, whether it's your, your personal goal, yeah, so it's quite good yeah, time management is, um, quite important.
Speaker 2:Um, the thing is also that, as I'm running my own business, um, yeah, I have a high degree of flexibility. Um, with my customers being in in europe. I also have the advantage that, with the time difference of, at the moment, two hours that I'm ahead of them. I have flexibility in the morning. On the other side, I'm not doing a classic nine-to-five job because, you know, I have an obligation to say that.
Speaker 2:You know there are tasks that need to be done. I'm focusing in them and it, you know, sometimes it's happening like being under the shower in the evening, it's like, oh yes, this is how I can try to solve the problem for the customer. And then I can happen, like, at 10 o'clock in the evening, I pop up, pop open the laptop and I sit down for another one hour, two hours, maybe three hours till after midnight and to come up with a solution and, um, so, yeah, so, and I can, and I can, you know, put this on my, on my uh spreadsheet like productive time and at the end of the month I can charge a customer for that.
Speaker 1:Yeah, sometimes that happens to anyone. Really sometimes you can just have a like light bulb moment when you're not, when you're not working and when you're sleeping, and then you want to just do something, fix an issue because it's in your head, or write it down so that it's that you're not alone. So it happens to myself as well. So whether it's just write it down in the notes so tomorrow you can just go ahead and test it to see if it's fixed, so that's yeah. So, as this podcast coming to an end, russian, so any other advice that you had do you recommend people when going into software development or dot net?
Speaker 2:well, advice number one never stop learning. I see this. You know you have two students. They are learning for their studies, to get their graduation done, for the exams. When you then look at professionals, especially their juniors, is situation that they literally stopped learning, and in the first place. You know, it's like when, when we have new members coming to the community, it's one of my pet questions. It's like how many books did you read during the last 12 months? And it's amazing to see first the reaction on people's face and then getting the answer from them.
Speaker 2:It's like, well, I read maybe one, two books which is already a lot um and and and it's like, but during studies, how many books did you read? And they were like, yeah, I was like going through five, six, maybe seven books during a year. But now I have my job and they stop learning. And I'm like, no, you need to continuously learn. And I mean, we see it, the previews of NET 10 are just coming out and there's lots of changes, a lot of new stuff, new concepts, new ideas that the teams at Microsoft are putting into it, and it's a continuous journey. So you can't just say, okay, I graduated, I got my job, and forget about learning. So no, if you want to stay ahead of the game, if you want to play in the major leagues, if you want to be good in your job, continue learning.
Speaker 2:That's the daily experience. And whether you do it for programming or maybe something else, like a hobby, I love doing language learning. It's that, apart from English, german, I know a little bit of French, I know a little bit of Mauritian Creole, but I also, because of another job in the past, I actually started to learn Dutch, which is also pretty much fun. But the quintessence is learning is a daily experience. You wake up in the morning, you learn something. You wake up in the morning, you learn something.
Speaker 2:If, by the end of the day, you haven't learned something new, pop up a book you know and learn something, because this keeps you stimulated. And the funny thing is, out of own experience, even that I sometimes, you know, learn something that has absolutely nothing to do with my current assignments. In about three, four, five months later, it's like chucky, are you aware of this and that? And I'm like, yeah, I read about that already, like you know, some months back, and it's an interesting concept and it can be done in such and such a way. And people are like, wow, that's great. Let's, let's, you know, dig deeper into that. And so this really helped me to stay, to stay up to date yeah.
Speaker 1:One thing I want to add is that everyone learned differently, so you don't. If you're not a reader like myself, you can still like watch videos or learn by audio as well. So everyone learned it different. But I think the important thing is to be consistent. Consistent and you're learning, and don't rush it. Learn at your own pace, because the fast movement in microsoft on ai is overwhelming. So you just have to take time and learn bit by bit. You don't want to get overwhelmed with too much learning at once, so learn it on pace and just be consistent. I would say yeah definitely, definitely.
Speaker 2:That's great advice. I mean, first of all, choose your preferred medium. Some people like to read, others like to watch videos, others like to listen to podcasts to learn things. It's up to you. Choose what works for you. Um, and yeah, consistency is key. You know, every day a bit, accumulate it over time. So you know time is your is the game changer. You know the classic race between the hair and and theise. Keep it going. You know persistency always wins over talent. And, last but not least, look into the fundamentals. So, whatever you're exploring as a technology, look into the fundamentals, build up a strong fundament and then you can. You, you know, spread out into other areas, but the important part is really about fundamentals and when you get them done with your pace, then the other things, like more high level activities, they fall into place because you have a better understanding of the fundamentals yeah, that's great.
Speaker 1:I invite. Yeah, I always start to the basic of it before learning, so the language learning agents and stuff, how to learn, like what it is and stuff, or fundamental of it. Okay, so, uh, thanks for joining this episode. Lucky, it's a pleasure and I learned some bit of dot net and new library, so it's amazing thing to see everyone learned something. I learned something as well, uh, thank you, so I hope you have a great much, nicola have a great time.
Speaker 2:See you around, take care.