¶ Welcome and Introduction
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 ?
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 .
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 ?
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 . 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 .
Okay , so tell us more about that electronic system , because I'm curious . Are you using
¶ Professional Background and NET Experience
a NET with AI in that electronic system ?
Come again . What do you mean exactly ?
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 ?
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 .
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 .
It's like easy way to upgrade your legacy system to a new version of NET .
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 ?
yes , okay , so what are some of the challenges that you've faced throughout your journey using dotnet as a software development ?
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 .
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 .
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 ?
Because they're different types of NET , isn't it ?
Yeah , it is .
I mean , NET Framework came out . Is it just library ? That's different .
No , it's a complete development stack . I mean , the thing is that NET Framework came out back in 2001, . 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
¶ Challenges in NET Development Journey
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 .
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 . That's a win-win for each and everyone .
You can put a NET in the Linux environment .
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 .
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 ?
Well , I mean for the customers on the one side . Yeah , is it just like ?
updating libraries or migration ? No , no , no .
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 .
Wow , how long does it take you ? That's quite an accomplishment .
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 .
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 . 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 .
¶ Building the Gemini SDK for NET
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 .
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 . Gemini .
So it's really three lines of code and you can use Google Gemini in your application using Microsoft Extensions AI package .
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 .
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 .
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 ?
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 .
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 .
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 .
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 ?
Well , in my case , that with the library data I created is that I keep it as small as possible .
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 .
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
¶ Open Source Libraries and Dependencies
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 .
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 ?
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 .
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 .
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 .
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 .
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 .
Okay , wow , yeah , so yeah , that's quite good . Plus , you have 50,000 downloads on your SDK , so it's quite amazing .
Almost almost .
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 ?
um , yes , so let's , let's take this in uh , two tracks um on the one side . 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 .
And .
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
¶ Community Building and Personal Life
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 .
And so then , with you know after , sorting out a couple of things with the business and then with private life .
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 .
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 . 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 .
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 .
Is that um ?
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 .
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 .
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 . 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 .
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 ?
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 .
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 . That's the daily experience . And
¶ Advice for Software Developers
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 . 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 .
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 .
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 .
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 .
See you around , take care .
