OM DENNE EPISODE
In this episode of Dynamics Corner, Kris and Brad sit down with Stefan Maron — two-time Microsoft MVP, open-source powerhouse, and the mind behind the BC History repo and LinterCop — for a conversation that will make you rethink everything about your development workflow. Stefan casually reveals that he barely opens VS Code anymore, running nearly 100% AI-generated code across multiple projects simultaneously from nothing but terminal windows. But how does he trust what the AI produces? That's where it gets interesting — Stefan has built a proprietary code analyzer mapped to ISO 5055 international coding standards. What drove him to create it, and what is he finding in AI-generated extensions headed for production? You'll want to hear the answer. The conversation takes an even wilder turn when Stefan describes his quest to run Business Central on Linux without Windows. And just when you think the tooling talk can't get more creative, wait until you hear how he's bringing test-driven development back from the dead to solve the trust problem with AI-generated tests. Is human-readable code heading for obsolescence? Stefan's workflow might just be the preview of what's coming for all of us.
#MSDyn365BC #BusinessCentral #BC #DynamicsCorner
Follow Kris and Brad for more content:
https://matalino.io/bio
https://bprendergast.bio.link/
I DENNE EPISODE
VIS NOTER 🔗
UDSKRIFT 🔗
00:00:00.160 --> 00:00:19.440
On one side it's something that really Um I I want to keep up and I feel I I have to keep up with everything But I I would imagine that if you would skip a few things and a few obsoletion cycles of new features you would probably be Welcome everyone to another episode of Dynamics Corner.
00:00:19.920 --> 00:00:22.239
Can you develop without VS Code?
00:00:22.480 --> 00:00:24.000
Man, my mind is blown.
00:00:24.160 --> 00:00:25.440
I'm your co-host Chris.
00:00:25.679 --> 00:00:26.399
And this is Brad.
00:00:26.640 --> 00:00:29.760
This episode is recorded on March 30th, 2026.
00:00:30.079 --> 00:00:31.760
Chris, Chris, Chris.
00:00:32.399 --> 00:00:34.079
Development has changed.
00:00:34.399 --> 00:00:36.479
Development workflows have changed.
00:00:36.799 --> 00:00:38.399
The world has changed.
00:00:38.560 --> 00:00:48.399
And with us today, we had the opportunity to speak with Stefan Moran about his development workflow and some of the cool things that he's doing with AI assisted development.
00:01:08.879 --> 00:01:10.000
Hey Stefan.
00:01:10.159 --> 00:01:11.120
Good morning.
00:01:11.359 --> 00:01:12.319
I'm doing good.
00:01:12.400 --> 00:01:13.599
I hope you can hear me.
00:01:14.000 --> 00:01:16.079
Can hear you very well.
00:01:16.319 --> 00:01:17.200
Very well, thank you.
00:01:17.439 --> 00:01:18.159
That's perfect.
00:01:18.719 --> 00:01:19.280
That's good.
00:01:19.359 --> 00:01:20.319
It's nice to see you again.
00:01:20.400 --> 00:01:22.159
Haven't spoken to you in some time.
00:01:22.879 --> 00:01:23.760
Yeah, it's been a moment.
00:01:24.879 --> 00:01:28.159
The world has changed a lot since we last spoke.
00:01:28.799 --> 00:01:32.640
Even if we spoke last week, I can say the world has changed a lot.
00:01:33.359 --> 00:01:34.879
Yes, absolutely.
00:01:35.599 --> 00:01:39.680
So it's uh it's uh it's mind-blowing.
00:01:39.760 --> 00:01:54.799
It's uh I've never been more mind uh mind-blown or or mind saturated with things and and ideas of things that I want to do, as I had before.
00:01:54.879 --> 00:02:04.319
I always have this constant energy of my mind, I think, uh just all the new stuff that's being uh released and created as well.
00:02:04.959 --> 00:02:06.239
Absolutely.
00:02:07.840 --> 00:02:12.080
And sometimes I wonder uh, do I keep up with it?
00:02:12.400 --> 00:02:18.159
Do I just, you know, if I take a couple days off from it and I come back and pick right up with it, will I miss much?
00:02:18.479 --> 00:02:20.240
Uh or I I I don't know.
00:02:20.319 --> 00:02:38.719
It's kind of sometimes of a challenge because to me, some things become so new in that I don't want to say obsolete, but one day we have uh instruction files, one day we then the next day we have prompts, then the next day we have agents, then the next day we have skills.
00:02:38.960 --> 00:02:40.400
You know, do they replace each other?
00:02:40.560 --> 00:02:41.439
Do they work well with each other?
00:02:41.680 --> 00:02:42.479
Do you ever miss anything?
00:02:42.560 --> 00:02:58.319
So it's it's something else I think of uh in the field that like that it's just uh maybe a little rat race within yourself because uh you know I've spoken to other people that's been in this space for some time, and uh some of them don't even know some of these features.
00:02:58.800 --> 00:03:02.319
But uh we're we're so eager to want to get caught up.
00:03:02.719 --> 00:03:04.000
But uh there's still a lot of people.
00:03:04.159 --> 00:03:06.879
I think we're almost like I mean we're still living in the bubble, right?
00:03:07.360 --> 00:03:11.199
Uh but there's still many people are like, oh, I didn't know that existed.
00:03:11.439 --> 00:03:15.360
Even features that came out like I don't know, like two waves ago.
00:03:15.759 --> 00:03:19.280
Yeah, research means the day before yesterday, right?
00:03:22.240 --> 00:03:23.680
Still don't know about it.
00:03:23.919 --> 00:03:24.719
Yeah, yeah, yeah.
00:03:25.439 --> 00:03:26.960
Well what what is your thought on that?
00:03:27.120 --> 00:03:27.919
What's your take on that?
00:03:28.080 --> 00:03:33.280
Um I know there's a lot I wanted to talk with you about, but this is just something that was fresh on my mind before you jumped in.
00:03:33.759 --> 00:03:43.759
I think at at uh on one side it's something that really um I I want to keep up and I feel I I have to keep up with everything.
00:03:44.080 --> 00:04:06.719
But I I would imagine that if you would skip a few things and a few obsoletion cycles of new features, you would probably still need to get up to speed again quickly because again we are constantly learning new things right now, and if you just skip a few things which get introduced and then obsoleted a few weeks later, I mean Yeah.
00:04:06.960 --> 00:04:11.759
Some so maybe there's some having uh awareness of it at least.
00:04:11.840 --> 00:04:14.080
Um I think that's important, yes.
00:04:14.319 --> 00:04:14.960
Yeah, that's it.
00:04:15.120 --> 00:04:17.600
But I also like I'm I'm sitting in the same boat with you.
00:04:17.680 --> 00:04:32.800
I I'm I feel like I need to I'm I feel like I'm keeping up pretty well, and then I go like on on X or wherever on LinkedIn, and then I see so many different people doing so crazy stuff that I feel like I'm just barely scratching the surface.
00:04:33.040 --> 00:04:42.720
So it's it's funny that you say that because I do the same thing, and Chris, it might be some to your point.
00:04:42.800 --> 00:05:04.240
I don't know if it comes to imposter syndrome, but it's I read, I keep up, I go with this, I'm like, oh, I have this down, and then I go on to X, LinkedIn, and then I'm like, oh, Stefan's doing another code live stream with Claude, and he's doing all this other stuff, and he's creating in our chats, you know, in our groups of the chat groups that we have like you created the stuff, and I'm going same exact thing.
00:05:04.319 --> 00:05:15.040
I thought, but it just shows you like I sit there, I see some of the stuff that you do, for example, and I'm like, wow, I thought I really had this with my prompts, with my agents, with my task skills.
00:05:15.199 --> 00:05:21.120
You know, I'm doing it from my phone, you know, via voice, and then you come up with something, I'm like, ah, I really don't understand it.
00:05:21.279 --> 00:05:23.439
So you just get lost again.
00:05:23.519 --> 00:05:28.800
It's like I thought I got it, I'm still going the wrong right direction, but maybe in the wrong path.
00:05:29.120 --> 00:05:30.480
I had the same situation.
00:05:30.639 --> 00:05:34.160
I talked to uh to Torben uh Leith the other day.
00:05:34.319 --> 00:05:45.839
Yes, and he showed me something he was doing, like I I felt felt like I was keeping up pretty good, and then he showed me his tooling, and I was like, okay, now I'm I'm just barely starting.
00:05:47.519 --> 00:05:50.240
It's funny how that works, I I think.
00:05:50.399 --> 00:05:57.759
And at this point, with the rapid rate of introduction to new uh features, I guess you can call them.
00:05:57.839 --> 00:06:02.720
I don't even know if you want to features because there's models, there's you know framework features, I guess we could say.
00:06:02.959 --> 00:06:06.000
And then you have all of the popular frameworks.
00:06:06.639 --> 00:06:15.199
I don't know if they're competing with each other, but they're adding features that are similar to each other, so it's very difficult sometimes to uh keep up with it.
00:06:15.360 --> 00:06:20.240
But before we talk a little bit more about that, some of the things that you're doing, uh, can you tell us a little bit about yourself?
00:06:20.800 --> 00:06:22.480
Yeah, my my name is Stefan Maren.
00:06:22.560 --> 00:06:25.920
I think I have been on the podcast two times already.
00:06:26.560 --> 00:06:38.160
Um yeah, I'm I'm doing what I what I can to keep up with with business center development and AI and everything around it.
00:06:38.480 --> 00:06:44.800
I think I need to check my yeah, I'm a two times uh MVP award holder.
00:06:44.959 --> 00:06:50.879
So um yeah, and I do business center for I think 10 years now almost approaching.
00:06:51.120 --> 00:06:53.600
So that's excellent.
00:06:53.759 --> 00:06:54.000
Wow.
00:06:54.639 --> 00:06:55.920
A couple things I wanted to talk to you about.
00:06:56.000 --> 00:06:59.680
Congratulations again on the MVP and congratulations on some of the great things you're doing.
00:06:59.759 --> 00:07:08.879
I've I've watched your live streams uh uh and uh as you told me, your ramblings about it, but it's it's very informative and interesting, and it does give some ideas.
00:07:09.120 --> 00:07:16.000
And uh I saw also maybe before we get into that, I saw something interesting that you had posted uh a few weeks back.
00:07:16.160 --> 00:07:25.519
Unlike you, a lot of things I I remember, I and I I try to remember the timing, and to be honest with you, sometimes I could say yesterday and was a year ago, or a few weeks back and it was this morning.
00:07:25.759 --> 00:07:34.000
So uh I saw you started doing um a code review service, I believe.
00:07:34.399 --> 00:07:35.040
Yes.
00:07:35.920 --> 00:07:38.639
And I thought that was interesting.
00:07:38.879 --> 00:07:47.759
Um and I didn't get a chance to text and talk to you about it, but I just wanted to ask you a little bit about that now before we start talking into this crazy world of AI and development.
00:07:48.160 --> 00:08:00.079
But I thought that was relevant and interesting, giving it from my perspective, and then maybe um you can tell me what you or maybe tell me a little bit of what's behind that.
00:08:00.160 --> 00:08:03.519
Um and I'll tell you what the first thing that I thought when I first saw that notice.
00:08:03.839 --> 00:08:04.000
Okay.
00:08:04.319 --> 00:08:22.720
Um so maybe the the beginning of this came a little bit through um conversations I've had with different people saying that uh more and more solutions are getting used and deployed and everything put into production, which are really nearly 100%.
00:08:23.680 --> 00:08:28.160
I don't want to say vibe coded because that's not really a term anymore, I believe.
00:08:28.399 --> 00:08:32.879
But more like uh coded with AI assistant, heavily assistants.
00:08:33.360 --> 00:08:47.919
Um and I was uh thinking that maybe there would be a need for people to have an opinion or to to buy an opinion basically from somebody who is not using AI.
00:08:48.159 --> 00:08:54.320
Um to have like the experience-backed opinion of somebody who is doing this stuff for for some time.
00:08:54.960 --> 00:08:59.360
That was basically the the origin of why I started to draft this service.
00:09:01.279 --> 00:09:05.759
That's exactly what I thought when I saw when I saw that.
00:09:05.840 --> 00:09:21.360
I said it the timing was I think appropriate because in the world of as you had mentioned, where everyone's doing AI assisted development and uh deploying it, and even more so I think with Business Central.
00:09:21.440 --> 00:09:34.799
I mean, I think this uh Business Central or AL is uh in a unique space, in my opinion, because with some of the other popular languages, you're developing applications with languages that have been around and there's a lot of code available.
00:09:34.960 --> 00:09:51.279
With Business Central, you're developing code, but that code is a mature language, or it's becoming an extremely mature language as they keep adding fiction functionality to it, but you're within already a defined framework of an application that you're not creating.
00:09:51.440 --> 00:09:56.720
So you have sort of a box to work within uh for your solution.
00:09:56.799 --> 00:10:08.720
And that's what I was wondering was that um if that was a basis for it, whereas uh it's everyone makes it look that easy to develop with AI.
00:10:08.879 --> 00:10:12.320
I mean, I mean, some things it does really well, some things you may have to do a little bit more.
00:10:12.399 --> 00:10:19.440
And I was wondering uh with that review, it it's probably appropriate so that you can take a look at that.
00:10:19.600 --> 00:10:29.840
Some people use words like AI slop or AI other um you know terms for the AI code, uh just to have another person take a look at it from uh an outside view, I think.
00:10:29.919 --> 00:10:32.159
Uh yeah, I think that's a very good point.
00:10:32.320 --> 00:10:40.159
With and I I can't speak for other languages or frameworks that much, as I've been only working with AL and Business Central ever since.
00:10:40.399 --> 00:10:58.879
But I think um we are a little bit more constrained with things that are uh outside of the coding frame a little bit, with the runtime, with business processes, with the base application, with the update and upgrade cycles that Microsoft forces on us, basically in the cloud.
00:10:58.960 --> 00:11:03.679
And all those kind of things have to be taken into consideration when developing.
00:11:04.000 --> 00:11:31.600
And I'm not sure how good a coding agent really gets at this without the proper assistance given by the developer or the user of the AI assisted to so with this service that you have, I'll ask, do you do any AI review with it, or is it something that you go through and you review I'm assuming maybe you someone would submit to you.
00:11:31.679 --> 00:11:37.759
So if someone wanted to have a third party review their code for I I can think of many reasons why.
00:11:38.080 --> 00:11:51.679
Uh one, just to revalidate the solution to make sure it's working within the framework, or you know, some organizations I've had other organizations I talked to where they were required to have a third party review anything that went into production for security reasons and such.
00:11:51.840 --> 00:11:53.600
So uh there's maybe many reasons.
00:11:53.759 --> 00:12:02.320
So using this the service that you had started, somebody I'm assuming would contact you and give you a specification and then give you the code.
00:12:02.480 --> 00:12:05.919
And then what do you do to go through and review that?
00:12:06.159 --> 00:12:14.799
And yeah, how you know what is usually the timing that it takes uh to do that, or kind of go through the process of how you do that and what you provide to them.
00:12:15.120 --> 00:12:15.440
Okay.
00:12:15.679 --> 00:12:22.559
Um the first step would be, and I don't want to make this a sales session here, by the way, but I want to explain what what I what I did.
00:12:22.879 --> 00:12:25.440
No, no, this is gonna show something that I'm intrigued by.
00:12:25.519 --> 00:12:30.399
So I'm I'm the one that brought this up, and we didn't even talk about this beforehand, so this is completely me.
00:12:30.480 --> 00:12:55.600
So I I do offer a free part, which is basically the kind of quick assessment, which is mostly automated, uh, where I ran a proprietary analyzer I've developed over the last weeks uh against the code base, which is later then also used for the actual review to just give give an indication of like how well the code performs under this analyzer, basically.
00:12:55.840 --> 00:12:59.840
Um that's the first step, and that can everybody just do on my website.
00:13:00.080 --> 00:13:06.559
Um and behind the analyzer or behind that service is a set of rules.
00:13:07.360 --> 00:13:17.600
I have looked at the ISO 5055 standard, which is an international standard for coding quality basically, and uh um worked through all the rules.
00:13:17.759 --> 00:13:28.399
I think it's like 170 rules or something that are in there and map them to the AL language because something like memory exploits or things like this we cannot do in AL.
00:13:28.559 --> 00:13:35.360
So those are uh are excluded by definition, but others can be translated and I have have done so.
00:13:35.600 --> 00:13:43.120
I've also published a list of rules which are applicable with their AL explanation on my website for transparency.
00:13:43.840 --> 00:13:54.000
And um, on top of that, I am now building an addition to that framework for AL-specific rules which are not covered by ISO.
00:13:54.639 --> 00:13:58.960
Um, because we have a number of things which are still missing from my perspective.
00:13:59.120 --> 00:14:00.480
So I'm working on that.
00:14:00.720 --> 00:14:06.159
And the review basically is uh a sum of all of that, basically.
00:14:06.240 --> 00:14:09.679
Every everything gets uh gets run against the code base.
00:14:10.159 --> 00:14:13.679
So the for the actual review, I don't really use AI.
00:14:13.840 --> 00:14:24.000
I use obviously AI assisted development for developing the analyzer, because otherwise I think I'm at uh approaching one and a half thousand automated tests on that one.
00:14:24.320 --> 00:14:28.159
So it's it's grown a bit.
00:14:28.399 --> 00:14:40.000
Um so that would be crazy without uh it, but this analyzer enables me to do the actual review with merely any uh AI assisting.
00:14:40.720 --> 00:14:42.879
So I'm I'm running this against it.
00:14:43.120 --> 00:14:57.279
I get a ton of warnings or infos uh based on on um like confidence, and then I can go through this and I have tooling to then convert the remaining diagnostics basically into a report with assessments and everything.
00:14:57.440 --> 00:15:01.360
But in the end, the offering is uh is is a two-level offering.
00:15:01.600 --> 00:15:12.559
So not everybody may need ISO compliance or ISO uh uh review against the ISO standards because those are pretty strict, pretty comprehensive.
00:15:12.799 --> 00:15:18.320
So I have like a an expert service or expert review, I've I've called it.
00:15:18.480 --> 00:15:23.840
So uh there I would just exclude things that might not be relevant.
00:15:24.080 --> 00:15:33.039
So see, now you go back to this is one of those things where you're like, wow, I thought I was keeping up, but now you're writing tooling to analyze code for AEL.
00:15:33.360 --> 00:15:37.120
It's like you used AI to assist with it.
00:15:37.519 --> 00:15:45.440
Yeah, but that's basically based on the the Linterkop work I've done, and uh which is now transitioning to the AL Cops initiative by Artur.
00:15:46.000 --> 00:15:50.879
Um but that's basically the the blueprint for everything I've done.
00:15:50.960 --> 00:15:56.480
I've I've just dumped all like this is existing analyzer routes, this is how to develop analyzers.
00:15:56.639 --> 00:15:59.519
Now go in and implement those routes, please.
00:15:59.759 --> 00:16:03.120
Uh and that worked pretty well because that's C sharp.
00:16:03.279 --> 00:16:08.000
And C sharp has a little bit more code on GitHub for agents to learn with.
00:16:08.720 --> 00:16:15.919
So the analysis is done with the tooling from C sharp, but it can still analyze the AL uh source code.
00:16:16.080 --> 00:16:35.919
Yeah, I thought that was uh when when I saw that you shared that, I thought that was uh fascinating, you know, and appropriate because I've been coming across um individuals that have had troubled implementations and come to find out it's oh you have to use the word vibe coded because that's what a lot of people will still call it uh for the context of this conversation.
00:16:36.080 --> 00:16:46.080
Like, oh, I just vibe coded this new thing and it's it's starting to become a problem if um someone doesn't really understand the code and they just go with it.
00:16:46.159 --> 00:16:58.080
And I think uh again, maybe because I'm in that pool with Business Central, I'm starting to see it become a problem with some implementations of Business Central because we have a bigger, I mean a smaller box that we have to work within.
00:16:58.240 --> 00:16:58.480
Yeah.
00:16:58.639 --> 00:17:02.559
Uh and it can create some problems and it's not so straightforward sometimes.
00:17:02.879 --> 00:17:07.039
And I mean I want to say that vibe coding stuff is not always a bad thing.
00:17:07.200 --> 00:17:16.960
I mean, I do vibe code, if you want to call it like this, quite a number of tools for my personal use uh and making myself more productive with working my day-to-day business.
00:17:17.119 --> 00:17:19.200
Um, but those are personal tools, right?
00:17:19.279 --> 00:17:20.160
They're they're for me.
00:17:20.240 --> 00:17:22.799
If they break, I'm I'm the only one affected.
00:17:22.960 --> 00:17:27.680
And I'm since I'm the one who built it, I'm probably also the one who can fix it.
00:17:27.839 --> 00:17:33.599
Um so that's a limited surface that I'm a risk surface I'm exposing myself to.
00:17:33.759 --> 00:17:42.319
But if I vibe code a uh an extension that's used in my business with maybe 200 employees, the the risk surface is a different one.
00:17:42.880 --> 00:17:49.119
And depending on the on the use case, if it's just like some fancy report, okay, maybe not that critical.
00:17:49.440 --> 00:17:59.759
But if it's uh like touching posting routines or stuff, then maybe want to be sure that it's not breaking but with an exact thing.
00:18:00.880 --> 00:18:01.359
Exactly.
00:18:01.519 --> 00:18:02.880
No, the the risk is important.
00:18:02.960 --> 00:18:06.960
And it's it goes beyond just business central.
00:18:07.039 --> 00:18:09.680
It's anyone who's doing any AI assisted development.
00:18:09.839 --> 00:18:11.920
Uh really understand the risk in what you're doing.
00:18:12.000 --> 00:18:13.440
Like you, like you had mentioned.
00:18:13.599 --> 00:18:20.640
Personal tooling is one thing, and being able to create some I do it myself, you know, and Chris, I know you work on some stuff too.
00:18:20.880 --> 00:18:35.519
Creating myself a little API endpoint that I work with in my house to get information from you know, a little uh Raspberry Pi that I'm running is much different than running a business where I'm shipping product or invoices or billing, because if that goes down, okay.
00:18:35.839 --> 00:18:38.400
You know, or if I cause a problem, it does something, okay.
00:18:38.559 --> 00:18:39.680
Uh you know what I mean?
00:18:39.759 --> 00:18:42.880
It's like it's it's very inconsequential in the grand screen of things.
00:18:42.960 --> 00:18:49.119
But when you're at a business, it's very important to you to um consider, like you said, the risk.
00:18:49.440 --> 00:18:55.440
But also, now to go into what you said, AI assisted development isn't a bad thing either.
00:18:55.680 --> 00:19:04.079
And you you do quite a bit with it as well, again, with your live streaming and seeing all some of the stuff with you do.
00:19:04.799 --> 00:19:11.119
Can you share or walk through with us sort of your framework that you use for development?
00:19:11.200 --> 00:19:15.519
And more from that aspect of uh what are you using for a framework?
00:19:15.839 --> 00:19:19.599
You know, how do you take a look at the models or assume the models?
00:19:19.759 --> 00:19:31.680
And then from your development flow, uh, you know, you mentioned you have some tooling or you use some tools, sort of uh somebody who's looking to get into this just to kind of hear uh a workflow.
00:19:31.839 --> 00:19:38.240
And and the framing for this is everyone hears all this AI assisted development stuff or use all these frameworks.
00:19:38.319 --> 00:19:44.000
You have you know, GitHub CLI, you have CloudWork, Claud Desktop, Cloud CLI, Perplexity.
00:19:44.079 --> 00:19:48.000
You know, you have all these things, and people are saying I can just vibe code this great stuff.
00:19:48.160 --> 00:19:50.960
But some people go, how do I even start?
00:19:51.359 --> 00:19:51.680
Right?
00:19:52.000 --> 00:20:00.720
So you have a practical framework that you share in your stream and you do stuff and some amazing tooling, if I can say so myself.
00:20:00.880 --> 00:20:08.480
Uh uh I just want to kind of get in your head a little bit on uh your workflow and how you set this up and and how you think about and approach things.
00:20:08.960 --> 00:20:13.279
Yeah, the workflow is constantly changing practically every day.
00:20:13.519 --> 00:20:32.720
Um I mostly use or almost only exclusively use uh Cloud Code CLI because uh I I mean everything is changing so quickly, keeping up with all the different frameworks at once would probably be too much for for a single person.
00:20:32.799 --> 00:20:38.160
So I try to stay out of of different ways as long as this way works for me.
00:20:39.279 --> 00:20:40.240
That's one thing.
00:20:40.400 --> 00:20:55.599
Um but what I've noticed uh at the at a very early point was that uh the the context burn I had on on the AL instructions was pretty bad for everything non-AL.
00:20:56.240 --> 00:21:15.519
So I started to um find or look into a way to isolate the AL instructions a little bit into a way that I can reuse it for different projects because I don't want to restart with all the agent and skills tooling and everything, all the explanations for every single AL project.
00:21:15.680 --> 00:21:17.599
So I wanted to have something reusable.
00:21:17.839 --> 00:21:28.319
Yeah, so I what what I did was uh to to get around this that I've started to work on a plugin, I think it's called in in Copilot.
00:21:28.640 --> 00:21:30.799
Oh not in Copilot, sorry, Clot Code.
00:21:31.039 --> 00:21:42.160
Um I can have like there are marketplaces, you can have like different plugins, and a marketplace can basically just be a local uh local folder somewhere on your your your hard drive.
00:21:42.480 --> 00:21:53.680
So I basically just had to copy or have to copy a one one line config file, basically just JSON file with one setting into the project, and then it would automatically load the plugin.
00:21:54.480 --> 00:22:07.039
And that way I can uh distribute the AL instructions, everything I've Through my AI projects without uh having it in every session basically.
00:22:07.359 --> 00:22:20.000
And um there was the in terms of tooling, and then in terms of how to build the the development workflow, uh I've looked at uh plugins like FlowNEX, not sure if you've heard about that.
00:22:20.880 --> 00:22:29.759
Um it's basically an approach where you you developed you develop on on like with files backing your workflow.
00:22:30.079 --> 00:22:48.319
So everything, every every result, every context, every every information will be written into a file automatically, and then you can basically on any time interrupt your entire coding session, uh close everything out, start a fresh session, and it will reread the documentation on the disk and continue.
00:22:48.880 --> 00:23:16.480
So I have I've played around with this at the beginning and um basically adapted that approach a little bit to have uh dedicated agents for solution planning, for requirements analysis, for writing tests, for defining tests, for writing code, everything basically written into a a structured workflow of how I how I want um co-pilot.
00:23:16.720 --> 00:23:18.160
Why I'm saying copilot?
00:23:18.319 --> 00:23:22.640
Cloud code to develop.
00:23:24.160 --> 00:23:25.920
Cloud code is still a co-pilot.
00:23:26.000 --> 00:23:28.160
He he he's helping you uh fly the plane.
00:23:28.559 --> 00:23:29.839
Maybe I don't know.
00:23:30.079 --> 00:23:38.640
Um and it it works its way through the through the the chain, the workflow that I've defined and keeps writing uh files to the disk.
00:23:38.960 --> 00:23:50.480
That is first good for me also to review solution design because I feel like those planning documents with the integrated plan mode that all the agents have nowadays is quite violated.
00:23:50.640 --> 00:23:57.359
So I never know where that file is saved or how to look back at the at the plan if it's approved once or if it's gone.
00:23:57.519 --> 00:23:58.319
I don't know.
00:23:58.559 --> 00:24:04.720
Um so I have a separate planning document where I can always come back to it, just a markdown file in the repository.
00:24:05.519 --> 00:24:15.039
And uh also I have instructed those subagents to not return all the information back to the main agent.
00:24:15.279 --> 00:24:22.400
Because that's the the default way, or at least it was, I don't know when, the default way of how they communicate.
00:24:22.559 --> 00:24:31.759
They just do some stuff and then they dump, I don't know, a ton of information back to the main agent, and uh that way the context really gets filled up quickly.
00:24:32.000 --> 00:24:39.119
And with that approach that I've come up with, it writes all the information to the file and returns just a summary to the main agent.
00:24:39.359 --> 00:24:46.880
That way the main agent can really iterate longer in the same context without uh having to compact.
00:24:47.039 --> 00:24:58.480
Because then when it when it spawns the next agent, it just references the the files that were created by the previous agent to say read this and continue, or read this and now do the test document.
00:24:59.839 --> 00:25:01.359
That's a check, thank you.
00:25:01.519 --> 00:25:04.799
That's a ding because it's like, okay, do I do it like Stefan?
00:25:05.039 --> 00:25:06.000
No, I do the same.
00:25:06.160 --> 00:25:08.079
I create files for things.
00:25:08.640 --> 00:25:13.119
Um this was even before they have that, you know, they talk about memory now, right?
00:25:13.519 --> 00:25:15.920
I don't even fully understand what it's doing now as well.
00:25:16.079 --> 00:25:30.000
But I found doing that was helpful for me as well as you know, create this, you know, even you know, uh save the chat conversation or create a summary or something just so you could have reference instead of you don't have the entire context.
00:25:30.319 --> 00:25:36.640
When you talk about the at just the start of your workflow, you talked about your AL instructions.
00:25:37.519 --> 00:25:39.839
What do you have in those AL instructions?
00:25:39.920 --> 00:25:41.200
Or what are some examples of things?
00:25:41.279 --> 00:25:56.880
So if I were looking to develop my own workflow and try to get a sense of how to manage my AL development before we get into agents and sub-agents, what types of things do those instructions have?
00:25:58.319 --> 00:26:01.200
Um so that I would need to go there and look.
00:26:01.359 --> 00:26:03.359
I don't I have no idea anymore.
00:26:03.920 --> 00:26:06.079
I haven't worked on them for quite some time.
00:26:06.480 --> 00:26:16.400
They have been working, but the my process of writing them or creating them, having them written by Claude Gode, um was basically trial and error.
00:26:16.640 --> 00:26:30.640
I started with with with some instructions that I've come up with and then basically just tried it, tried to work on some projects, and eventually had some issues and said, well, this doesn't work.
00:26:30.880 --> 00:26:34.319
This should should like this is nonsense, make make it better.
00:26:34.400 --> 00:26:38.480
This should work like this, and have Claude Code revise the files.
00:26:40.000 --> 00:26:42.960
So the instruction files you don't author.
00:26:43.119 --> 00:26:54.160
You basically talk with the framework, in this case, Claude Code, and this is what I want, this is the result you give me, then I'll go back and fix it.
00:26:54.319 --> 00:26:54.799
Yes.
00:26:55.440 --> 00:26:58.400
Update your file so that next time you do it the same way.
00:26:58.799 --> 00:26:59.920
I'm paraphrasing.
00:27:00.000 --> 00:27:01.039
It's basically how you're doing it.
00:27:01.359 --> 00:27:10.079
It's it's a Cloud Code session dedicated to that project, to the to the to the repo containing the instruction, to that plugin, so to speak.
00:27:10.319 --> 00:27:18.079
So I'm just like referencing a session copying results or something and saying, well, I would have expected this to come out like this.
00:27:18.319 --> 00:27:21.440
Can we fix this in the in the in the instruction file somehow?
00:27:21.599 --> 00:27:29.680
And then at some point I've created, like I've migrated to the agent approach, and I basically just say, Well, we have a huge global instruction file.
00:27:29.839 --> 00:27:34.960
Can we just break this out to into different agents and reduce the the global instructions, right?
00:27:35.119 --> 00:27:36.240
Or into different skills.
00:27:36.319 --> 00:27:39.279
And then I'm just like giving this a try.
00:27:39.359 --> 00:27:46.960
Like before I commit this, I I test it again and see if it works, and then so it's it's a a living thing, so to speak.
00:27:47.039 --> 00:27:50.960
And it's it's really uh made for my own process.
00:27:51.039 --> 00:27:59.599
I'm I think I have it published on GitHub, but it's like just for others to look at how I'm doing this, not really a distributable thing.
00:28:00.000 --> 00:28:01.119
Okay, perfect.
00:28:01.599 --> 00:28:02.319
Excellent.
00:28:02.559 --> 00:28:07.519
Now you you you're talking about agents and and subagents.
00:28:08.319 --> 00:28:12.000
How do you orchestrate those within your workflow?
00:28:12.160 --> 00:28:22.640
So now you've worked through your instruction files, AI assisted, uh, by testing and trying to say trial and error, but by testing and reviewing this is what I expect.
00:28:22.799 --> 00:28:25.200
Yes, you did it, no, you didn't update the files.
00:28:25.599 --> 00:28:37.039
So now you have that framework set, and then you said something in there about agents now being a subset of the larger instruction file to complete tasks.
00:28:37.599 --> 00:28:45.440
Yeah, I'm I'm in the middle of reworking it again, also for the stream approach with the containers and everything.
00:28:45.599 --> 00:28:49.200
Um, but up until now I I didn't use skills yet.
00:28:49.279 --> 00:28:52.960
I used the commands, which are a little bit deprecated, right?
00:28:53.039 --> 00:29:06.799
So just for clarification, a command, and I hope I get it right, um, a command is just one one markdown file with some header instructions and then basically the main body of the prompt.
00:29:07.519 --> 00:29:23.599
While skills is a folder inside the skills directory with a main skill.md, with which is based similar to how the commands work, but then it can it can have scripts and things and other documentation next to that.
00:29:23.680 --> 00:29:26.000
So the entire folder gets gets a skill.
00:29:26.160 --> 00:29:34.160
And with Claude Code and the skills, I can specify a skill to always run as a subagent.
00:29:34.400 --> 00:29:51.920
So now I'm I'm the the way I had it before was I have a command which says uh requirements analyzers, then I give some additional instruction to it, and the command has has a baked-in instruction to always use subagents, which got respected pretty good so far.
00:29:52.079 --> 00:30:03.599
So it just it it got instructed to use subagents for a given task to also with the explanation because we need to save context in the main agent's context window.
00:30:03.839 --> 00:30:06.400
Um and all of those things.
00:30:06.480 --> 00:30:18.559
But now with the skills, I can say I can run the skill requirements engineering, and it directly runs as a subtask via the the I think the CLI's development.
00:30:18.640 --> 00:30:20.079
Like write the code.
00:30:20.559 --> 00:30:20.880
Okay.
00:30:21.519 --> 00:30:27.279
So the the commands were the prompts before you had a specific task almost.
00:30:27.599 --> 00:30:27.920
Yeah.
00:30:28.160 --> 00:30:36.079
And then with the skills, it's almost it's something that can be done with additional tooling for it to be able to complete the task.
00:30:36.400 --> 00:30:43.119
Yeah, it can be like the the agent can be forced to spawn a sub-agent, whereas before it was asked to do so.
00:30:43.519 --> 00:30:44.640
Okay, okay.
00:30:45.440 --> 00:30:45.839
Wow.
00:30:46.000 --> 00:30:53.519
This is all again, like you said, so I I think back, like you said, you worked on something some time ago and you're re you're re-engineering it.
00:30:53.680 --> 00:31:03.200
Uh I almost would wonder, you know, if you created something a month ago or two months, this is just hypothetical, not asking you specifically, but you know, sometimes I go back and oh, I created this a couple months ago.
00:31:03.359 --> 00:31:07.039
Does it is it even relevant anymore, you know, you know, now with the new framework.
00:31:07.279 --> 00:31:10.880
But uh sometimes we can't get too hung up on that as well.
00:31:11.359 --> 00:31:28.000
Yeah, when yeah, when you guys have when so with the both of you uh with this uh you know your development workflow, with new features coming out, um you usually the struggle that I have is is typically finding a use case of something to try.
00:31:28.480 --> 00:31:36.319
Is that is that something that you guys also struggle with where there is a uh a new function and it's like okay, where can I fit this?
00:31:36.400 --> 00:31:46.880
You know, do you apply it to uh uh a solution that you're building for someone, or is this something that you would find something within your flow to see if you could fit in?
00:31:46.960 --> 00:31:49.279
And maybe that's the best way to learn.
00:31:49.759 --> 00:31:50.400
I don't know.
00:31:50.799 --> 00:31:53.359
Uh is that a struggle for you, for the both of you?
00:31:54.559 --> 00:31:58.880
Or do you just ask like Claude, it's like, hey, I there's a new feature, try it out.
00:32:00.480 --> 00:32:02.000
Depends a little bit.
00:32:02.160 --> 00:32:08.799
I remember this, I had this uh this feeling when interfaces for AL came out.
00:32:09.039 --> 00:32:16.880
Um I was like, Well, this is super cool, I can do so much cool stuff, but I didn't like okay, but what problem does this really solve?
00:32:17.119 --> 00:32:23.440
I couldn't uh like work without interfaces nowadays anymore, so apparently it solves some problems.
00:32:23.680 --> 00:32:31.200
Um but with with um Cloud Code, new features, I don't really search for problems.
00:32:31.279 --> 00:32:46.720
I just like I I read the release notes sometimes, uh, if I notice a bigger version bump, and then I I just read them I so I know about them, so then when I have the problem I can solve with this, I I will basically.
00:32:47.359 --> 00:32:48.319
Ah, I see.
00:32:48.559 --> 00:32:58.079
Yeah, I follow the same approach because I think I think it's difficult, Chris, as you had mentioned, and Stefan, I think you hit it.
00:32:58.319 --> 00:33:02.799
If you don't have a problem to solve, it's difficult to try to figure out how to use the tool.
00:33:02.960 --> 00:33:03.279
Right?
00:33:03.440 --> 00:33:05.680
So it's do I use a screwdriver?
00:33:05.839 --> 00:33:13.839
If you give me a screwdriver and a hammer, if I don't know that I have a nail or a screw to to put into the wood, uh what do I use?
00:33:14.000 --> 00:33:16.400
You know, you try to just figure out a way to use it.
00:33:16.559 --> 00:33:20.160
You need to have some sort of context of what problem you need to solve.
00:33:20.319 --> 00:33:26.960
I do try to be aware of some of these, it's but uh it gets challenging sometimes to remember all of them.
00:33:27.119 --> 00:33:32.240
So I start to go with it it all the features, like you said, I read all the release notes, and it's even getting challenging now.
00:33:32.319 --> 00:33:34.720
Just I use a lot of Visual Studio Code, right?
00:33:34.799 --> 00:33:37.920
So Visual Studio Code, the updates are becoming even more frequent.
00:33:38.079 --> 00:33:45.119
You know, one day is one one zero, then one one one, then one one two, one one three, all within uh you know a few days with all different features.
00:33:45.200 --> 00:33:47.200
So it's it's challenging to keep up with them all.
00:33:47.279 --> 00:34:01.839
But I think what was the big change for me is I went from I have all of these things that I can use to this is what I'm trying to do.
00:34:02.079 --> 00:34:04.240
And then from there it just blossomed.
00:34:04.319 --> 00:34:06.799
And I I've said it to others and I use it as an example.
00:34:06.960 --> 00:34:11.280
I mean, the very first prompt that I made was a commit prompt, right?
00:34:11.360 --> 00:34:28.960
It sounds something so simple, but I was able to, just like you did, Stefan, talk with um this was within GitHub Copilot, work with it to create a commit and a commit message and a commit process that I wanted to match a certain format that I expected the result for.
00:34:29.199 --> 00:34:31.679
So I had a specific task and a specific problem.
00:34:31.920 --> 00:34:37.679
May not be a big deal, and this is what I think the big thing you need to bring into perspective.
00:34:37.920 --> 00:34:40.719
You don't have to solve big fancy problems, right?
00:34:40.800 --> 00:34:42.480
Or have some big complex solution.
00:34:42.639 --> 00:34:48.800
Something as simple as creating a commit message with a certain format is a problem that you need to solve.
00:34:48.960 --> 00:35:02.800
And you can solve it by utilizing these tools, and that's what's really started my momentum once uh uh and it became less overwhelming and started my momentum of being able to create a lot of other tools to solve the individual tasks.
00:35:02.960 --> 00:35:06.880
Then you get to the point where now I can put all these individual tasks together.
00:35:07.039 --> 00:35:07.199
Right.
00:35:07.360 --> 00:35:23.440
So now I can go through and do uh a document for a modification and then you know have the code committed and then do these things in a workflow more in pieces and putting them together than saying, here's this feature, here's all this stuff, and let's just do it.
00:35:23.679 --> 00:35:26.000
Um I I think was uh a big change.
00:35:26.159 --> 00:35:34.880
So I don't I try to be aware of it and I try to think if there's any problems that I can solve today with it, and if I can't, I just say, ah, okay.
00:35:35.039 --> 00:35:44.639
Or if I'm bored, I may say, oh, let me try something for a few minutes, but you really need to have a problem that you need to solve versus just uh trying it out.
00:35:47.599 --> 00:35:49.519
It's more practical and it sticks better.
00:35:49.760 --> 00:35:54.480
So in my thought process with it.
00:35:54.639 --> 00:36:03.760
So um so now you work with all of these uh agents and um code.
00:36:04.639 --> 00:36:06.639
How much development do you do?
00:36:06.800 --> 00:36:11.119
And I use this, I'm careful with these words because of other conversations.
00:36:11.360 --> 00:36:14.800
Um AI assisted development, I'm not going to say is not development.
00:36:14.880 --> 00:36:17.519
You're using a tool to create and solve a problem.
00:36:17.840 --> 00:36:25.840
How much of your development today is AI created versus uh manually created?
00:36:26.079 --> 00:36:30.719
And with that, uh I may ask some more questions based on your answer.
00:36:31.199 --> 00:36:45.679
I need to be careful what to say, but um, but basically, I um I would say I'm approaching 100% of uh I'm I I think I am approaching 100% of uh AI generated code.
00:36:45.840 --> 00:37:12.079
Um it's not that I'm not like I I review everything, I test everything, but uh apart from need to rearrange a few things or just clean up things, because clean cleaning up with the quick fixes and and other tools we have built throughout the years or the community has provided over over the years, is still faster and more reliable than uh AI having those cleanups.
00:37:12.320 --> 00:37:30.960
But like the from from the very beginning of thinking through the entire process, the requirements, coming up with the solution design, and then also developing the tests, developing the code, up until that point, I barely have VS Code open.
00:37:32.159 --> 00:37:49.840
Like I mean, I I I might use VS Code for looking at the at the markdown files, the documentation that was created to review and approve this, giving comments on this and like working in in a tandem basically with Cloud Code to get it to the point where I say this is how we need to do this.
00:37:50.079 --> 00:37:53.519
But then I just say, well, now we have all the documentation, go.
00:37:54.320 --> 00:37:56.559
Well, you barely have the VS Code open?
00:37:58.159 --> 00:37:59.840
So that's that's interesting, right?
00:37:59.920 --> 00:38:05.599
So for for those that are uh maybe uh not using so much with with AI yet.
00:38:05.760 --> 00:38:07.519
So you barely have VS Code open.
00:38:07.599 --> 00:38:11.360
You're you're almost 100% AI generated code.
00:38:11.760 --> 00:38:24.000
I catch myself having like I have three screens, a wide one at like right in front of me, and then two smaller ones at the top, where everything is basically console windows with different sessions.
00:38:24.480 --> 00:38:25.519
Console CLI.
00:38:25.760 --> 00:38:26.400
Yes.
00:38:27.199 --> 00:38:27.840
Wow.
00:38:28.159 --> 00:38:34.880
It's it's I I I laugh in in a sense because um I I I want to unpack some of that stuff because you said a lot.
00:38:34.960 --> 00:38:40.000
I'm happy to hear the way you workflow because um, one, I love Markdown.
00:38:40.239 --> 00:38:47.440
Uh but um uh number two, uh you hit a key point.
00:38:47.679 --> 00:38:51.760
AI assisted development is knowing when to use the tool.
00:38:52.000 --> 00:38:54.320
And you had said something that's extremely important.
00:38:54.480 --> 00:38:56.159
You can go in and you review.
00:38:56.239 --> 00:39:01.599
We're not saying AI assisted development means AI sets it, forgets it, you're done, you publish it into production.
00:39:01.760 --> 00:39:03.519
You go through a review process.
00:39:03.840 --> 00:39:16.880
But as you go through your review process, if you see something that's faster or more efficient for you to fix, you'll fix it versus always saying AI has to fix it.
00:39:17.039 --> 00:39:30.480
And that's a big separation that I'm finding um in conversation now is you you know, that everyone's like, oh, I'm up to 100% and this and that, but you still have to remember that you can go in, it's not you have to be at 100%.
00:39:30.880 --> 00:39:32.880
It's use the best tool for what you're doing.
00:39:33.039 --> 00:39:45.599
And if I have to go in and move a line up or down or you know, change the name of a variable, sometimes it's just easier for me to go in and rename symbol versus oh you named it wrong, name it this instead, right?
00:39:45.760 --> 00:39:54.000
So but but uh there is also a distinction because I can only work on one project at a time doing those fixes, right?
00:39:54.159 --> 00:40:13.360
If I have cloud code work on five of them at the same time, I might still be faster using using AI to do the fixes if if it is enough for me to give a two-minute explanation of what I want to have fixed and can have it run for 30 minutes and can then work on different stuff.
00:40:13.760 --> 00:40:14.320
Right?
00:40:14.800 --> 00:40:28.559
So in those scenarios I would still maybe fall back to the slower approach, the more the more inefficient approach, because I can paralyze it and not uh being on on like not being the bottleneck myself.
00:40:29.119 --> 00:40:29.920
Understood.
00:40:30.320 --> 00:40:36.960
Understood, but we'll uh we'll still put that in the what's the most efficient way to solve the problem bucket.
00:40:37.119 --> 00:40:46.239
And as you had said, if you have five projects running simultaneously, I laugh because you know when you you you start thinking about the conversations that you're having, right?
00:40:46.320 --> 00:41:01.119
Or we're having, it's it's difficult to talk to to people that aren't working with it to where you can have I can I can document one project while I'm writing another project while I'm designing another project all at the same time.
00:41:01.360 --> 00:41:05.679
But it's crazy to to think of the context switching.
00:41:06.159 --> 00:41:08.719
It is, um but it's also very denying.
00:41:09.840 --> 00:41:17.039
I think you're the first person ever a developer-wise, like uh a developer saying like you don't have VS Code open.
00:41:17.360 --> 00:41:19.840
That's that's it I'm still mind blown by that, by the way.
00:41:19.920 --> 00:41:23.760
Because I I know we've spoken to a lot of developers, you know, we worked with many.
00:41:24.000 --> 00:41:26.800
Um you typically have your VS Code open.
00:41:26.960 --> 00:41:35.119
Uh that's just a uh a thing you do, but for you to say you don't have or rarely have VS Code open, that's just I'm still stuck with that.
00:41:35.199 --> 00:41:36.400
I'm still thinking about that.
00:41:36.559 --> 00:41:37.519
How does that look like?
00:41:37.679 --> 00:41:38.719
That's just fascinating.
00:41:38.960 --> 00:41:41.679
Well, well done, Stefan, for solving.
00:41:42.480 --> 00:41:52.400
Yeah, and I've I've uh I have a uh like a file explorer terminal based as well, like a a terminal UI, I think you call them.
00:41:52.559 --> 00:41:59.119
Uh also maybe something that is more common among Linux users than Windows users, maybe.
00:41:59.280 --> 00:42:02.719
But I feel like I'm I'm pretty quick with that one by now.
00:42:02.960 --> 00:42:09.039
So I I have a keyboard shortcut to open that up, another keyboard shortcut to jump into my repositories folder.
00:42:09.119 --> 00:42:15.920
I navigate quickly with with the arrow keys basically into the repository I want, keyboard shortcut to open the terminal.
00:42:16.239 --> 00:42:22.000
Now that I think about it, I could change that shortcut to open cloud code right away.
00:42:22.079 --> 00:42:24.239
That would make make me more efficient, I think.
00:42:25.039 --> 00:42:28.800
Yeah, so you're are you also use you so you're a Linux user?
00:42:28.960 --> 00:42:29.840
Is that what you're using as you?
00:42:30.239 --> 00:42:30.880
Yes, yes.
00:42:31.519 --> 00:42:36.239
Um, let me let me just bring that thought to an end.
00:42:36.400 --> 00:42:52.960
Um and then uh I start cloud code in that in that repository, and basically most of the time it's uh it's continuing previous work, so it's already on this on the correct uh uh branch and everything, and I can just give the the context of continuing what I what I what I need.
00:42:53.039 --> 00:42:54.719
Maybe I got feedback or whatever.
00:42:55.039 --> 00:42:57.679
I give everything it needs to continue.
00:42:57.840 --> 00:43:08.559
And if I want to review, I've I recently discovered I can use exclamation mark and then run a shell command right away inside the cloud code session.
00:43:08.639 --> 00:43:14.079
So I run code space dot so then it opens VS Code inside the folder.
00:43:14.159 --> 00:43:17.679
I can quickly do my review, close VS Code again, and let it continue.
00:43:17.920 --> 00:43:20.000
So that's that's how I how I do it.
00:43:20.400 --> 00:43:24.320
You're doing keyboard, do you use a Stream Deck or any device like that in your shortcuts?
00:43:24.400 --> 00:43:25.440
Or is it our keyboard?
00:43:25.760 --> 00:43:27.360
I use the keyboarding.
00:43:28.079 --> 00:43:29.920
Yeah, and I use this.
00:43:30.400 --> 00:43:32.079
This is my keyboard.
00:43:34.400 --> 00:43:35.440
Is that your whole keyboard?
00:43:36.159 --> 00:43:37.599
That's my whole keyboard, yes.
00:43:37.920 --> 00:43:39.280
Oh my gosh.
00:43:42.239 --> 00:43:44.559
So what Linux distro are you using?
00:43:44.880 --> 00:43:47.119
Uh uh underneath it's Arch.
00:43:47.920 --> 00:43:48.639
Arch, okay.
00:43:49.119 --> 00:43:50.239
We're not even gonna go there.
00:43:50.400 --> 00:43:59.119
Like that's like I have to build every little thing in the world and uh but then again, code is really good at at helping with with Linux stuff.
00:43:59.280 --> 00:43:59.599
So
00:44:00.320 --> 00:44:02.880
That that is fascinating for for for many of us.
00:44:02.960 --> 00:44:08.480
I know Brad, you you and I are probably one of the few people that are on Mac OS.
00:44:08.880 --> 00:44:21.039
And uh I I do remember in the early days running Mac OS with parallels, just trying to do anything in nav, or for many in Business Central, now you it doesn't really mat matter anymore.
00:44:21.280 --> 00:44:30.559
And so for us to go back and said, you know, we were right all along, it doesn't matter which machine, because you could you could pretty much develop now.
00:44:30.960 --> 00:44:39.679
Yeah, and I do uh I do have plot on a Pi as well with Linux, but I run some tasks outside of Business Central one.
00:44:39.920 --> 00:44:43.280
But uh uh I I do like that framework a little bit more.
00:44:43.599 --> 00:44:45.760
And you go back, you run everything CLI.
00:44:46.239 --> 00:45:27.039
It's strange how technology sort of loops because uh I I remember starting off programming CLI, you know, back when I had a Vax back, even if you look at like MS DOS and stuff before Windows, then Windows was the latest thing and the UI and the mouse, and now we're going back to CLI is the most crazed now because it's also set up well for AI, because now you can launch other applications and you can you know uh spawn other commands uh without having to open up uh user interface so that it can be autonomous in a sense or in a way that the AI can can work with it.
00:45:27.280 --> 00:45:29.280
Um so that's interesting.
00:45:29.440 --> 00:45:37.840
Side note uh you use Linux for your development and uh ask you, what do you do with reports?
00:45:38.320 --> 00:45:39.920
I have a Windows VM.
00:45:40.400 --> 00:45:44.480
Say that a Windows VM to do the reporting.
00:45:44.880 --> 00:45:47.599
See, there's another Chris that you have to do these check marks.
00:45:47.679 --> 00:45:48.960
I I do this like Stefan.
00:45:49.039 --> 00:45:49.920
See, I just the same thing.
00:45:50.000 --> 00:45:51.360
I do everything uh outside.
00:45:52.159 --> 00:45:53.360
Let me challenge you a little bit.
00:45:53.679 --> 00:45:57.840
I have a Windows VM that is running inside a Linux Docker container.
00:45:59.119 --> 00:46:00.639
Ah, you beat me there.
00:46:00.880 --> 00:46:01.920
You beat me there.
00:46:02.320 --> 00:46:10.400
There is a nice project, and I have to probably uh collect a like a reference list or something afterwards with all the things that I've mentioned.
00:46:10.559 --> 00:46:13.280
There is a repository for stuff like that.
00:46:13.519 --> 00:46:23.280
So you if if you happen to run Linux containers, you can uh basically just this is a a one one-shot Docker file, you can just start it.
00:46:23.920 --> 00:46:27.840
And with like environment variables of which edition you want to use and everything.
00:46:28.079 --> 00:46:33.840
Obviously, they run unlicensed, so you have to bring your own license or own a license at least to be compliant, right?
00:46:34.079 --> 00:46:37.679
But uh after that you can you can just start them.
00:46:38.320 --> 00:46:40.079
Yeah, someone had asked us about that.
00:46:40.239 --> 00:47:00.880
Like uh if if you're if you're uh developing and you're in a Mac OS, how do you handle like uh reports and uh you know that I I thought for me it was the easiest was just I have parallels and I just have a published word, you know, uh or publish office suite uh for what for for what it's worth.
00:47:01.199 --> 00:47:03.679
Uh and then that's just just to get by.
00:47:04.159 --> 00:47:10.079
But other than that, I mean browser base and everything else is all local.
00:47:11.519 --> 00:47:25.440
Yeah, no, that's uh yeah, I'm just to see where we've come and how we we work now, and I'm still back on the um the five uh projects.
00:47:25.760 --> 00:47:29.360
Now are you working when you publish your applications?
00:47:29.599 --> 00:47:33.599
Are you publishing them all through Claude uh to an environment?
00:47:33.840 --> 00:47:37.199
And then I I always have a lot of on my mind with that.
00:47:37.599 --> 00:47:40.960
But you go into VS Code and you publish it through VS Code.
00:47:41.039 --> 00:47:41.199
Yeah.
00:47:41.519 --> 00:47:43.519
Uh and then I don't know.
00:47:44.400 --> 00:47:45.920
You do not go into VS Code at all.
00:47:46.239 --> 00:47:46.559
No, no.
00:47:46.639 --> 00:47:55.440
I I have uh alongside with my AL instructions tooling, I have uh started to build other tooling.
00:47:55.679 --> 00:48:04.719
For example, to start with, I have a a bash script basically written by Cloud Code to wrap the AL compiler and everything I need with it.
00:48:04.880 --> 00:48:14.000
So I have automatically all the analyzers, it discovers my VS Code X uh extensions directory to load the DLS that it needs and everything.
00:48:14.159 --> 00:48:28.159
It discovers the the dependency package folder and everything that's required to burn down the entire AL compiler command, you need to compile a project down to a single command.
00:48:28.400 --> 00:48:41.519
You can have parameters if you want to, if you change something or something, I don't know, but you can basically just type in AL-compile and compiles to make it easier for Cloud Code to compile my projects, right?
00:48:42.000 --> 00:48:48.719
So I noticed it's struggling heavily on compiling via the command line, so I figured, well, this has to be made easier somehow.
00:48:49.360 --> 00:48:54.000
Explored that option we had, and basically Cloud Code came up with a solution for this.
00:48:54.079 --> 00:48:55.280
And then I went further.
00:48:55.440 --> 00:49:05.199
I also have the same command or a similar command for publishing using the uh dev endpoint, but from the CLA CLI using curl.
00:49:05.920 --> 00:49:11.920
So again, a one-shot comment for cloud code to say bc-publish and then it published.
00:49:12.000 --> 00:49:17.280
And it just needs to provide the app file and config like where to publish to, right?
00:49:17.519 --> 00:49:21.280
But so where you one for testing.
00:49:21.679 --> 00:49:24.159
But uh that's not not as good yet.
00:49:24.639 --> 00:49:24.960
Okay.
00:49:25.360 --> 00:49:32.960
So I I do want to step into testing because that's another area uh that I've had uh mixed discussions on.
00:49:33.039 --> 00:49:42.079
And again, mixed discussions doesn't actually mean anything, it's just sometimes within the context of conversation um in the scope of uh uh requirements.
00:49:42.719 --> 00:49:44.559
Where are you publishing these two?
00:49:44.719 --> 00:49:47.519
Are you you you use Docker quite a bit, it sounds like.
00:49:47.920 --> 00:49:54.000
Do you create separate environments for uh these each project for it to work with?
00:49:54.159 --> 00:49:57.119
Or do you do you have sandbox amendments?
00:49:57.679 --> 00:50:07.039
I try to keep them separate, and I'm right now in the middle of working on another shot on making BC run on Linux completely in Docker containers.
00:50:07.440 --> 00:50:14.880
Um, so that's that's my my current side project again for the community a little bit.
00:50:15.199 --> 00:50:29.119
So um, but yeah, I try to keep uh to keep one environment somehow be sandbox, Docker, or whatever, uh for per per project, basically.
00:50:29.840 --> 00:50:48.800
So now you're working on it the way you can in essence create a Docker container in Linux for Business Central, so you could in essence have the AI create it, publish the application, do what it needs to do, and then take it back down without leaving any footprints.
00:50:49.119 --> 00:50:49.599
Yes.
00:50:50.400 --> 00:50:51.039
Wow.
00:50:51.519 --> 00:50:58.719
And it's I mean it's almost working, but uh pretty fragile if I may say so.
00:50:58.960 --> 00:51:18.239
Uh I don't know, some have maybe seen the the the project I've done before with Torben uh on like using wine and everything to make it work, but it was like so many dependencies and and like a custom wine fork that Torben built somehow, I don't know how.
00:51:18.480 --> 00:51:21.440
Um really crazy stuff.
00:51:21.760 --> 00:51:38.239
And last week or the week before, I believe, I had uh somehow an idea of like maybe we can just like cut it all out and just run, like use some DLLs from the service directory to just run AL code without any service tier.
00:51:38.320 --> 00:51:40.079
Like just run the code, right?
00:51:40.719 --> 00:51:41.599
What do I need?
00:51:41.679 --> 00:51:44.239
Like we can fake the database or whatever, I don't care.
00:51:44.400 --> 00:51:46.400
Uh I just want to run the code, right?
00:51:46.480 --> 00:51:47.920
That's what I want to test.
00:51:48.239 --> 00:51:50.800
And it uh didn't work out that good.
00:51:50.960 --> 00:52:01.920
I had some some prototype where I could just like the the like messages or like simple arithmetic functions or things like this, I could just execute a single standalone code unit without even a project.
00:52:02.159 --> 00:52:09.280
So I didn't even have an app file or anything, like just run the code unit on run trigger, please, just execute it.
00:52:09.440 --> 00:52:10.559
So that worked.
00:52:10.800 --> 00:52:17.280
But it like when when records and and dependencies got involved, it got pretty pretty bad.
00:52:17.599 --> 00:52:20.000
And I uh I dumped that approach.
00:52:20.079 --> 00:52:23.679
I think it's on GitHub somewhere, I don't know if I made it public or not.
00:52:24.320 --> 00:52:39.599
Um but it it led to me having with Cloud Code again rewriting uh the the C sharp code so you can do crazy stuff with C sharp where you can exchange dependencies and replace functions and things.
00:52:39.760 --> 00:52:44.079
I don't really understand any uh how that works even.
00:52:44.159 --> 00:52:57.039
But uh Cloud Code was able to replace a few things and turn off a few things, like I say, well, we we are in in a local Docker or CI environment, so I don't care about authorization.
00:52:57.280 --> 00:53:15.440
I don't care really about uh database encryption or things like this, and it replaced the uh complete HTTP in implementation that BC uses under the hood with something Linux compatible, and in the end, I now have something that works, like right?
00:53:15.519 --> 00:53:23.039
It starts just.NET service tier.dl and then it slash console or whatever, and it and it runs.
00:53:23.679 --> 00:53:25.599
And I'm able to execute tests.
00:53:25.679 --> 00:53:39.199
Now I'm still working on making this a little bit more stable, but I have like automated tests where like 27.0 through 5, and I think 28 also, they they start and they work, and I run like sample tests against this.
00:53:40.079 --> 00:53:41.519
So wow.
00:53:42.000 --> 00:53:55.519
That will be great because that will eliminate the need for parallels, Chris, and then also I think some things on the container uh processor as well.
00:53:55.840 --> 00:54:01.440
Uh my ultimate goal is really to make pipelines quicker.
00:54:01.920 --> 00:54:03.039
I could see that with this.
00:54:03.280 --> 00:54:11.360
You can create that, drop it, and you don't need the full I don't say the full application, but like the full install, like you said, because if you're on a Docker.
00:54:12.079 --> 00:54:13.360
It is a full install basically.
00:54:14.480 --> 00:54:21.119
It's a Docker compose, so I have two containers, one container for SQL Server that just exists for for Linux, right?
00:54:21.280 --> 00:54:22.800
We don't need to do anything there.
00:54:22.960 --> 00:54:26.239
And then a second service where the BC service lives in.
00:54:26.400 --> 00:54:29.920
And it the scripting, the Docker file automatically loads the symbols.
00:54:30.000 --> 00:54:49.119
So you specify I want to have 27.4, whatever, and it figures out the artifact URL, it downloads the artifacts, it extracts the artifacts, there is the service directory, it applies the fixes that it that it contains, and then just starts the service tier in place, basically, with the connect.
00:54:49.360 --> 00:54:56.639
Like it adjusts the con the custom settings config file with with the parameters it needs and just starts it basically.
00:54:56.880 --> 00:55:02.559
And then when it's loaded, it starts to publish extensions like a normal pipeline would basically.
00:55:03.039 --> 00:55:04.639
I'll have to pay attention to this project.
00:55:05.440 --> 00:55:14.159
I saw you talking about it, and then sometimes to be honest, with uh it's with everything going on and trying to um pick up many things.
00:55:14.400 --> 00:55:18.159
Sometimes I go, wow, yeah, that's uh that's a lot.
00:55:18.320 --> 00:55:24.960
But you know, hearing and talking with you, the the benefit of that is um amazing.
00:55:25.119 --> 00:55:35.360
I can see how it could speed up pipelines and you don't have to carry a lot of extra weight, as I call it, uh system-wise, if you can create these containers and work with these containers and get what you need done.
00:55:35.599 --> 00:55:40.000
Uh one thing that you had mentioned is you test the code with this.
00:55:40.079 --> 00:55:48.320
Um what has your experience been with creating automated tests within the business central testing framework using uh AI?
00:55:48.960 --> 00:55:52.800
I think it's it's becoming mandatory again.
00:55:54.320 --> 00:56:18.480
The more I work with with AA assisted development and cloud code and everything, I feel like we're I'm I'm getting back to the textbook style of software development because all of that, like the like all the requirements, engineering, the documentation creation, all of that, just I mean, I skipped it because no customers really pays for for all of that uh yeah, supporting work, I'd say.
00:56:18.800 --> 00:56:21.440
Um not for simple adjustments, right?
00:56:21.519 --> 00:56:30.400
If I just have like a five-hour task, then why should I create full documentation of requirements and the solution plan and all that kind of things?
00:56:30.639 --> 00:56:41.360
So um the same goes for development with tests, because I I came to a point where I say, well, now Claude created, I don't know, 50 objects.
00:56:41.599 --> 00:56:47.039
How should I even start to test this in a reasonable amount of time, right?
00:56:47.519 --> 00:56:57.039
So I've started to investigate into automated tests, then well, now you you have written the code, now write the the the test code for it, but then I hit the same problem.
00:56:57.280 --> 00:57:01.119
Like, how can I now trust my test code because it's also generated, right?
00:57:01.199 --> 00:57:02.079
So yeah.
00:57:03.280 --> 00:57:12.480
So I see many stories where people showed that they're tests, and the AI went through and basically were marked out the tests so that the test would pass.
00:57:12.639 --> 00:57:16.159
It's just you see some of these comicals or hear about some of these stories, it's funny.
00:57:16.480 --> 00:57:32.800
So I I I got texted by uh Klaus Kahn, I believe, on LinkedIn, and he said he's working on something not uh I don't think it was a BC project, but also like he has a very sophisticated process how to develop and how to work with Cloud Code.
00:57:32.880 --> 00:57:44.320
And what he did, and I've adapted that, was to say, before you write any code, and this is a an approval gate, I'll have to manually prove this before you can continue.
00:57:44.559 --> 00:57:47.440
Before you write any code, you write tests.
00:57:47.760 --> 00:57:51.119
And they have to fail, and they have to fail correctly.
00:57:51.360 --> 00:57:57.199
So just because a test fails doesn't mean it fails on the thing you want it to fail on, right?
00:57:57.440 --> 00:57:58.800
So we have to verify.
00:57:58.960 --> 00:58:06.239
We m for AL, sometimes you need to have some some framing in the to have the dependency resolves, right?
00:58:06.400 --> 00:58:10.800
Um, but beyond that, no code gets written, all the tests will have to fail.
00:58:10.960 --> 00:58:22.800
If there are any tests which are not failing up front, you have to have like clear documentation around that, why that can't be failed at in the in the beginning, and only then we'll proceed to develop.
00:58:23.039 --> 00:58:25.360
And then we have test-driven development again.
00:58:25.679 --> 00:58:37.760
I was just going to ask, so going it sounds like we're going back to the days of test-driven development where you define your tests before um before you develop.
00:58:38.159 --> 00:58:38.559
Yes.
00:58:38.719 --> 00:58:52.719
And that was like that's so far is the only way I found to really have some trust into what happens without me reviewing and questioning every single line of code.
00:58:53.519 --> 00:59:11.920
And that's also why I started to develop the or invest into some automated way of running the code, the test, I mean, um, and all the tooling, because I cannot sit there for 50 iterations and run the tests in the browser and paste the results back into Cloud Code.
00:59:12.159 --> 00:59:13.920
So that has to be automated.
00:59:14.400 --> 00:59:18.000
That's why I have compiled, I have published, and I have run tests.
00:59:18.800 --> 00:59:29.440
So so Cloud Code can autonomously work on that until I we hit that approval gate where I can really run it run the tests myself once and review the results.
00:59:29.920 --> 00:59:34.880
So I I mean it goes back to almost, and again, uh I just try to frame it a little bit.
00:59:35.039 --> 00:59:42.400
So it's similar to when you could run or what you can do with the BC container helper PowerShell scripts, right?
00:59:42.719 --> 00:59:50.239
Where you can run the tests and then you can get back, you can pipe back the results for those tests, whether it's an XML file or text file.
00:59:50.320 --> 00:59:51.679
So then you can go through it.
00:59:51.760 --> 00:59:53.199
Is that you're working similar to that?
00:59:53.519 --> 00:59:56.320
Yeah, so if you are on Windows, obviously you want to use that.
00:59:56.480 --> 00:59:58.239
Uh if you're on Linux, you can't.
00:59:58.400 --> 01:00:02.079
So that's why I have to run some extra miles here.
01:00:02.239 --> 01:00:04.320
Uh but yeah, essentially.
01:00:04.559 --> 01:00:10.880
A CLI way of running running tests, whatever that may be, just to be able to automate it.
01:00:11.360 --> 01:00:12.000
Wow.
01:00:12.559 --> 01:00:13.119
That's good.
01:00:13.199 --> 01:00:14.400
I have to pay attention to that one.
01:00:14.559 --> 01:00:15.840
I I like that because I do.
01:00:15.920 --> 01:00:32.400
I'm a I'm a uh I I use Windows out of necessity and not saying anything poor about it, but I prefer you know the Mac OS and also even you know, even some headless versions of uh Linux or or such uh for doing some processing.
01:00:32.480 --> 01:00:34.880
It just feels a little bit different for me.
01:00:35.119 --> 01:00:38.000
Um I I leave it at that.
01:00:38.159 --> 01:00:43.199
So yeah, but I'm I'm working on making all of that basically work for Linux containers.
01:00:43.280 --> 01:00:58.239
Uh one one challenge I'm still working or working against is uh running the tests exactly like BC Container Helper does because that involves the management API and and web web sockets and things, so it's it's a little bit annoying.
01:00:58.480 --> 01:01:10.880
I have it running basically with a a custom extension to just expose testability via OData that works without a problem, but I wanted to have it yeah, with work without that dependency.
01:01:11.119 --> 01:01:19.199
But essentially, uh when when you're on Windows or wherever uh the Windows Docker container and the PowerShell scripting and everything works, then you you want to use that.
01:01:21.199 --> 01:01:21.840
Wow.
01:01:25.360 --> 01:01:30.960
You're doing a lot of great things with that stuff, so it's um yeah.
01:01:31.519 --> 01:01:36.880
I sit back and that's where I'm saying, wow, I wish I uh uh I don't know how how do you find the time for it?
01:01:36.960 --> 01:01:46.320
And you're gonna say Claude's helping you, so you're gonna be like, I'm I'm working on five things in parallel nowadays, so three word and two two community things of something.
01:01:46.719 --> 01:01:48.000
Wow, wow.
01:01:49.119 --> 01:01:49.920
That's great.
01:01:50.079 --> 01:01:50.639
That is great.
01:01:50.719 --> 01:01:57.280
It's uh I think I think that's a great example of what is AI doing for a lot of us, you know.
01:01:57.360 --> 01:02:11.440
It's like uh for able to produce a little bit more and actually open up a little bit more time for you to do other things because you do have tools like uh Claude in your case or whatever tools or AI tools you're using.
01:02:11.599 --> 01:02:12.719
So you can do more things.
01:02:12.880 --> 01:02:28.800
You can produce more, but then still have that quality of work, quality of life, and and be able to do projects um to kind of keep you up to date or g or or or keep your create creativity mind open doing side work as well.
01:02:29.519 --> 01:02:36.559
But I do have to say that kind of working is definitely more exhausting on on the mental capacity.
01:02:37.199 --> 01:02:47.440
Um I feel like now when I'm working like this, and it's not every day, of course, but if I have days where I'm busy like this, I feel that I'm really exhausted at the end of the day.
01:02:47.679 --> 01:02:52.239
Because switching context, not maybe not even five things, it was just a number, right?
01:02:52.400 --> 01:03:03.920
Maybe maybe two sessions, maybe three sessions in parallel, where you switch all the time between A to B to C back to A to C to B, and that that really gets exhausting.
01:03:04.239 --> 01:03:05.280
That that's a good point.
01:03:05.440 --> 01:03:20.639
Tax task switching it requires a lot of mental uh I don't know what there's like a mental switching that you have to do because you have to it's not the work itself, it's more of the switching your mind on a task that you are working on.
01:03:20.719 --> 01:03:29.360
It's very uh especially because with with with that kind of development, if I'm if I'm managing this, I need to overview the concept, right?
01:03:29.440 --> 01:03:38.880
I have to have the concept and the the the overall goal and everything I have to have in in my in my head, and I need to pause that for a second, have a completely different context now in my head.
01:03:39.039 --> 01:03:46.639
Yeah, and then pause that again to switch back to the the to the original one without mixing them or without forgetting about different things.
01:03:46.800 --> 01:03:48.960
So that is true.
01:03:49.840 --> 01:03:51.119
Well, that's what I was saying before.
01:03:51.280 --> 01:04:05.280
My mind gets on like overload now with ideas of things that I can do, but also, like you said, the context switching is exhausting and um the output and and and the benefit.
01:04:05.519 --> 01:04:20.880
Do you do you ever think, again, this is philosophical, do you ever think that we're going to get to the point where output far exceeds consumption and everyone's creating just a lot of stuff that is just there?
01:04:21.599 --> 01:04:26.880
And what I mean by that is we can all produce so many things now, right?
01:04:27.039 --> 01:04:35.119
You you had mentioned uh you're producing several projects that work on several projects at once, or you're creating documentation now.
01:04:35.199 --> 01:04:44.480
I've I'm happy to see a lot of people doing and creating doc you know development documents or extension documents that no one ever thought to create before, and they're far better than anyone would write.
01:04:44.719 --> 01:04:47.679
And then there's people creating business process documents, right?
01:04:47.760 --> 01:04:51.039
And then everyone's creating extensions, creating applications.
01:04:51.599 --> 01:04:56.000
Is there ever a point where there's just too much stuff for us to be able to consume?
01:04:56.320 --> 01:05:04.320
And if AI is going to be the one consuming it, do we even need it in a sense?
01:05:04.559 --> 01:05:04.800
Right?
01:05:04.880 --> 01:05:24.000
If we're if we're going to continue that process of generating for AI, if it's generating for AI Is that all even necessary to have the extra stuff around it versus just the what you said, the one command CLI to be able to publish an application instead of a book on how to do it?
01:05:24.719 --> 01:05:25.920
I have no idea.
01:05:26.159 --> 01:05:28.320
Honestly, I have really no idea.
01:05:28.480 --> 01:05:37.440
What I'm I feel like we're getting closer to Iron Man just saying, well, I I have an idea, let's fire up some things, right?
01:05:37.840 --> 01:05:40.559
Um and then it it just works.
01:05:40.639 --> 01:05:51.840
And I think the closer we get to to this point where it just works, the less important it really gets to like also what kind of language is it written in.
01:05:52.079 --> 01:05:59.760
Uh I talked to my brother the other day, he was working on something on on like private matter, but also with Cloud Code, and uh he thought.
01:06:00.239 --> 01:06:12.719
Thought that Python would be the tool, the language to go with, and then Claude research a little bit on like existing projects and say, Well, here's a C sharp project, we could port that into Python somehow.
01:06:13.039 --> 01:06:19.039
And my brother just prompted, like, can't we just write our tool in C sharp and just reuse it?
01:06:19.199 --> 01:06:22.400
I mean, I don't care which language it's written in.
01:06:22.559 --> 01:06:25.760
I'm not the one writing or reading it, I'm just testing, right?
01:06:26.159 --> 01:06:39.679
So I I think we we might get closer to that where we where we're really language independent and maybe like the the human readable languages will be deprecated at some point.
01:06:40.239 --> 01:06:45.599
Because if if no human ever reads the code or writes the code, what's the point in making it readable?
01:06:45.920 --> 01:06:50.320
If it's if it has to be translated later into machine code.
01:06:50.960 --> 01:06:53.039
Maybe there is assembly language?
01:06:53.599 --> 01:07:03.519
I don't know if if if machine code will be the solution, but maybe a a different language that is way more optimized for AI to write and read and maintain.
01:07:04.639 --> 01:07:08.719
Something that humans couldn't work with, but AI can really work good with it.
01:07:08.880 --> 01:07:09.760
I don't I don't know.
01:07:09.920 --> 01:07:14.079
Um so I think w we'll get in into that direction at some point.
01:07:15.599 --> 01:07:24.800
And the scary thing is it'll probably be within our lifetimes, or my you know, in my lifetime, and um I'm the old one, and uh at the rate of how this is going.
01:07:25.039 --> 01:07:27.760
Um it's interesting.
01:07:28.400 --> 01:07:37.599
Stefan, we had a we had a conversation with uh uh a few guests um you know, and I we had we had asked this is a similar question.
01:07:38.239 --> 01:07:46.800
Um outside of our world where we work with every day, that's you know, we interact with AI with the with the with this framework.
01:07:47.280 --> 01:07:56.400
Um but outside of that, I do realize that nine out of ten people have no idea of all these tools and framework.
01:07:56.880 --> 01:08:08.239
Do you feel that as well when you're you know talking to somebody that's you know maybe not so much in IT, but they may be interacting with application uh have no idea, no clue.
01:08:08.400 --> 01:08:09.599
Like I'll give you an example.
01:08:10.320 --> 01:08:17.920
You know, my wife is a teacher and they she has no clue that she could use AI tools to kind of help her.
01:08:18.159 --> 01:08:29.119
Uh she has a few she she's they've used Chat GPT and some copilot, but uh be but being able to create beyond than just prompting or beyond just uh gathering information.
01:08:29.520 --> 01:08:34.319
Um do you feel like we do bel we live in a bubble for our works?
01:08:34.640 --> 01:08:34.800
Yes.
01:08:35.920 --> 01:08:42.479
Yeah, if if if you mean if you're referring to people outside of IT, uh then absolutely yes.
01:08:42.800 --> 01:08:58.880
Like the the the general point is either no touch points so far, nothing at all, uh uh apart from news in the TV, basically, uh to maybe chat GPT on their phone, but beyond that nothing.
01:09:00.800 --> 01:09:01.199
Yeah.
01:09:02.319 --> 01:09:04.000
So we all live in a bubble.
01:09:04.960 --> 01:09:21.520
It's yeah, it's uh you know sometimes it's ignorant uh but we are also the first ones, I think, the the developers to really be forced to to work with that kind of stuff because otherwise we would get deprecated pretty soon.
01:09:21.680 --> 01:09:48.479
I think there was a session from Vieco on on directions, he said, well, uh we we're the first ones to fall, basically, your developers or uh programmers basically, because uh large language models are he said that uh are really good at at doing text, uh like languages, spoken languages, but spoken languages are really complex compared to developing languages.
01:09:48.720 --> 01:09:58.560
So it's it's like for for agents it's apparently very easy to do code because it's so much easier compared to spoken languages.
01:09:58.800 --> 01:10:01.439
And uh an LLM can do any language, right?
01:10:01.680 --> 01:10:02.960
Speak any language.
01:10:03.199 --> 01:10:16.880
I even tried a local dialect of where I'm where I'm from in Germany, uh, and and it was able to like understand that, transcribing, understanding that, and then also writing like if if it would speak in that dialect.
01:10:17.039 --> 01:10:18.880
So uh Wow.
01:10:19.920 --> 01:10:36.159
It's it's it's I I laugh at some of the stuff I see because you almost feel like it's alive and that it's working, and we we we talk with it and how you refer to it, and even now where they've added you know the interactions back with you, right?
01:10:36.319 --> 01:10:51.359
But you know, is there really a need for it to say, oh, the user wants this, and okay, I'm going to add you know, it could just spit out the information without having that, but they've sort of built into it the sense of um interaction in a way.
01:10:51.439 --> 01:10:55.840
I don't know if you want to mean you know how when you you work with Claude as like you know, the the thinking basically.
01:10:56.399 --> 01:11:00.159
Yeah, it but it's it doesn't really need to show all of that thinking.
01:11:00.560 --> 01:11:05.279
But I think it it uh clot code doesn't show it, I think, most of the time.
01:11:05.439 --> 01:11:14.640
I I now worked a little bit with with Copilot CLI uh today, actually, and I was very surprised that Copilot shows all of the thinking.
01:11:14.800 --> 01:11:17.279
I was like, Well, why why do I need to read all of this?
01:11:17.359 --> 01:11:19.199
Because I'm used to not seeing that.
01:11:19.359 --> 01:11:23.920
I can turn it on, but it's hidden by default because I don't really care.
01:11:24.399 --> 01:11:34.319
Um But I think back when when thinking got introduced, I think it it helped produce way better results than without the thinking.
01:11:35.760 --> 01:11:40.000
So the results help construct the output.
01:11:40.560 --> 01:11:45.920
I don't know how, but uh some it it does improve something uh somewhere.
01:11:46.000 --> 01:11:47.439
I don't I don't know.
01:11:49.039 --> 01:11:50.239
It's magic, man.
01:11:50.399 --> 01:11:51.600
It's magic is what I think.
01:11:52.960 --> 01:11:53.439
It really is.
01:11:53.680 --> 01:11:59.199
And the the the the craziest thing of all of this is I think uh Tinay said it in in one of his sessions.
01:11:59.279 --> 01:12:07.680
I thought I saw a post on LinkedIn the other day that uh LLMs are basically hallucinating 100% of the time, just 80% of the time it's right.
01:12:09.119 --> 01:12:16.720
So uh which is basically what what it is, it's it's just statistics, right?
01:12:17.039 --> 01:12:25.439
Yes, yes, it's just the probability of the next word being this word is the highest based on the context like where we have come from.
01:12:26.000 --> 01:12:28.239
So and that's so crazy to think of.
01:12:28.960 --> 01:12:35.039
I don't even know how someone could sit to think to even come up with that, right?
01:12:35.199 --> 01:12:44.960
I mean, I don't most inventions aren't derived from um you know the intent of that thing that gets created, it's a byproduct.
01:12:45.039 --> 01:12:46.560
Like you look at the combustion engine, right?
01:12:46.640 --> 01:12:51.359
The combustion engine wasn't the desired result, it just came out as a byproduct of what they were doing.
01:12:51.600 --> 01:13:14.960
It's just the same thing I wonder with this stuff, but then you sit back and you're like, who can think that you just archive everything and then statistically, based upon what you've written, it predicts the next word and then continues to the point where it's writing in in our context, you know, 50 AL objects, adding fields to pages, adding fields to tables.
01:13:15.359 --> 01:13:21.600
It's just something very difficult for me to comprehend how statistics is doing all of that.
01:13:21.920 --> 01:13:22.479
Yes.
01:13:22.880 --> 01:13:31.680
Yes, it is and and I think it if I remember correctly, this goes back to like the 1950s and mathematics inventing this stuff, right?
01:13:32.079 --> 01:13:36.800
And now we have the computation computing power to just to to make it work, right?
01:13:37.119 --> 01:13:40.079
This isn't a new invention, it's just now it works.
01:13:40.479 --> 01:13:57.760
Yes, yes, because we well, we we have the scale at which we can produce it rapidly, uh, versus having someone um you know ha have to do it by hand in essence, or uh you know, even back with punch cards back then when they did it.
01:13:58.079 --> 01:13:59.439
Uh it's fascinating.
01:13:59.920 --> 01:14:02.399
Well uh I could talk with you about this stuff all day.
01:14:02.479 --> 01:14:03.680
I mean, you're doing some great things.
01:14:03.760 --> 01:14:11.039
I I I I'll have to interact with you more in the stream sometimes just to get to get you uh uh uh uh more into it.
01:14:11.119 --> 01:14:13.600
But uh I do appreciate everything that you're doing, and you're doing some great stuff.
01:14:13.680 --> 01:14:20.720
I'll have to take a look uh keep following that Linux um BC uh container process that you're doing as well.
01:14:20.880 --> 01:14:27.840
So I I will announce this as soon as I have something where I can say, well now I can let people test this.
01:14:28.000 --> 01:14:31.359
It's already public if you want to have a look on my on my GitHub profile.
01:14:31.439 --> 01:14:36.399
It should be the topmost repos I I work on right now, so it should be easy to find.
01:14:36.640 --> 01:14:44.079
Um but yeah, I I will I will I didn't announce it for now because it's uh it's still work in progress.
01:14:44.399 --> 01:14:46.960
And maybe just one more sentence about this.
01:14:47.199 --> 01:15:06.319
I want to uh keep or I want to get it to a point where I can run the Microsoft test suite on it to see if it really gets faster, without like with excluding the startup boot time and all the the statics around it, just the plain compution power to to run tests faster, basically, too.
01:15:06.560 --> 01:15:11.439
Because they they have I think the largest test suits and the long longest running ones.
01:15:11.680 --> 01:15:14.000
So yeah.
01:15:16.079 --> 01:15:18.560
And sometimes they all don't pass for me.
01:15:18.640 --> 01:15:19.520
So I don't know.
01:15:19.600 --> 01:15:24.000
We'll have to maybe maybe maybe we'll get this to get this solved too.
01:15:24.319 --> 01:15:25.119
Uh I hope so.
01:15:25.199 --> 01:15:25.680
I hope so.
01:15:25.920 --> 01:15:28.399
Well, Stefan, thank you for talking with us this afternoon.
01:15:28.560 --> 01:15:29.199
I really appreciate it.
01:15:29.279 --> 01:15:38.159
Uh you're doing some great things, uh, and um uh I'm happy that you're we were willing to share your workflow and your thoughts and everything with us.
01:15:38.399 --> 01:15:40.319
Um you're doing some great things.
01:15:40.399 --> 01:15:43.199
Uh you know, the history repository is a great tool as well.
01:15:43.359 --> 01:15:49.680
If anyone hasn't worked with it, the uh you're looking for the source code for every version of Business Central.
01:15:50.319 --> 01:15:51.119
You go back pretty far.
01:15:51.199 --> 01:15:57.039
I don't know how far back you go, it's tough to remember, but all the versions and all the updates, it's uh resource for any developers.
01:15:57.279 --> 01:15:57.680
15.
01:15:57.760 --> 01:15:59.279
So back almost to the very beginning.
01:15:59.600 --> 01:16:01.039
Of Business Central, of AI.
01:16:01.439 --> 01:16:03.359
Yes, yeah, yes, business central, excuse me.
01:16:03.439 --> 01:16:06.159
Uh I don't even think in Nav and Vision anymore.
01:16:06.239 --> 01:16:08.319
Uh I think of just uh Business Central.
01:16:08.399 --> 01:16:10.880
But um, thank you for clarifying that as well.
01:16:11.439 --> 01:16:23.760
Uh if anyone would like to reach out to you to learn more about some of the great things you're doing, some of the projects they have, uh, your code review service, or even talk a little bit more about AI and some of the things that you are creating and doing your workflow.
01:16:23.840 --> 01:16:25.279
What's the best way to get in contact with you?
01:16:25.920 --> 01:16:28.399
Texting me on social media basically on LinkedIn.
01:16:28.479 --> 01:16:32.479
I I should always receive the message, but X and Blue Sky should also work.
01:16:32.960 --> 01:16:33.680
All right, great.
01:16:33.760 --> 01:16:34.159
Thank you.
01:16:34.960 --> 01:16:36.000
Uh thank you again.
01:16:36.079 --> 01:16:37.600
Uh look forward to uh seeing you soon.
01:16:37.760 --> 01:16:40.479
Are you coming over to Directions North America next month?
01:16:40.880 --> 01:16:41.760
I am not.
01:16:43.039 --> 01:16:43.920
Can't do everything.
01:16:44.079 --> 01:16:45.439
I will be on tech days.
01:16:45.600 --> 01:16:47.439
I have a workshop on tech days.
01:16:47.680 --> 01:16:54.159
Uh I'm still thinking of uh submitting a session for the for the Linux stuff.
01:16:54.479 --> 01:17:04.640
We'll see if if that if I get it there far before the deadline ends, and then also if it's interesting enough for people to listen to me for 90 minutes talking about stuff like this.
01:17:05.600 --> 01:17:07.680
Uh I think you would be surprised.
01:17:07.760 --> 01:17:10.880
I think many people would be listening uh interested in listening to you.
01:17:11.199 --> 01:17:14.960
Um might get some might get pretty technical though.
01:17:15.840 --> 01:17:16.399
That's good.
01:17:16.479 --> 01:17:16.880
That's good.
01:17:17.039 --> 01:17:17.760
I'd listen.
01:17:18.079 --> 01:17:19.920
Uh so no, we do appreciate it.
01:17:20.000 --> 01:17:22.960
And uh thank you for all that you do, and thank you again for taking the time to speak with us.
01:17:23.039 --> 01:17:24.399
I know um time is precious.
01:17:24.479 --> 01:17:28.720
Uh anybody you spend with somebody or spend doing something, you you don't get that back.
01:17:28.880 --> 01:17:32.399
So uh we do appreciate you uh taking the time to share with everybody.
01:17:32.560 --> 01:17:43.359
And uh look forward to talking with you again soon, and hopefully we get to cross paths at a conference or an event or something somewhere at one point uh where we can sit down and talk about this uh and further depth.
01:17:44.159 --> 01:17:45.760
Thank you for for for the invitation.
01:17:45.840 --> 01:17:47.359
It was really great talking to you.
01:17:48.159 --> 01:17:48.560
Thank you again.
01:17:48.640 --> 01:17:50.000
I'd look forward to speaking again soon.
01:17:50.079 --> 01:17:52.560
Uh bye.
01:17:53.279 --> 01:17:58.399
Thank you, Chris, for your time for another episode of In the Dynamics Corner Chair.
01:17:58.560 --> 01:18:00.560
And thank you to our guests for participating.
01:18:00.800 --> 01:18:02.399
Thank you, Brad, for your time.
01:18:02.560 --> 01:18:06.079
It is a wonderful episode of Dynamics Corner Chair.
01:18:06.239 --> 01:18:09.600
I would also like to thank our guests for joining us.
01:18:09.840 --> 01:18:12.560
Thank you for all of our listeners tuning in as well.
01:18:12.800 --> 01:18:16.640
You can find Brad at developerlife.com.
01:18:16.800 --> 01:18:21.279
That is D V L P R L I F E dot com.
01:18:21.439 --> 01:18:26.960
And you can interact with them via Twitter, D V L P R L I F E.
01:18:27.600 --> 01:18:35.359
You can also find me at Matalino.io, M-A-T-A-L-I-N-O.io.
01:18:36.640 --> 01:18:40.319
And my Twitter handle is Matalino16.
01:18:41.119 --> 01:18:44.079
And see you can see those links down below in the show notes.
01:18:44.239 --> 01:18:45.439
Again, thank you everyone.
01:18:45.600 --> 01:18:47.359
Thank you, and take care.