March 25, 2025

Episode 412: πŸ€–πŸ‘¨πŸ»β€πŸ’» AI Assisted Development meets Business Central πŸ‘¨πŸ»β€πŸ’» πŸ€–

In this engaging episode of Dynamics Corner, Brad and Kris are joined by Tine Staric. Listen as they dive into the growing impact of AI on software development, spotlighting tools like GitHub Copilot and Cursor. They discuss how these AI tools boost coding efficiency, automate documentation and testing, and simplify ERP system interfaces. Tine shares his passion for Business Central and AI innovation. The trio highlights the importance of grasping coding fundamentals, especially for junior developers who might struggle in an AI-driven world without a solid foundation. They also address AI’s quirks, like hallucinations that can misguide code, emphasizing the need for human oversight to keep business processes on track. Efficiency gains shine through when relevant files feed AI context, and the potential of local models sparks excitement for future development workflows.
 
🧠 AI tools like GitHub Copilot and Cursor enhance coding efficiency and automate tasks. 
🧠 Understanding programming basics remains essential, especially for junior developers. 
🧠 AI hallucinations pose risks, requiring human oversight to ensure accuracy. 
🧠 Efficiency jumps with proper context and local models could shape AI’s future in coding. 
🧠 AI simplifies ERP interfaces and workflows but isn’t a substitute for developer expertise.

Send us a text

Support the show

#MSDyn365BC #BusinessCentral #BC #DynamicsCorner

Follow Kris and Brad for more content:
https://matalino.io/bio
https://bprendergast.bio.link/

Chapters

00:00 - Episode Introduction and Guest

06:01 - Getting Started with AI-Assisted Development

10:41 - AI's Impact on Developer Skill Levels

19:32 - The Hallucination Problem in AI

30:21 - Development Efficiency and Use Cases

39:03 - GitHub Copilot Features and Testing

48:15 - VS Code vs. Cursor: AI-First IDE

59:55 - Future of UI and Business Central

01:07:18 - Agent Reliability and Future Applications

01:15:30 - Episode Closing

Transcript

WEBVTT

00:00:00.761 --> 00:00:03.370
Welcome everyone to another episode of Dynamics Corner.

00:00:03.370 --> 00:00:05.083
What is Claude Sonnet?

00:00:05.083 --> 00:00:07.711
Is that like a poet poem, a music?

00:00:07.711 --> 00:00:08.561
I don't know.

00:00:08.561 --> 00:00:09.766
I'm your co-host, Chris.

00:00:10.580 --> 00:00:11.262
And this is Brad.

00:00:11.262 --> 00:00:14.952
This episode is recorded on February 26th 2025.

00:00:14.952 --> 00:00:18.106
Chris, Chris, Chris, who's Claude?

00:00:18.106 --> 00:00:19.431
Is that what you're asking?

00:00:19.771 --> 00:00:19.952
Yeah.

00:00:20.879 --> 00:00:23.344
Well, today we have the opportunity to find out who Claude is.

00:00:23.344 --> 00:00:58.526
Well, today we had the opportunity to find out who Claude is, what his sonnet is and learn a lot about AI-assisted development at Business Central With us today, we had the opportunity to speak with the MVP, dinae Stein.

00:00:58.526 --> 00:01:00.411
Hello, good afternoon good, how are you doing?

00:01:00.411 --> 00:01:00.991
Oh, what good afternoon.

00:01:00.991 --> 00:01:02.335
I'm doing fine, excellent, excellent.

00:01:02.335 --> 00:01:04.903
I've been looking forward to speaking with you for some time.

00:01:04.923 --> 00:01:12.207
You know this, you know, Chris, I don't know if you know this I bother him all the time For everything, Anything.

00:01:12.207 --> 00:01:14.364
I just bother him all the time.

00:01:14.364 --> 00:01:15.950
You know I get up at 3 o'clock.

00:01:17.281 --> 00:01:37.763
I don't think it's bothering, but I am always surprised that you wake up at 4 am and you know I'm the first one you text 4 am the first thing comes to his mind, I think we have to start this over, because now that sounds a little bad 4 am.

00:01:37.802 --> 00:01:39.921
I wake up, I text Dina, it's just.

00:01:39.921 --> 00:01:43.746
I always have things on my mind and he's involved in so much.

00:01:43.746 --> 00:01:48.927
Now it's like I have to just have an outlet to say that is what about this.

00:01:48.927 --> 00:01:49.689
What about that?

00:01:49.689 --> 00:01:50.411
Isn't it gold?

00:01:50.411 --> 00:01:53.665
But now you just let the cat out of the bag and everyone's listening to this going.

00:01:53.665 --> 00:01:54.487
What's going on that?

00:01:54.487 --> 00:01:59.186
Well, what about the other people that think I'm the first one that they text at four in the morning?

00:02:00.631 --> 00:02:05.987
oh, now see now you're out of yourself now you just just set me up, my friend, you know now.

00:02:07.311 --> 00:02:08.012
Look, I'm sorry.

00:02:08.012 --> 00:02:09.354
I'm sorry they have to deal with it.

00:02:09.354 --> 00:02:10.645
I'll take the first place.

00:02:13.681 --> 00:02:14.686
That was perfect.

00:02:15.801 --> 00:02:16.545
That was perfect.

00:02:17.580 --> 00:02:18.544
That was excellent.

00:02:18.725 --> 00:02:21.526
Excellent, so I'm glad things are going well.

00:02:21.526 --> 00:02:26.893
You've been doing a lot of great things and you know we'll cut out the small talk and just get right into it.

00:02:30.504 --> 00:02:32.895
Before we do that, can you tell everyone a little bit about yourself?

00:02:32.895 --> 00:02:35.443
Sure, yeah, so my name is Tine.

00:02:35.443 --> 00:02:38.591
I'm let's say I'm a developer in this world of Business Central.

00:02:38.591 --> 00:03:00.469
I'm originally from Slovenia, but right now I'm living in Lithuania, and actually this is going to be my last year in Lithuania, so next year I'll just say I'm Slovenian, I'm from Slovenia, I work at Companio, but I prefer to describe myself as just you know, being young in the world of dynamics and being really passionate about the technology.

00:03:00.469 --> 00:03:04.866
So I like to explore stuff, I like to blog about stuff.

00:03:04.866 --> 00:03:05.067
I like to.

00:03:05.067 --> 00:03:22.086
I like to explore stuff, I like to blog about stuff, I like to talk at conferences about stuff, and this stuff is usually business central and, right now, a lot of ai which is exactly what I text him about at four in the morning is ai and the great stuff that he's doing it's almost like you're not a developer unless you do ai.

00:03:23.068 --> 00:03:25.432
Nowadays you have to like.

00:03:25.432 --> 00:03:27.823
That's how it looks like well.

00:03:27.842 --> 00:03:34.179
I mean, I hate to always talk about ai, but it seems to be the word of I.

00:03:34.179 --> 00:03:40.775
I don't even know how long I could go without hearing you gotta say ai for seo purposes no, I, I think.

00:03:40.775 --> 00:03:49.509
I think you just have to completely disconnect yourself from life, sit in the woods and I still think AI would appear in the trees, but I don't think you can go far with that.

00:03:52.104 --> 00:03:53.330
So, AI is like anything, it's a tool.

00:03:53.330 --> 00:04:02.030
So AI-assisted development and, as you had mentioned, you're doing a lot of great things.

00:04:02.030 --> 00:04:02.800
You are newer to the community.

00:04:02.800 --> 00:04:04.081
You've been doing it for a while, but a lot of great things.

00:04:04.081 --> 00:04:10.067
You are newer to the community, been doing it for a while, but a lot of us older we always talk about I talk with him about dinosaurs.

00:04:10.067 --> 00:04:14.191
We have the dinosaurs and the younglings.

00:04:14.191 --> 00:04:15.491
I don't know what we could call them.

00:04:15.491 --> 00:04:20.115
I guess they call what do they call the young Padawans Younglings in Star Wars?

00:04:20.115 --> 00:04:21.216
Do you know, Chris?

00:04:23.019 --> 00:04:23.781
I think it's young P, a young padawan.

00:04:23.802 --> 00:04:31.081
Oh, maybe it is younglings yeah, I think it's younglings yeah I know you have padawans when they're in training and then you have the younglings when they're starting that is true.

00:04:31.202 --> 00:04:41.980
I think that's right, it's good, but I don't even know where to begin with these questions, because I've I've seen so much that you have been doing with ai, assisted development.

00:04:41.980 --> 00:04:59.567
Can you tell us a little bit about your thoughts and what you've been doing, what you've been experimenting with in that area for AL and even any other languages, because I saw you did something amazing that I haven't been to get back to, but I want to talk about that at the end.

00:04:59.567 --> 00:05:03.165
With that whole Python script, chris, where do you see what he did.

00:05:03.185 --> 00:05:04.610
Wow, python script.

00:05:04.610 --> 00:05:05.964
Yeah, so we'll get.

00:05:05.964 --> 00:05:14.908
We'll get to that, because I've been trying to do that for us and I just haven't had the chance to do it, so maybe we can ask a youngling to help us out okay, that's all.

00:05:15.891 --> 00:05:21.084
Well, depends who you put me next to, um, but okay, the the beginning.

00:05:21.084 --> 00:05:42.230
Um, I think I started more than two years ago when GitHub Copilot was initially released and even back then it demoed really well, right, you type out a comment and it will propose to you a procedure of what it does, and then I tried it out with, I think, c Sharp at the time, and it did exactly that.

00:05:42.230 --> 00:05:44.199
So that was super exciting.

00:05:44.199 --> 00:05:47.548
But then I switched to AL and it was meh.

00:05:47.548 --> 00:05:55.574
But even even the meh parts were more than enough to cover cover the what was it?

00:05:55.574 --> 00:05:58.588
10, $10 with the personal license cost.

00:05:58.588 --> 00:05:59.725
So I just kept it.

00:05:59.725 --> 00:06:02.365
I just kept using it, and for a long time.

00:06:02.365 --> 00:06:04.331
For me it was just the autoomplete.

00:06:04.331 --> 00:06:10.072
So instead of waiting for intellisense, instead of me figuring out how to complete the procedure, I'll just tab it out.

00:06:10.072 --> 00:06:11.083
And that was.

00:06:11.083 --> 00:06:13.088
That was good enough, um.

00:06:13.088 --> 00:06:29.906
But then in the past let's say six months, when they started rolling out better models, when they gave us um co-pilot chat, then especially co-pilot edits, now with the agent mode, with Claude powering all of that, it became more and more powerful for AL.

00:06:30.747 --> 00:06:45.766
But whenever I tried a new feature for co-pilot, I didn't start with AL, because my assumption is still AL is going to be weaker compared to a mature language, simply because there's so much more training data available for something like TypeScript.

00:06:45.766 --> 00:07:01.714
So I always started with some of the side project ideas that I had on my mind a Python script, a frontend in React, whatever came to mind, and it was so cool.

00:07:01.714 --> 00:07:11.689
It was really amazing to see that once edits rolled out, I could just type a sentence this is what I'm trying to do and it would generate that code.

00:07:11.689 --> 00:07:18.226
So I always approach it as get excited with a mature language, because you will see the full power.

00:07:18.226 --> 00:07:21.769
And then, once you know what kind of use cases should work.

00:07:21.769 --> 00:07:28.990
That's when I tried to bring back to AL to see okay, so I got this kind of scenario working in TypeScript.

00:07:28.990 --> 00:07:30.625
Does this work in AL?

00:07:30.625 --> 00:07:36.526
So in a sense, I wasn't discouraged by the use cases that didn't work in AL.

00:07:37.680 --> 00:08:03.045
And well, I'm still kind of on this hype train because everything that rolls out, even if it only works for mature languages, it has brought me I don't know how to describe it, but a lot of enthusiasm for all of the side projects, because I would if I was not working in bc, I would likely place myself more on the back end side of software development.

00:08:03.245 --> 00:08:25.492
I would never go for frontend I'm not good at frontend, but now I don't have to be and all of the backend code that I would write myself now I have someone else that I can prompt to give me the frontend parts and now all of those side projects that were just kind of waiting on the sidelines they come to life in I don't know a weekend, so oh, I don't know a weekend, so oh, I don't know.

00:08:25.492 --> 00:08:39.352
It's super cool to to work on on the side projects with a tool like that, but it also has I won't say all of them, but a limited, um, a limited but growing amount of use cases that I use every day for al.

00:08:39.352 --> 00:08:46.787
To just skip the boring part, skip the the coding and get more into the problem solving, which is the fun part.

00:08:46.787 --> 00:08:49.609
I mean coding is the boring part, I would say.

00:08:50.320 --> 00:08:51.725
Yeah, coding is well.

00:08:51.725 --> 00:08:59.152
It's nice to be able to create something, but you had mentioned a lot of things, so prior to working with AL, did you program in another language?

00:09:01.400 --> 00:09:02.346
Never professionally.

00:09:02.346 --> 00:09:06.048
It was always more for my pleasure, pleasure.

00:09:06.068 --> 00:09:12.381
You dabbled a little bit so that's interesting it lowers your level of entrance to other languages because you have copilot.

00:09:12.381 --> 00:09:20.485
Is that is that how you would look at it, where now you can pick up other languages because there's an assistance um to get you started?

00:09:22.129 --> 00:09:40.309
I think that's a separate topic we can open, because, even though I'm super enthusiastic of using it for side projects, I don't think I would let a developer just generate code with AI if the developer doesn't understand what the code is supposed to do.

00:09:41.280 --> 00:09:41.922
That's the key.

00:09:41.922 --> 00:09:48.645
I think you hit the key right there and that's where I wanted to go with it, because I myself use Copilot.

00:09:48.645 --> 00:10:01.148
You can do some basic things, where I said, in Python, generate me a snake game that plays itself, and it does it pretty well, but if I look at the code, do I really understand what it's doing?

00:10:01.148 --> 00:10:04.852
So I think you really need to understand the concepts, and then the language and the tool will help you build it.

00:10:04.852 --> 00:10:10.432
Think you really need to understand the concepts and then the language in the tool will help you build it, but you still need to be able to review it.

00:10:10.432 --> 00:10:17.230
So it's not that it would lower the skill for coding.

00:10:17.230 --> 00:10:29.455
In a sense, you still need to have the skill of understanding how it all works and how it's all put together so that you can review it as if it was a junior developer and you're going through a code review.

00:10:30.220 --> 00:10:41.370
Yeah, I think it's a very, very powerful tool for senior developers because once you're a senior developer, it doesn't matter if you just know one language, one syntax.

00:10:41.370 --> 00:10:43.802
You understand how code is written.

00:10:43.802 --> 00:10:46.870
You understand how code is structured in general.

00:10:46.870 --> 00:10:58.448
So, even though I probably couldn't write those Python scripts myself, I can read the Python scripts and know exactly what's happening there because I understand how code works.

00:10:58.448 --> 00:11:11.355
So I think for senior developers, this is an amazing new tool, but it's not a tool that will let junior developers skip a level and suddenly be experienced much, much sooner.

00:11:11.942 --> 00:11:13.447
Yeah, I think that's what I was trying to say.

00:11:13.447 --> 00:11:28.716
It's like if you've been coding and you understand the structure of code from maybe a specific language, getting into other programming language would be a little bit easier to get into because you understand the structure, how it's supposed to work.

00:11:28.716 --> 00:11:37.495
But getting to other programming language, like Python for example, that hey, I kind of understand how this works, but I don't want to code it from scratch.

00:11:37.495 --> 00:11:51.089
So it's an easier way to get into other programming language because you now you have a, an assistant, a co-pilot assistant yeah, I would.

00:11:51.710 --> 00:11:52.510
I would agree with that.

00:11:52.510 --> 00:12:00.977
Recently there was a post on reddit where somebody started coding with co-pilot or they were using cursor.

00:12:01.018 --> 00:12:03.403
We can talk about those I can't wait to get into that.

00:12:03.403 --> 00:12:04.727
Yeah, that, that's awesome.

00:12:04.727 --> 00:12:05.932
You know that's on my list too.

00:12:07.442 --> 00:12:20.211
So they were using Copilot to generate some code, generate an application, and it was fine the first day, the second day, the third day, the fourth day, but then the Copilot just started going in circles introducing bugs.

00:12:20.211 --> 00:12:22.149
When they asked it to fix the bug, it introduced more bugs.

00:12:22.149 --> 00:12:23.557
When they were asked to fix the bug, it introduced more bugs.

00:12:23.557 --> 00:12:30.628
You will hit that if you don't understand the code that Copilot is trying to fix for you.

00:12:30.628 --> 00:12:38.548
If you know what should be fixed and you just don't care about the syntax, the text that is written out, this is gonna be awesome.

00:12:39.039 --> 00:13:01.041
But if you also expect the problem solving to be done by Copilot, you will sooner than later hit that limit of well, now it doesn't know either yes, and that, see, I do want to go back to that because I recently this week, I had conversations with individuals that said, oh, I can be a developer now.

00:13:01.041 --> 00:13:03.706
So I want to take it back to what you had mentioned.

00:13:03.706 --> 00:13:06.961
There's a couple points you mentioned.

00:13:06.961 --> 00:13:15.850
To bring it back to, having a senior skill in understanding the concepts of how things work, copilot can be a great tool to assist you.

00:13:15.850 --> 00:13:37.923
If you're someone that's new to application development, you still can use it as a tool, but don't use it as a learning tool in a sense, because you still need to understand the fundamentals of the structure to see what it gets back to, because the AI will hallucinate depending upon what you ask it, what it's trained on and what you're trying to do, and to not make the assumption, and I think that's a big disconnect.

00:13:37.923 --> 00:13:42.049
But with that, ai can be.

00:13:42.932 --> 00:13:55.807
I've heard some stories of individuals talk about the use of it where now you have junior level developers, you have senior level developers and then that middle range of developer is a different landscape.

00:13:55.807 --> 00:14:01.702
What's your take on that and do you see it where AI can be?

00:14:01.702 --> 00:14:03.388
Or even if you go into the world of agency?

00:14:03.388 --> 00:14:13.586
I have so many questions piled up where AI can be, or even if you go into the world of agency I have so many questions piled up to where you can have agents in essence be junior developers writing portions of code that then come back to a senior developer for review.

00:14:13.586 --> 00:14:16.870
So there's a lot in that range there, that's a good one.

00:14:20.120 --> 00:14:50.388
I think we're going to struggle in the upcoming months, upcoming years with junior developers, because we will have to forcefully limit ourselves, forcefully limit the speed that we're going at to find work for juniors, because things that I would normally pawn off to a junior for them as a learning opportunity, things that I would normally pawn off to a junior for them as a learning opportunity, and because I'm kind of bored of that work, it can now be done in seconds if I shoot it off to co-pilot.

00:14:50.388 --> 00:15:09.328
So I think this is going to be a big struggle that you have to understand why you're growing juniors and I think more and more it's going to go into into the experienced or medium level developers as well.

00:15:09.328 --> 00:15:29.265
Right, in general, I think it's going to be the same way as it was for the past 10 years, maybe more, where everybody needs senior developers and it's going to be really hard to get senior developers because nobody's training juniors to get this.

00:15:29.265 --> 00:15:31.029
Thank you, thank you.

00:15:31.029 --> 00:15:32.131
It's a double-edged sword.

00:15:32.613 --> 00:15:32.874
It is.

00:15:32.874 --> 00:15:34.385
Everyone wants experience.

00:15:34.385 --> 00:15:36.027
I think we said it on a previous podcast.

00:15:36.027 --> 00:15:38.307
If not, I've said it to people before.

00:15:38.307 --> 00:15:42.940
It's everybody wants someone with experience, but nobody wants to give anyone that experience.

00:15:42.940 --> 00:15:44.903
So how can they get that experience?

00:15:44.903 --> 00:15:48.008
It's a challenge, and there is a myth.

00:15:48.008 --> 00:15:50.773
I think that AI listen, ai is a tool.

00:15:50.773 --> 00:15:59.168
I use it daily now, and even more so over the past couple of weeks with some of the newer models that have been released.

00:15:59.168 --> 00:16:07.373
I can't even keep up with the models that are coming out, but you still need to take it back to having the fundamentals of knowing what's going on and not just assuming.

00:16:07.373 --> 00:16:14.774
I think it's putting a perception in a lot of people's minds that AI can just do it and it makes everything easier and it's perfect.

00:16:14.774 --> 00:16:20.182
So therefore, we don't need the individual to be able to review it At this point.

00:16:20.182 --> 00:16:24.413
In 2025, where will it be when I'm retired in 2025.

00:16:24.413 --> 00:16:25.133
Where will it be when I'm retired?

00:16:25.133 --> 00:16:30.076
I don't know, but hopefully I won't care and I'll be sitting underneath a tree somewhere if they still exist.

00:16:30.899 --> 00:16:31.081
So do you?

00:16:31.081 --> 00:16:32.605
So you think it's a double-edged sword?

00:16:32.605 --> 00:16:53.307
Then, cause, considering that you know you get younglings right coming into the development world and they're learning or maybe starting to learn using co-pilot of how to code, but they're missing all the foundation, like what seasoned developers have gone through, where they have to build it from scratch.

00:16:53.307 --> 00:16:58.649
They understand the structure, they understand the concept, but the newer generations are coming in.

00:16:58.649 --> 00:17:00.908
Are they not learning it that way?

00:17:00.908 --> 00:17:10.071
They're learning right directly into using AI to build a foundation which could lose that knowledge or translation.

00:17:10.071 --> 00:17:18.630
I mean, tina, you kind of started before the AI and then you're having to also incorporate AI into your day-to-day.

00:17:18.630 --> 00:17:19.432
I mean, how is that?

00:17:19.432 --> 00:17:26.229
Could you do the same thing now if you started now versus when you first started developing?

00:17:28.280 --> 00:17:30.609
Okay, so that's a two-part question.

00:17:30.609 --> 00:17:47.950
If I go for the first part, there's a trap with AI that I have caught myself in quite often as well, which is AI is so good at generating answers that seem like the correct answer that we tend to believe it as that's the full truth, right?

00:17:47.950 --> 00:17:54.333
So whenever you're exploring a new topic with AI, you will think, whoa, this is crazy.

00:17:54.333 --> 00:17:58.191
I don't have to click 10 different links, because this is giving me a summary of everything.

00:17:58.191 --> 00:18:06.114
However, if you would use AI to research a topic that you do know about, you would notice that there are hallucinations.

00:18:06.960 --> 00:18:08.727
Hallucinations are at the core of AI.

00:18:08.727 --> 00:18:13.330
I don't think they're going away with the current architecture that we have.

00:18:13.330 --> 00:18:29.051
So AI always hallucinates and if you trust it fully, when you learn a new topic, a technical topic, you're going to start to learn things that don't really exist, and, as a junior developer, you're even more eager to just yeah, ai said that.

00:18:29.051 --> 00:18:35.031
I'm going to use that as the source of truth, and for me, I think it was just with one of the side projects.

00:18:35.031 --> 00:18:38.041
Actually, I kept trying to convince AI.

00:18:38.041 --> 00:18:41.308
Well, not convince AI, but get AI to give me an answer.

00:18:41.308 --> 00:18:45.622
That was in the documentation all along AI to give me an answer.

00:18:45.622 --> 00:18:52.028
That was in the documentation all along, and until AI gave me a wrong answer for five different prompts.

00:18:52.028 --> 00:18:57.473
That's when I said, okay, I need to find a different source of the answer and I found documentation.

00:18:57.834 --> 00:19:30.707
It took much less time actually to go to the documentation, but because I didn't want to believe that ai is giving me the wrong answer, I stuck with it and I believe that that's that must be the truth very good point and people hallucinate too in a sense, and it's something to to remember is, and I'd say to ai is a tool and I I thank you for bringing up that point, because even if I I could talk with Chris and Chris doesn't know something, he gives me information I still have to have a sense of do I want to believe this?

00:19:30.707 --> 00:19:31.829
Should I do research?

00:19:31.829 --> 00:19:32.551
Should I know?

00:19:32.551 --> 00:19:45.076
I have to have a general understanding, and that's what I'm finding in the fear that I have in some cases is everybody just believes everything that AI is true and will be stuck because we'll have a lot of misinformation out there.

00:19:45.076 --> 00:19:47.385
Then everybody uses AI, not everybody.

00:19:47.385 --> 00:19:49.672
A lot of people use AI to publish information.

00:19:49.672 --> 00:19:54.132
So now you have AI creating information that's not true.

00:19:54.132 --> 00:20:01.375
Then you have people learning or training AI and people on that, and now it's very difficult.

00:20:01.857 --> 00:20:10.450
It's a cycle, it's very difficult to determine what is true in a sense, it's even from the development point of view of how to do something.

00:20:10.450 --> 00:20:21.189
Unfortunately, with development, there's usually more than one way to do something and sometimes, depending on how you write it, it can cause problems, as you had mentioned, days down the road or, in the future, down the road too as well.

00:20:21.189 --> 00:20:23.407
So it's important.

00:20:24.961 --> 00:20:34.161
So would you say just to maybe to add this cycle right um, ai hallucinates and then you train on hallucinations and you generate more hallucinations.

00:20:34.161 --> 00:20:47.612
This is the main reason why I'm not yet sold on agents, because when when one ai model, one ai feature hallucinates, 20% of the time, I can control that.

00:20:47.612 --> 00:20:59.828
If that's picked up by another LLM that hallucinates and another LLM that hallucinates, you go into the cycle where you don't want to be and maybe for some cases it works.

00:20:59.828 --> 00:21:05.671
I think in development, agentic development is going to go further than where it is right now.

00:21:05.671 --> 00:21:18.019
But introducing agents in something like business central, I think will need to have a I don't know a slightly different approach than just letting it loose different completely.

00:21:18.401 --> 00:21:21.705
But let's go back to the agentic approach to anything.

00:21:21.705 --> 00:21:38.060
I understand the hallucinations, but if you have agents that are focused or trained on specific functions or specific tasks, that can use different models, would it reduce the hallucination?

00:21:38.060 --> 00:21:46.654
Because now, instead of saying model X or I don't want to say X, but a particular model, give me this.

00:21:46.654 --> 00:21:49.965
Now you can say, okay, well, this is what I need.

00:21:49.965 --> 00:21:51.430
It's broken down into these pieces.

00:21:51.430 --> 00:21:54.528
Let's go out and get an agent to do something similar to building a house.

00:21:54.528 --> 00:21:58.788
When you build a house, you'll use a carpenter, you'll use a plumber and you'll use an electrician.

00:21:58.788 --> 00:22:01.488
You'll have a general contractor that will manage them all.

00:22:01.488 --> 00:22:03.900
A general contractor may know enough to do everything.

00:22:03.900 --> 00:22:06.222
Contractor will manage them all.

00:22:06.222 --> 00:22:23.650
A general contractor may know enough to do everything, but sending it out to the specific uh agent may give you better results yes, if llms weren't so um sure that they need to be right all the time, right when?

00:22:23.710 --> 00:22:27.964
when's the last time, uh, an llm said to you oh, I'm sorry, I don't know that.

00:22:27.964 --> 00:22:31.092
You know, I, I have to go and ask a human, I have to.

00:22:31.092 --> 00:22:33.528
I don't know how to do that.

00:22:33.528 --> 00:22:35.032
The lms will go all the way.

00:22:35.032 --> 00:22:37.299
So you know, break down a task, fine, okay.

00:22:37.299 --> 00:22:46.329
Maybe in the task process you already hallucinate, you send the wrong task to the electrician and then electrician hallucinates again and installs plumbing instead of wires.

00:22:46.329 --> 00:22:58.955
Right, and this is the part that I'm worried about that when you chain hallucinations you can go sideways quite badly.

00:23:00.541 --> 00:23:01.586
Understood understood.

00:23:01.586 --> 00:23:10.746
That is an interesting point to bring up with the, I guess, stacked other agents that plumber can also hallucinate.

00:23:26.799 --> 00:23:38.887
Maybe what they think is the right way to do things may not always be the right way to do it, and so they're just basing off by experience or basing off what they've learned.

00:23:38.887 --> 00:23:46.769
But you may have another plumber that would do it better, or you know the right way based on what they also learned.

00:23:46.769 --> 00:23:55.174
So it's kind of a slippery slope when you're you know, when you're including agents because they're going to hallucinate.

00:23:55.174 --> 00:23:57.345
It's going to be, it has to be.

00:23:57.345 --> 00:24:00.792
You have to build like a parameter around it, like how do you do that?

00:24:02.240 --> 00:24:06.751
So actually I have an example of just an agent hallucinating in AL.

00:24:06.751 --> 00:24:11.171
Yesterday I put it up on Twitter or Blue Sky, I don't know.

00:24:11.171 --> 00:24:15.971
I asked it can you just go through this file and translate Dutch comments into English?

00:24:15.971 --> 00:24:19.267
And it said sure, no problem, I'll fix those linter errors for you.

00:24:19.267 --> 00:24:24.332
And it identified some linter errors and started fixing them as if they are in C sharp.

00:24:24.332 --> 00:24:27.400
Some linter errors and started fixing them as if they are in C sharp.

00:24:27.400 --> 00:24:32.711
So it didn't even understand the task that I was giving it and then provided a wrongful solution to a task that I never asked to be completed.

00:24:37.202 --> 00:24:53.336
So with development to go back to you talking about hallucinations and finding the development To what extent within AL, based upon your experience with it thus far, do you think it offsets your development?

00:24:53.336 --> 00:24:56.811
What I mean by that is you mentioned we had IntelliSense.

00:24:56.811 --> 00:25:20.785
Intellisense helped you and now with Copilot, there's a lot of autocomplete type situations where it will try to create you know if you're doing an action on a page, for example, or try to put in the most common properties, or several properties, including the images, which, to be honest with you, I can't tell you if it's 50% of the time it's right with the name of the image or not but it tries to get there.

00:25:21.988 --> 00:25:29.645
How much do you think it increases the efficiency on development for creating code?

00:25:29.645 --> 00:25:37.792
And if you want to break it down to tables and pages, I can talk about some of the examples I have done, also including what it takes to go back and review what it has done.

00:25:37.792 --> 00:25:44.603
How do you think that, in from your experience with what you've been doing, it's increased your efficiency, and in what areas?

00:25:46.525 --> 00:25:46.684
um.

00:25:46.684 --> 00:26:02.887
Time wise, I think, like the, the industry average is around 30 percent and I would say my experience could roughly be around 30 percent of of time saved.

00:26:02.887 --> 00:26:04.029
Um.

00:26:04.029 --> 00:26:10.469
But there's two parts which, on top of time saved, it brings to my work.

00:26:10.469 --> 00:26:14.810
One is naming and brainstorming.

00:26:14.810 --> 00:26:18.871
That's something that I love to do with Copilot.

00:26:18.871 --> 00:26:23.928
Even when I'm reviewing someone else's code, I'm like, hmm, something feels off here.

00:26:23.928 --> 00:26:28.887
Hey, copilot, do you think this feels off as well, like what could be a better name here?

00:26:28.887 --> 00:26:32.428
And I do get back suggestions that I can then use in the code review.

00:26:32.428 --> 00:26:34.547
So time saved.

00:26:34.547 --> 00:26:40.900
The other one is I get new ideas for like naming, for restructuring my own code, but also someone else's code.

00:26:40.900 --> 00:26:45.990
And then the third part is it's a joy to develop for me.

00:26:45.990 --> 00:26:56.487
You know when, when I don't have to type the code out, I don't have to complete it with intellisense, I can just say I know what I want the code to look like.

00:26:56.487 --> 00:26:57.288
You do it.

00:26:57.931 --> 00:27:18.233
So I think this um, I don't know enthusiastic factor for me weighs a lot my enthusiasm my enthusiasm after seeing some of the stuff that you've been doing has increased, and also I jettison some of the you and I talked about it too some of the little things to take away from that, which is good.

00:27:18.233 --> 00:27:21.690
What do you find that you use it the most for?

00:27:21.690 --> 00:27:30.869
Do you use Copilot chat and we'll get into cursor after uh in a moment but do you use it to, say, create procedures for me?

00:27:30.869 --> 00:27:38.781
Do you say, create something that does this within this is within al, from a business central point of view, or do you use it more for the auto completion point of view?

00:27:40.545 --> 00:27:45.814
um, auto completion, probably just because of how natural it is.

00:27:45.814 --> 00:27:48.067
I see text, I tab, I accept text.

00:27:48.067 --> 00:27:57.208
I feel, even when I introduce Copilot to new developers, al developers or any other language, auto-completion nobody struggles with.

00:27:57.208 --> 00:28:01.526
Everybody sees how natural it is, how cool it is and just tab, tab, tab, you're done.

00:28:01.526 --> 00:28:08.569
To work with chat, to work with edits, it takes more of a mental switch.

00:28:08.569 --> 00:28:13.031
You have to understand okay, this is what I'm now going to write.

00:28:13.031 --> 00:28:16.169
What if I get Copilot to do that for me?

00:28:16.169 --> 00:28:17.703
And I've done?

00:28:18.267 --> 00:28:25.592
I use that primarily when I have predictable code that I want to write.

00:28:25.592 --> 00:28:33.311
So, for example, today I was reimplementing one trigger on validate trigger on one field.

00:28:33.311 --> 00:28:35.186
The other one was more or less the same.

00:28:35.186 --> 00:28:46.309
So I just said, hey, copilot, you do the second one, because you will now see exactly how I want to have it redone or generate this, this, this and this field for me.

00:28:46.309 --> 00:28:52.065
So whenever I have a clear, clear view of what the next step is going to be, that's when I go for chat.

00:28:52.065 --> 00:28:54.406
But in terms of what do I use?

00:28:54.406 --> 00:29:00.571
More often, auto-completions are just every minute, not even every day or every hour.

00:29:02.181 --> 00:29:04.760
Okay, that's good it's.

00:29:04.760 --> 00:29:06.325
Have you used it?

00:29:06.325 --> 00:29:09.092
Do you know how it works with it?

00:29:09.092 --> 00:29:18.710
Because I had gone through at one point and I had created a table within Business Central and again with Copilot it helped fill in a lot of the common properties and I adjusted it.

00:29:18.710 --> 00:29:22.549
Then I went to go through and I needed to create a list page.

00:29:22.549 --> 00:29:25.648
From that I started to type the page.

00:29:25.648 --> 00:29:30.730
Copilot, basically with the autocomplete, created most of the list page for me.

00:29:33.842 --> 00:29:36.911
So, how does that work?

00:29:36.911 --> 00:29:39.768
And also, you mentioned the see.

00:29:39.768 --> 00:29:40.891
My mind's all over with this.

00:29:40.891 --> 00:29:50.189
Which model do you find yourself using with development now, claude, claude sonnet it was recently enabled within github.

00:29:50.189 --> 00:29:54.248
I mean, these models come out so fast and someone has to turn them on or enable them.

00:29:54.248 --> 00:29:57.417
But which model are you using?

00:29:57.417 --> 00:30:02.082
Go back to what I was talking about, to understand how it works, to be able to create something from what you have already created.

00:30:02.082 --> 00:30:12.051
But then also, how do you know which model you should use for a task, or is there just one model that's better for development in general?

00:30:13.921 --> 00:30:14.162
Okay.

00:30:14.162 --> 00:30:24.189
So, starting with models for AL Cloud, sonnet 3.5 was, up to two days ago, the best model to use, but now 3.7 is out, which is even better.

00:30:24.189 --> 00:30:26.291
So AL Cloud Sonnet 3.7 is out, which is even better.

00:30:26.291 --> 00:30:32.211
So AL clods on a 3.7 all the way to go Other languages that's where we could have a discussion.

00:30:32.211 --> 00:30:33.113
Do we want to?

00:30:34.780 --> 00:30:40.813
I personally sometimes go for 01 when I say, hey, this is a code, I just have one bug.

00:30:40.813 --> 00:30:42.182
Can you help me find the bug?

00:30:42.182 --> 00:30:42.884
Review the bug?

00:30:42.884 --> 00:30:45.308
The reasoning models are good for that.

00:30:45.308 --> 00:31:02.932
But still, I would say my default is always Claude and then, based on if I'm testing a new model out or if I just want to see how another one works, I switch, but Claude is my main driver, more or less always.

00:31:05.579 --> 00:31:09.990
But to the question of how does Copilot work under the hood.

00:31:09.990 --> 00:31:11.535
It's interesting.

00:31:11.535 --> 00:31:20.249
Over the weekend I actually spent quite some time let's call it opening the hood and seeing what is actually getting sent to an LLM.

00:31:20.249 --> 00:31:24.483
So there's two parts.

00:31:24.483 --> 00:31:27.604
One is autocompletes and one is edits.

00:31:27.604 --> 00:31:29.362
I'll stick to autocompletes first.

00:31:29.362 --> 00:31:34.580
So you've created your table with all of the fields and now you're creating your list page.

00:31:34.580 --> 00:31:40.144
For that table, copilot will build a generic request.

00:31:40.144 --> 00:31:42.363
You are a helper for a developer.

00:31:42.363 --> 00:31:44.040
You help do this, this, this.

00:31:44.154 --> 00:31:53.000
So it will have just a system prompt, but it will also first of of all know what al looks like from all of the data that it was trained on.

00:31:53.000 --> 00:31:58.237
But on top of that it's using your open tabs in vs code as context.

00:31:58.237 --> 00:32:08.767
So because you have your table opened in one of the tabs, it will apply that table to the prompt and say, hey, this is what the user has opened, just for you to know what's happening.

00:32:08.767 --> 00:32:17.078
And from that autocompletes already know oh, okay, table fields.

00:32:17.078 --> 00:32:17.921
The name of the page seems to match.

00:32:17.921 --> 00:32:19.083
Then I have an idea what I would suggest.

00:32:19.083 --> 00:32:30.905
Right, it knows how the page looks like because it was trained on some AL data during the training of the model, and it knows specifically which fields you would like because in the prompt there was the context of your own table.

00:32:33.357 --> 00:32:41.190
So one very important part here is that works well when you don't have a ton of tabs opened.

00:32:41.190 --> 00:32:51.292
If you have 50 tabs open, copilot will try to take something, but it won't really know what fits best.

00:32:51.292 --> 00:32:52.955
It cannot take everything.

00:32:52.955 --> 00:33:03.541
Context is limited, so for best results it's good to have only the relevant files opened, it takes up to four open tabs.

00:33:03.541 --> 00:33:13.865
As context, and again, even with four open tabs, if I have a management code unit which has 3,000 lines inside of it, copilot is not going to take all of that.

00:33:13.865 --> 00:33:19.721
It will again try to take something out of that management code unit, but not everything.

00:33:19.721 --> 00:33:32.063
So, to get the best experience when using AI for development, keep only the open files, keep only the relevant files opened and let's have small files.

00:33:32.063 --> 00:33:37.299
Let's try to keep files small, not only for developers, but now also for AI.

00:33:38.343 --> 00:33:39.085
That's good to know.

00:33:39.085 --> 00:33:55.016
That's interesting to see how that is using what you have open for more context for what it has been trained on, which is how, in some, most cases and it's it's a big time savings, as you could see there, when you do a list page, because there's usually a lot of typing in that.

00:33:55.016 --> 00:34:05.157
So to be able to start a page, give it a similar name, as you had mentioned, and for it to create most of that information where I just have to go through and edit, it is a great time savings.

00:34:05.157 --> 00:34:13.030
But I also want to keep going back to saying you do need to review it, because you just need to review it.

00:34:13.554 --> 00:34:28.594
Is it aware only up to four times that the limitation to the tool itself because it's too much data to take, or do you think there's going to be an increase down the road where it will be more aware of more tabs?

00:34:28.594 --> 00:34:29.096
Or do?

00:34:29.115 --> 00:34:35.385
you think there's going to be an increase down the road where it will be more aware of more tabs when we get to bigger contexts.

00:34:35.385 --> 00:34:42.494
We might get more open tabs added, but there's a big difference With autocompletes.

00:34:42.494 --> 00:34:47.481
You need your completions to be ready fast, because if I type a sentence, I want to wait half a second and I want to see that gray string right, what comes next?

00:34:47.481 --> 00:34:49.603
I want to wait half a second and I want to see that gray string right.

00:34:49.603 --> 00:34:50.063
What comes next?

00:34:50.083 --> 00:35:03.155
When you are talking about edits, so let's call it Copilot Chat, but the one that actually edits your files there.

00:35:03.155 --> 00:35:05.201
You don't that one doesn't take your open files into the context.

00:35:05.201 --> 00:35:07.726
You drag the files into what they've called a working set.

00:35:07.726 --> 00:35:19.983
You have control over the context that gets sent as a prompt to an LLM, and that working set currently has a limitation of 10 files.

00:35:19.983 --> 00:35:24.023
So that's already a big increase.

00:35:24.175 --> 00:35:45.920
And I would say if you're creating new files like create a list page out of a table, using edits is much better than trying to auto-complete it, because then you can say here's my table and you can say here's my page object if you already have something in it, and you can say add all of the fields from the table to the list right.

00:35:45.920 --> 00:35:54.099
You have way more control over what hits the LLM compared to the autocomplete, where the model makes the decisions for you.

00:35:54.099 --> 00:35:55.143
What's in the context?

00:35:55.143 --> 00:35:58.445
What's the prompt that's sent to the model?

00:35:58.445 --> 00:36:12.987
So edits super powerful for new objects, especially if you already have a comparable object somewhere in your code base that you can drag and drop as context.

00:36:16.117 --> 00:36:19.186
You had mentioned, you looked under the hood to see what it's using.

00:36:19.186 --> 00:36:22.344
Can you use local?

00:36:22.344 --> 00:36:25.543
That's the other thing a lot of individuals are doing now.

00:36:25.543 --> 00:36:32.440
Can you use local large language models with development so that you could see this, or how did you see that information?

00:36:33.463 --> 00:36:35.956
There's two questions there yeah, can you?

00:36:35.976 --> 00:36:38.925
change it to use a different model, Number one.

00:36:38.925 --> 00:36:43.407
Two how did you actually get to be able to look under the hood?

00:36:45.396 --> 00:36:47.543
Can you change it to a local model?

00:36:47.543 --> 00:36:48.465
You cannot.

00:36:48.465 --> 00:36:58.186
I very much hope to see that one day where there's a window where you can add some feedback to Microsoft.

00:36:58.186 --> 00:37:02.085
I've probably sent seven feedbacks already.

00:37:02.085 --> 00:37:16.255
I want to have a local option as well, because when I'm on a plane I don't have Copilot, or sometimes Copilot is slow, and this year I do want to have a couple of conference sessions where I'm showcasing some of the examples with co-pilot.

00:37:16.255 --> 00:37:26.260
It's a risk if the co-pilot is going to say, yeah, I'm having a slow day, let's, let's wait five minutes before this is completed, when usually it takes three seconds.

00:37:26.260 --> 00:37:30.126
So can you use a local model?

00:37:30.126 --> 00:37:33.597
No, how did I get to the information?

00:37:33.597 --> 00:37:40.449
Uh, there's a tool called fiddler um, which?

00:37:40.489 --> 00:37:52.001
is used for that yeah, it's been around for I don't know a lot of years he's trying to be nice Chris.

00:37:53.038 --> 00:37:58.844
I remember Fiddler, when I was younger than you so you know Fiddler.

00:37:59.398 --> 00:38:05.795
Fiddler basically allows you to inspect the network that's going from your machine outside.

00:38:05.795 --> 00:38:17.003
So with Fiddler you basically place yourself as a man in the middle between VS Code and the endpoints of Copilot.

00:38:17.003 --> 00:38:26.054
And I was just typing prompts in VS Code and in Fiddler I was watching what's hitting it, so what's happening there, and I could see the system prompts.

00:38:26.054 --> 00:38:28.358
I could see which files are being used as context.

00:38:28.358 --> 00:38:33.003
I really have to give credit to Viejo for this.

00:38:33.003 --> 00:38:41.574
He is the one that shared with me at the directions First.

00:38:41.574 --> 00:38:42.898
He's the one that said hey, edits are really cool for AL.

00:38:42.898 --> 00:38:44.985
It generates files that compile.

00:38:44.985 --> 00:38:47.849
If you use it with Cloud, you have to go go use it now.

00:38:47.849 --> 00:38:51.800
So that's where I first got the, the, let's say, the initial push.

00:38:51.800 --> 00:38:53.344
Okay, there's more than autocompletes.

00:38:53.344 --> 00:38:56.820
And he's the one that said I've used fiddler to see what's happening.

00:38:56.860 --> 00:39:04.661
So it's like, oh, I didn't even think about that no, it's a great idea and you're able to see what information sent.

00:39:04.661 --> 00:39:08.588
So it was sending your information, your table.

00:39:08.588 --> 00:39:14.923
So if we had an open tab for a table, does that get sent up to the ai model?

00:39:15.625 --> 00:39:16.126
yeah as well.

00:39:16.126 --> 00:39:25.557
So it's a part of the prompt is going to say the generic, your developer helper, you do this, and that part of the the prompt is going to say this is what the user has opened.

00:39:25.557 --> 00:39:34.050
And part of the prompt is going to say these are the lines he's currently, they are currently working on.

00:39:34.050 --> 00:39:38.835
So a few lines above what you're doing, a few lines below what you're doing and it will know.

00:39:38.835 --> 00:39:39.195
Okay.

00:39:39.195 --> 00:39:53.981
So we're suggesting autocompletions for this specific part, for this line, and there's another feature called temporal context which is going to say these are the changes that the user has just made.

00:39:53.981 --> 00:39:57.202
So they remove the line here and added the line here.

00:39:57.202 --> 00:40:10.489
So it doesn't only give the static files to the LLM, it also tells the LLM this is where the user is positioned right now and this is what they have recently done.

00:40:10.489 --> 00:40:13.130
So it has more and more ideas.

00:40:13.130 --> 00:40:16.291
Okay, this is what I think the user will try to do next.

00:40:16.291 --> 00:40:21.092
This is especially powerful for the next edit suggestions.

00:40:21.092 --> 00:40:33.525
So the part where it doesn't only try to autocomplete one line for you, but it will also look where does Copilot think you're going to go next?

00:40:35.539 --> 00:40:39.434
Up to last month, you were only able to get a completion.

00:40:39.434 --> 00:40:48.927
If you're standing at the end of an existing code line or if you're standing in a new line but with the next edit suggestions, it can suggest edits in the existing code line.

00:40:48.927 --> 00:40:52.762
Or if you're standing in a new line but with the next edit suggestions, it can suggest edits in the existing code as well.

00:40:52.762 --> 00:40:57.224
So if I'm standing in line five, it might suggest something in the line five.

00:40:57.224 --> 00:41:05.427
But then it's going to say hey, I think you're going to want to jump to line 17 now, and I can just press tab and boom, my cursor is on tab 17.

00:41:05.427 --> 00:41:08.304
And it says I think you're going to want to rename this variable too.

00:41:08.304 --> 00:41:11.974
So I just press tab and it renames that variable on line 17.

00:41:11.974 --> 00:41:17.947
So the next added suggestions are like autocomplete, but on another level.

00:41:17.967 --> 00:41:18.588
Wow.

00:41:18.588 --> 00:41:24.507
I go back to the days of just having to type all this stuff out.

00:41:24.507 --> 00:41:29.126
So GitHub Copilot has a number of features.

00:41:29.126 --> 00:41:34.681
It has the chat that we've been talking about, the autocomplete, the next edit.

00:41:34.681 --> 00:41:38.228
It has create documentation.

00:41:38.228 --> 00:41:42.320
Have you used it to create any documentation for AL or other languages?

00:41:45.746 --> 00:41:52.507
One of the rules that we have on the codebase I'm currently working on is that all of the procedures have to be internal.

00:41:52.507 --> 00:41:55.744
If they're public, they need the XML documentation.

00:41:55.744 --> 00:42:00.306
So I've been using Copilot a lot for that.

00:42:00.306 --> 00:42:02.382
I just say, hey, I need the documentation here.

00:42:02.382 --> 00:42:03.157
Is it perfect?

00:42:03.157 --> 00:42:22.052
Absolutely not, but it gives me a good start and, especially with developers whose native language is not English, it brings them up two levels up in the way how they phrase the documentation sentences, in the way they phrase what the certain parameter is supposed to do.

00:42:22.052 --> 00:42:25.740
It raises all of the flags for double negatives.

00:42:25.740 --> 00:42:34.820
You know things that to you too, it would sound weird, but when english is not your native language, you're just gonna sounds good when I translate.

00:42:34.820 --> 00:42:36.222
Translate it to slovenian.

00:42:36.423 --> 00:42:47.289
So I don't see what your problem is and so the documentation user for, and then the other one that I haven't tried it for AL.

00:42:47.289 --> 00:42:53.623
I did try it over the weekend for another language, but it can create tests for code.

00:42:53.623 --> 00:43:06.242
Have you done any experimentation with creating tests for code, because I am a big fan of automated testing and development?

00:43:06.242 --> 00:43:07.579
Automated testing the whole page.

00:43:07.579 --> 00:43:16.664
Script testing is a whole other topic that I've been on now too, but from the development point of view, had you used it to create tests for AL?

00:43:17.407 --> 00:43:21.920
I did so for testing it's.

00:43:21.920 --> 00:43:24.400
I would say it's a two-part story.

00:43:24.400 --> 00:43:28.746
First, the tests that I tried to generate were successful.

00:43:28.746 --> 00:43:32.880
Exactly the tests that I tried to generate were successful.

00:43:32.880 --> 00:43:33.623
Exactly the tests that I wanted to.

00:43:33.623 --> 00:43:34.085
I didn't even need to.

00:43:34.085 --> 00:43:37.596
I didn't fix anything except the object ID, because nobody likes object ID.

00:43:37.596 --> 00:43:42.605
It's not even Copilot why the tests were so good.

00:43:43.967 --> 00:43:47.858
I had to add a table, I had to add a code unit, I had to add a page.

00:43:47.858 --> 00:43:52.208
But the functionality was very similar to a table, a code unit and a page.

00:43:52.208 --> 00:43:56.304
I already had and for those three objects I already had tests.

00:43:56.304 --> 00:44:01.668
So when I created new table, page and code unit, I pulled that as context.

00:44:01.668 --> 00:44:06.387
I said, hey, for the categories we also have tests.

00:44:06.387 --> 00:44:14.204
And I pulled in the file this is how tests look like and I said create a new test for brands, which was the functionality I was adding.

00:44:14.204 --> 00:44:22.467
And because it knew exactly how tests should look like, it knew how to create those new tests.

00:44:23.047 --> 00:44:31.188
So when you are trying to generate tests for something that you've already tested in a similar manner, it is going to do a good job.

00:44:31.188 --> 00:44:45.050
If we expect the co-pilot to write a bunch of unit or integration or end-to-end tests when we give it a management code unit, that's not really going to work.

00:44:45.050 --> 00:44:47.793
That's not really going to work.

00:44:47.793 --> 00:44:56.784
But again, vietco had a session of how you can get new tests, not only the tests that you've already created, going with Copilot.

00:44:56.784 --> 00:45:00.003
The answer is interfaces.

00:45:00.003 --> 00:45:04.201
He's been talking about this topic for a number of years now.

00:45:04.474 --> 00:45:11.304
That you should use interfaces for unit testing, that you should use interfaces to isolate different parts from one another.

00:45:11.304 --> 00:45:25.846
And when your code is modular, when your code has interfaces, it doesn't look that far from the code you would write in C-sharp, and with C-sharp the models are really good because it's a mature language.

00:45:25.846 --> 00:45:42.349
So if your code is solid, if your code has interfaces, if it's modular, you can simply prompt Copilot and say I am now testing this interface, this function, and it will create stubs, spies, all of those test doubles.

00:45:42.349 --> 00:45:51.175
It will generate in the session he generated I don don't know 35 tests in 15 minutes maybe.

00:45:51.175 --> 00:46:06.934
So it's doable, but not if our expectation is that we can throw our legacy code from 20 years ago and say now I need tests okay, I like that the whole interface.

00:46:07.054 --> 00:46:17.257
I think that's underutilized, and I think it's because that, the whole interface I think that's underutilized, and I think it's because that's a whole other topic that you and I talk about as well too.

00:46:17.257 --> 00:46:23.369
So that's interesting, so you can help stub out some of the tests so that you can test the code, which is extremely beneficial.

00:46:31.795 --> 00:46:34.637
Now just to jump a little bit.

00:46:34.637 --> 00:46:35.900
You use Cursor for development.

00:46:35.900 --> 00:46:43.068
Now I use all three, and by all three I mean VS Code, vs Code Insiders, which is getting all the nice stuff, and Cursor.

00:46:43.068 --> 00:46:45.471
I've started using Cursor as well.

00:46:45.471 --> 00:46:49.083
Yes, what is Cursor?

00:46:49.083 --> 00:46:55.139
Cursor is a fork um made from vs code.

00:46:55.139 --> 00:47:02.019
So imagine, at some point the team said, hey, vs code, we like that, but we would like to create our own vs code which is gonna focus on being ai first.

00:47:02.019 --> 00:47:09.170
So this is an ide, a development environment which has AI at the core.

00:47:09.170 --> 00:47:15.947
So that's what Cursor is trying to be the AI-first IDE.

00:47:18.318 --> 00:47:23.489
So, with it being a fork of VS Code, you have all of the functionality of VS Code.

00:47:23.489 --> 00:47:33.608
So what I mean by that is the standard functionality, and you can use the extensions from the marketplace that you can install.

00:47:33.608 --> 00:47:35.443
So you can use the AL extension.

00:47:35.443 --> 00:47:38.905
You can use other extensions with it as well.

00:47:38.905 --> 00:47:50.954
Now, with the AI driven first, what's the difference with using Cursor versus using GitHub Copilot or GitHubpilot or github chat co-pilot, chat within vs code?

00:47:52.416 --> 00:47:56.324
so I was surprised by how well the switch to cursor went.

00:47:56.324 --> 00:48:01.681
I knew going into it that this is a fork from vs code, so everything should work.

00:48:01.681 --> 00:48:03.985
But it's crazy how good everything works.

00:48:03.985 --> 00:48:04.715
You open it up.

00:48:04.715 --> 00:48:07.019
All of your extensions are already there.

00:48:07.019 --> 00:48:12.228
You you open a project, it can even open the same open tabs that you had in VS Code.

00:48:12.228 --> 00:48:16.567
So transitioning to Cursor is a non-issue.

00:48:16.567 --> 00:48:23.387
But to your second question what does it mean that it's more AI-centric?

00:48:23.387 --> 00:48:41.565
A lot of the features that we now have in GitHub Copilot actually I'm not going to say they started in Cursor, but they were in Cursor before they reached GitHub Copilot Things like the next added suggestions, which I talked about earlier.

00:48:42.054 --> 00:48:54.557
So let me jump to line number 17 to rename a variable that was in Cursor for quite some time before it reached the GitHub Copilot extension.

00:48:54.557 --> 00:48:58.177
But on top of that, for me what's really cool?

00:48:58.177 --> 00:49:05.581
For example, when I work with Python, you can get some results directly in the terminal.

00:49:05.581 --> 00:49:08.369
I run a Python script and then it says error in the terminal.

00:49:08.369 --> 00:49:18.726
When I hover over a Python script and then it says error in the terminal, when I hover over with my mouse over that error, there's already a button saying would you just like to transfer this to the AI pane, to the AI window.

00:49:18.726 --> 00:49:24.606
You click that button and AI takes over, because that's more or less what I would do.

00:49:24.606 --> 00:49:27.766
Anyway, I would say, ai, you try to fix the error first, and if you can't, I'll see what I would do.

00:49:27.766 --> 00:49:32.565
Anyway, I would say AI, you try to fix the error first, and if you can't, I'll see what I can do.

00:49:32.565 --> 00:49:36.746
So that was one of the really cool additions.

00:49:39.594 --> 00:49:52.304
Claude 3.7 came one day earlier to Cursor, which was part of the reason why I bought a pool license two days ago to Cursor, because I really wanted to see if it's better for AAL or not.

00:49:52.304 --> 00:50:02.869
Agents were there, but the gap is not as big.

00:50:02.869 --> 00:50:13.447
One of the quality of life features that I've noticed is you can now have Cursor files where you specify what kind of files I never want to send to an LLM.

00:50:13.447 --> 00:50:14.940
It's a security issue.

00:50:14.940 --> 00:50:21.748
I don't want to send my secrets, my keys, to an LLM ever.

00:50:21.748 --> 00:50:40.126
It doesn't matter if they promise me 17 times that they won't store my data and that's something cursor now has, and GitHub Copilot is not there yet 17 times that they won't store my data and that's something Cursor now has, and GitHub Copilot is not there yet, so they're always thinking with this AI-first approach to how can we make the whole experience better.

00:50:41.996 --> 00:50:43.320
So why do you use all three?

00:50:45.304 --> 00:50:45.867
Enthusiasm.

00:50:45.867 --> 00:50:50.121
I'm comparing what works best for me right now.

00:50:50.121 --> 00:50:52.164
Uh, I don't.

00:50:52.164 --> 00:50:56.960
I am driving as like the, the tool for everyone to use.

00:50:56.960 --> 00:51:07.423
I'm standing behind the github co-pilot primarily because I got our organization to buy licenses for all of the experienced plus developers.

00:51:07.423 --> 00:51:10.909
It would be very hard for me to make a case.

00:51:10.909 --> 00:51:13.724
Nah, now let's buy Cursor for some of them.

00:51:13.724 --> 00:51:17.963
So I endorse GitHub Copilot, but I also love what Cursor is doing.

00:51:17.963 --> 00:51:23.081
And the insider is just to see what's coming in the future releases.

00:51:23.695 --> 00:51:24.775
Oh no, I understand the inside.

00:51:24.775 --> 00:51:29.818
I was just mentioning because of if they're in essence the same with some.

00:51:29.818 --> 00:51:31.862
Was just mentioning because of if they're in essence the same with some more oomph.

00:51:31.862 --> 00:51:40.655
Behind cursor, it seems like with some of the functionality, why would someone use VS Code instead of cursor outside of any fees as well?

00:51:40.655 --> 00:51:42.141
I mean anytime there's a fee.

00:51:42.141 --> 00:51:44.182
You always have to take that into consideration too.

00:51:46.739 --> 00:51:52.748
I don't think there's a strong argument to go for either um vs code.

00:51:52.748 --> 00:51:53.469
You're used to it.00:51:53.469 --> 00:51:56.422


It's not like cursor is that much different.00:51:56.422 --> 00:51:58.916


It's more or less the same, but you do still have to make a switch.00:51:58.916 --> 00:52:03.253


For me it was a big turn off that there's another theme and it took me two days.00:52:03.253 --> 00:52:06.501


Oh, I can switch the theme, right, it's the same as in VS Code, right?00:52:06.501 --> 00:52:09.088


But that was already something small and I was annoyed by it.00:52:09.088 --> 00:52:17.617


And there was another thing that I liked with Cursor Ah, yeah, yeah.00:52:18.059 --> 00:52:23.706


So even though it's the same set of features, they are implemented differently.00:52:23.706 --> 00:52:26.885


The prompts that Cursor sends are slightly different.00:52:26.885 --> 00:52:36.646


So to give you an example, previously I said I gave Cursor the task to translate Dutch comments into English and it started fixing linter errors.00:52:36.646 --> 00:52:39.280


At first I thought this is weird.00:52:39.280 --> 00:52:40.304


I tried it five times.00:52:40.304 --> 00:52:44.454


Five times, instead of translating, it went to fix linter errors.00:52:44.454 --> 00:52:49.059


I tried the same prompt in VS Code it translated the comments.00:52:49.059 --> 00:53:03.706


So the same feature behaves differently, even if it's using the same model, because the prompts are different and the way how it's implemented is different as well.00:53:03.706 --> 00:53:14.262


Also, in terms of performance, cursor Composer, which is the equivalent of GitHub, copilot, edits for me seems to work better on large files.00:53:14.262 --> 00:53:18.306


It knows that it has to jump to a certain section and make the edits there.00:53:18.306 --> 00:53:27.425


Well, github Copilot will try to go through the whole file line by line and then fix the middle part where my changes actually need to be applied.00:53:27.425 --> 00:53:34.864


So the same feature but works differently okay, I have not tried cursor yet.00:53:35.103 --> 00:53:36.065


I've been sticking to the.00:53:36.065 --> 00:53:49.007


I'm an old guy so I stick with vs code, with what I know, because I've been doing great with github co-pilot and github co-pilot chat and then also using some tools outside as well.00:53:49.007 --> 00:53:51.202


But I think I'll have to give it a shot.00:53:51.202 --> 00:53:54.574


My enthusiasm I'm driving from your enthusiasm, I appreciate it.00:53:55.516 --> 00:53:57.523


I want to take a step back for a moment.00:53:57.523 --> 00:54:04.422


You had mentioned something earlier and I want your opinion on this, because I've talked about this with several individuals.00:54:04.422 --> 00:54:08.846


You had mentioned that you like to do the back end development.00:54:08.846 --> 00:54:13.965


You don't need to do the front-end development and then you can use AI to help create the front-end.00:54:13.965 --> 00:54:26.222


In essence, at this point, do you ever see a point where ERP software will be faceless and AI can generate the front-end for users based upon what they need?00:54:26.222 --> 00:54:46.802


This is where I'm going with this, seeing that ERP would have the backend data, the backend business logic, but the frontend interface would be generated automatically by AI based upon the context of the user using or doing a function.00:54:46.802 --> 00:54:51.215


Do you think that's feasible, possible, plausible, likely?00:54:52.545 --> 00:54:56.617


Technology-wise, I think we're going to get there.00:54:56.617 --> 00:54:59.474


There was that whole Project Sophia I'm not sure if you saw that.00:54:59.474 --> 00:55:04.637


That was a year, two years ago where it generates the UI based on what you want.00:55:04.637 --> 00:55:07.331


Would the same apply to ERPs?00:55:07.331 --> 00:55:09.409


I doubt it.00:55:09.409 --> 00:55:12.724


My background is in accounting.00:55:12.724 --> 00:55:16.942


Accountants don't like changing UIs all the time.00:55:16.942 --> 00:55:22.291


Right when I'm used to how UI works for me to enter ledgers, that's how I want my UI.00:55:22.291 --> 00:55:22.833


Don't change it.00:55:22.833 --> 00:55:27.211


Even the changes from BC25 to 26 accountants are going to be annoyed by that.00:55:28.416 --> 00:55:52.992


So the idea that AI is going to regenerate UI every time I walk in or that it's going to be different between two users, I don't think that's going to be very confident it doesn't have to be different for you, because if you're an accountant, that you have a certain view, you could have a consistent view for you every time you use it, but it'd be tailored for your specific function and then, even if you had to switch to use something else, it could still generate the same UI.00:55:53.032 --> 00:56:03.186


In essence, it's just something that I'm thinking about where, how much of this, where the backend can have all the business logic, you can have all the actions, you can have all of the functions.00:56:03.186 --> 00:56:06.474


The data store Don't even get me going where I think data will be.00:56:06.474 --> 00:56:09.208


Data will not be so structured, in my opinion, in the future.00:56:09.208 --> 00:56:11.293


We already getting there, I think.00:56:11.293 --> 00:56:30.847


But if you have that framework, that you could have it built on your own, because even if business central right now, you have personalizations, the ability to make all these personalizations by role or by user in essence gives you the ability to change the interface for a specific group or for a specific person.00:56:31.911 --> 00:56:32.512


But is it?00:56:32.512 --> 00:56:43.670


Would it matter, though I think it's going to shrink on the need for UI.00:56:43.670 --> 00:56:49.454


If a lot of things are being automated, there's going to be less interaction with the application.00:56:49.454 --> 00:56:54.380


So it's now, I think it's going to be narrowed to a specific functionality where you do require a human interaction to be less interaction with the application.00:56:54.380 --> 00:56:59.527


So it's now, I think it's going to be narrowed to a specific functionality where you do require a human interaction.00:56:59.527 --> 00:57:05.079


I think that's going to be the more focused area, but curious from what you think today an interesting observation.00:57:05.139 --> 00:57:11.092


So I'm not so sure about the idea of um fully customizable.00:57:11.092 --> 00:57:24.211


I do think, especially in work apps, we would like things to stay the way they are Once something works for me, I want it to stay that way because I know that's what I need to do to finish my work.00:57:24.211 --> 00:57:39.335


But something that I have seen is that AI technology is going to drive UI optimizations, and not because AI likes users, but more from the agent perspective.00:57:39.335 --> 00:57:44.054


So I have a really cool demo that I hope I can show you to guys.00:57:44.054 --> 00:57:54.351


At some point where you ask an agent, I would like to go to Business Central, create an invoice for this customer and enter this item.00:57:54.351 --> 00:57:55.407


And what it does?00:57:55.407 --> 00:57:57.054


It spins up a new browser.00:57:57.054 --> 00:58:03.952


It goes to Business Central, it logs in with the credentials that I gave it and then it comes into the role center.00:58:03.952 --> 00:58:08.175


It's going to look what are all the available actions on the role center?00:58:08.175 --> 00:58:10.451


Ah, invoice, create invoice.00:58:10.451 --> 00:58:11.233


That's the one I want.00:58:11.405 --> 00:58:14.896


So then it clicks the same UI that I, as a user, would.00:58:14.896 --> 00:58:21.795


Once it's on the invoice card, it again scans all of the available UI options.00:58:21.795 --> 00:58:24.273


Which fields should I populate for a customer?00:58:24.273 --> 00:58:25.951


Ooh, this one says customer name.00:58:25.951 --> 00:58:30.755


Okay, let me put that in, and it goes on to items and quantities and so on.00:58:30.755 --> 00:58:37.418


But agent can use all of the same functionalities that I as a user have available to me.00:58:37.418 --> 00:58:48.617


I don't have to develop anything specifically on Business Central, so no AL code needed for this additional use case to be covered.00:58:48.617 --> 00:58:56.219


However, if my field is hidden somewhere deep down, agent won't find it.00:58:56.219 --> 00:59:01.094


If my action is somewhere very deep down, the agent won't find it.00:59:01.094 --> 00:59:21.215


So where I do think we're going to go is the direction of simplified UI, because now we have an additional reason why UI should be simple, why important fields should be where they should be and not just add them to general, because the user will figure it out and personalize them themselves.00:59:22.304 --> 00:59:23.849


Taking it to the point of where.00:59:23.849 --> 00:59:31.617


I like that, because it does take it to the point of where the UI is generated based upon the actions that you have.00:59:31.617 --> 00:59:35.132


If you want to show the demo, you can share your screen now.00:59:35.132 --> 00:59:36.576


I'll look for it.00:59:36.576 --> 00:59:39.213


If you're not ready, we'll do it another time.00:59:40.668 --> 00:59:42.514


But you have the ability to share your screen.00:59:43.467 --> 00:59:49.016


If you're comfortable doing it, if the information is something that you don't mind sharing to be recorded.00:59:49.016 --> 00:59:55.668


If not, I respect that and you know I'll call you after this and we'll set up a team's call because I want to see it.00:59:56.690 --> 00:59:57.112


Yeah, so the?00:59:57.112 --> 00:59:58.755


So you're saying the ui, the ui.00:59:58.755 --> 01:00:09.246


The ui is going to be irrelevant in terms of, like designing it, because it's going to be simplified, as you had mentioned.01:00:09.246 --> 01:00:11.489


So I don't know if the effort is going to be.01:00:11.489 --> 01:00:12.510


It's not irrelevant.01:00:12.570 --> 01:00:18.320


It's more relevant to keep it simple and not have it so complex oh yeah, that's sorry.01:00:18.626 --> 01:00:21.050


Yeah, I think my explanation is slightly different.01:00:21.070 --> 01:00:52.949


Like it's, it's irrelevant, for in terms of like, putting a lot of effort into it, more of like, hey, let, right, we have the brains that can figure out what needs to be done will end up with more simple pages being built specifically for agents.01:00:52.949 --> 01:01:06.476


But at that point we're also going to realize oh, but that's also good for users, right, I can, if I have a page that shows the information that I need to access every day and I don't have to go through the list and the card and figure out the certain number.01:01:06.476 --> 01:01:12.541


So I think that the agent transformation is going to be really beneficial for users that don't like AI as well.01:01:12.541 --> 01:01:12.679


Yeah, that's just like.01:01:12.679 --> 01:01:13.626


I think the agent transformation is going to be really beneficial for users that don't like AI as well.01:01:14.385 --> 01:01:17.373


I think, that's going to be the next big push to this agentics world.01:01:19.286 --> 01:01:22.092


When you are driving your Tesla, right?01:01:22.092 --> 01:01:23.896


You just say warm up my seat.01:01:23.896 --> 01:01:28.416


I don't need to fiddle around or trying to navigate that with buttons.01:01:28.925 --> 01:01:31.173


I've never told my car to warm up my seat.01:01:31.264 --> 01:01:32.233


Oh you should, you should try it, chris, chris, my car to warm up my seat?01:01:32.233 --> 01:01:37.217


Oh you should, you should try it chris, chris, I tell you to cool my seat.01:01:37.217 --> 01:01:43.693


You could say the same thing like oh yeah, where you're at yes, yeah, that's, I was chris, I was joking that's right, I forgot.01:01:43.693 --> 01:01:49.452


Cool my seat, not heat my seat so no, it is.01:01:49.713 --> 01:01:52.858


It's the simplification of the UI in essence.01:01:52.858 --> 01:01:54.630


This is where I see it going.01:01:54.630 --> 01:02:15.126


I like Tina, I like your explanation of it, where you have a core and that's kind of a better way to explain what I was trying to visualize where you had the core actions already defined and then now that UI can be generated for someone for their specific needs, without the need to personalize it and go to all these, Even ourselves.01:02:15.126 --> 01:02:29.204


Now, with some of the features that you can do with the promoted actions and the field classification, you know to do the show more, show less, the importance and a few other factors of it, I think will change it well.01:02:30.288 --> 01:02:32.896


I think you actually bring a good point right.01:02:32.896 --> 01:02:36.175


The most traditional of machine learnings were always.01:02:36.175 --> 01:02:44.344


Machine learning models were used to find I don't know, what does the user most commonly purchase.01:02:44.344 --> 01:02:48.496


Right, but in the business central sense, what does the user most commonly click?01:02:48.496 --> 01:02:57.293


And you could have suggested customizations which would essentially bring us to to the point you were saying so can I have a tailored ui?01:02:57.293 --> 01:03:06.606


Just not necessarily from the ground up, but suggest to someone hey, you've been clicking this action every day for the past two weeks.01:03:06.606 --> 01:03:08.969


What if you move it somewhere else?01:03:08.969 --> 01:03:13.804


That I think could be, could be also a cool direction it will be a step.01:03:13.846 --> 01:03:14.947


It will be a step to be there.01:03:14.947 --> 01:03:16.771


So how do you feel about a demo?01:03:17.492 --> 01:03:18.054


yes or no?01:03:18.054 --> 01:03:22.510


I I would love to, but I have no clue where the project is, so okay I will.01:03:22.610 --> 01:03:36.409


I will definitely show you that um once I found, once I find the project, okay, let me know and I'm interested in seeing it, even just knowing it's there or you can show it to me, but then also you should blog about it and show it.01:03:36.688 --> 01:04:12.952


I think that would be beneficial and jaw dropping, as I say to many individuals actually to write a post about it, because you can probably tell that I'm quite enthusiastic about this whole AI technology, but when it comes to agents I'm skeptical and when I first tried to run that demo to see how AI recognizes the Business Central UI, I found it very cool.01:04:12.952 --> 01:04:21.056


It demos very well, but what's the use case Like for me when it comes to Business Central and agents?01:04:21.056 --> 01:04:32.514


I'm always coming back to this we don't want mistakes in an ERP and language models are kind of built on the fact that they will hallucinate at some point.01:04:32.514 --> 01:04:35.353


It's a fact, they will hallucinate.01:04:35.353 --> 01:04:50.355


So I have a hard time understanding right now what agents will look like, not only what agents could look like, because I see, like I said, I see all sorts of very cool-looking demos.01:04:50.355 --> 01:04:59.748


Like I said, I see all sorts of very cool looking demos, but with those demos I'm not going to convince somebody who needs to have their costs posted to the correct account without the mistake.01:04:59.748 --> 01:05:01.195


There's a risk.01:05:01.597 --> 01:05:09.697


The simplistic version is in the demo, but I'm not saying I'm a proponent or an opponent to any of this.01:05:09.697 --> 01:05:14.974


But we also have to remember how many times do humans make mistakes?01:05:19.934 --> 01:05:21.891


I heard that I'm not saying.01:05:21.891 --> 01:05:27.873


I'm just saying is we have to have a sense of reality that, chris, go back to the Tesla.01:05:27.873 --> 01:05:28.815


I will tell you.01:05:28.815 --> 01:05:35.731


I have the Tesla drive me everywhere and the Tesla will see things before I do and reacts before I could.01:05:35.731 --> 01:05:40.166


So I'm not saying you should have to trust everything every time.01:05:40.166 --> 01:05:44.516


It's a matter of to use the word that we use over here, checks and balances.01:05:44.516 --> 01:05:48.893


Or you have the checks, but everyone's saying that AI is not perfect.01:05:48.893 --> 01:05:53.146


Why is everyone concerned with it if we just have the assumption of saying it's okay that AI is not perfect?01:05:53.146 --> 01:05:54.715


Why is everyone concerned with it if we just have the assumption of saying it's okay that AI is not perfect?01:05:54.715 --> 01:05:57.585


Because, on the flip side, neither are humans.01:05:57.585 --> 01:06:04.672


Because I can tell you a number of times, chris and Tina, I don't know, depending upon in your role oh, I posted this to the wrong GL account.01:06:04.672 --> 01:06:05.255


What do I do?01:06:07.567 --> 01:06:15.070


Yeah, I think understanding the risk, as you said, but you have to be able to understand that risk and the goal is to minimize that risk.01:06:16.072 --> 01:06:24.958


Correct, yes, so are you more risk adverse by having AI that might be finely tuned to a specific task?01:06:24.958 --> 01:06:34.985


And AI may not be applicable for all tasks in this agentification world or agentic agentification which word should I use?01:06:35.067 --> 01:06:37.735


agentification so it's, it's.01:06:37.735 --> 01:06:38.798


That's what I mean.01:06:38.798 --> 01:06:39.420


It's, it's, it's.01:06:39.420 --> 01:06:47.166


This is a philosophical discussion in a sense, but I'm of the mindset and I say over and over again use the right tool for the job.01:06:47.166 --> 01:06:54.682


I understand the risk of using a human for certain things and I understand the risk of using a human for certain things, and I understand the risk of using a computer for certain things.01:06:54.682 --> 01:06:56.791


We use calculators.01:06:56.791 --> 01:07:02.333


Nobody wanted to use a calculator before and they thought that everybody would have to use math and then you would check the calculator and do this.01:07:04.431 --> 01:07:09.315


And now nobody knows math, but with calculators, we all now use calculators.01:07:09.315 --> 01:07:14.532


What if those calculators were wrong 20 percent of the time, and you don't know which 20 percent of the time?01:07:14.532 --> 01:07:18.706


You know how would we still use calculators like that?01:07:18.706 --> 01:07:23.277


Because humans can't calculate correctly 100 of the time either.01:07:23.297 --> 01:07:26.351


but that's just that's kind of you hit.01:07:26.351 --> 01:07:30.802


The point that I was trying to make is that it calculated.01:07:30.802 --> 01:07:31.644


I mean, math is math.01:07:31.644 --> 01:07:44.123


At this point, for some of the calculators uh, you know, I don't know what any complex calculator is, but you know scientific calculators and a regular calculator is going to solve the problem for you because that's a a finite task, in my opinion.01:07:44.123 --> 01:07:47.233


You need to do an operation to these numbers.01:07:47.233 --> 01:07:50.461


You can use these agents for finite tasks.01:07:50.461 --> 01:07:58.284


So it's a matter of using the right agent for the right task and up until the point where those agents can do more complex tasks, you can rely on a human.01:07:58.284 --> 01:08:09.489


But also a human at that point may be wrong a percentage of the time, because they're tired, and it's not to say that the humans don't have the ability to it.01:08:09.489 --> 01:08:11.934


Look at what happens to humans, why they make mistakes.01:08:11.934 --> 01:08:16.671


They're distracted, they're tired, they don't want to be there.01:08:16.671 --> 01:08:21.737


You know there's a lot of external factors that cause them to hallucinate.01:08:21.737 --> 01:08:23.832


And then how do we catch it?01:08:26.305 --> 01:08:31.216


That's a very good point, because I've heard this comparison a lot of times.01:08:31.216 --> 01:08:42.801


Humans also hallucinate, right, I don't buy it as much, but nevertheless it brings up a point.01:08:42.801 --> 01:08:49.573


Okay, so if human can do an error in our system, then an agent can do that same error.01:08:49.573 --> 01:09:00.088


What if we put the process in place so that the agent cannot go and purchase a thousand bicycles off of a vendor but at the same time?01:09:00.088 --> 01:09:04.134


If human was able to do that, well, what if we prevent for the humans as well?01:09:04.134 --> 01:09:05.891


So that's another aspect.01:09:05.891 --> 01:09:16.091


So if agents are going to fix the UI for us, I think agents are also going to highlight all of these process issues that we already had.01:09:16.512 --> 01:09:22.895


We just somehow never stumbled upon them well, that's where some of the workflows and the approvals come into in a business process.01:09:22.895 --> 01:09:27.815


So I'm not saying I'm changing the thought process.01:09:27.815 --> 01:09:32.310


I'm just trying to look at a different perspective, because everyone says, oh, I can make an llM.01:09:32.310 --> 01:09:33.613


Say five plus five is nine.01:09:33.613 --> 01:09:34.216


It's so dumb.01:09:34.216 --> 01:09:38.944


Well, it's not supposed to be doing that anyway, right?01:09:38.944 --> 01:09:41.533


So it's almost like we're trying to find fault with it.01:09:41.533 --> 01:09:45.296


But almost, if you understand the limitation, you know where to apply it.01:09:46.505 --> 01:09:47.447


Yeah, I think that's my point.01:09:47.447 --> 01:10:05.359


It's that, as long as you understand that there is going to be a risk and the goal is always to minimize risk if there's a human aspect that, even if you put parameters around it, humans tend to want to figure out loopholes, they they want to be curious and that maybe eventually get around it.01:10:05.359 --> 01:10:15.260


But if you have an agent that is specific to a task and always do the same task, it minimizes that risk of someone getting around that workflow.01:10:15.260 --> 01:10:21.292


So it's just understanding of like this tool, that what it can do for you and what it can't do for you.01:10:21.292 --> 01:10:28.115


But there's going to be always something to consider, or you always should consider that there's always going to be a risk.01:10:28.115 --> 01:10:32.393


It's how much you want to take on that risk is the question.01:10:33.935 --> 01:10:34.497


As a business.01:10:34.497 --> 01:10:48.487


One thing that I struggle with is if a task is so straightforward that we can confidently say an agent is not going to hallucinate on that and probably there's also a better way how we can solve that problem.01:10:48.487 --> 01:10:54.378


There's Power Automate that is going to execute it 100% of the time in that specific order, right?01:10:54.378 --> 01:10:58.530


Or can I write AL code so I'm not pushing too much against agents.01:10:58.530 --> 01:11:00.095


I know they're coming, I know they're going to be awesome.01:11:00.095 --> 01:11:00.735


I've seen demos.01:11:00.735 --> 01:11:16.738


I love them, but I just need to find a way for me to find what is a good use case for agents, because if it's straightforward, there are other tools that are 100 reliable and if it's not as certain, then it's a good use case for agents.01:11:16.738 --> 01:11:18.766


But how do you deal with that uncertainty?01:11:18.766 --> 01:11:23.279


And I I agree with kind of both of you probably the.01:11:23.319 --> 01:11:26.367


The answer is what's the balance of human in the loop?01:11:26.367 --> 01:11:35.247


We don't want to necessarily go and revisit each step the agent took, but we also don't want it to execute 15 steps before we we jump in.01:11:35.247 --> 01:11:37.712


So what's the what's the right balance?01:11:37.712 --> 01:11:44.951


Yeah, because in in cursor and github, copilot, that's exactly what's happening.01:11:44.951 --> 01:11:46.534


Agents are going on.01:11:46.534 --> 01:11:47.997


At some point I say stop.01:11:47.997 --> 01:12:00.515


I know the best way forward because you seem to be struggling, and I think why agents are going to work so well in development is because it's constantly human in the loop.01:12:00.515 --> 01:12:09.909


We see everything that's happening and that's why, even though we know LLMs hallucinate, we also find a ton of value with them.01:12:09.970 --> 01:12:18.552


Yes, that was a great point, Like your last point with the human interaction.01:12:18.552 --> 01:12:19.615


We know it's hallucinates.01:12:19.615 --> 01:12:25.695


We accept the hallucination because we know we're reviewing and correcting as we go.01:12:25.695 --> 01:12:26.698


Yeah.01:12:26.717 --> 01:12:38.296


So it's it's part of the process and I had, as I went back and mentioned that I had it create field pages or even actions and some of the properties were wrong.01:12:38.296 --> 01:12:43.675


I just go in and fix the image name, for example, which it seems to mostly get incorrect.01:12:43.675 --> 01:12:46.869


It tries to match it to the caption, but it does a good job.01:12:46.869 --> 01:12:56.853


But I still just accept it, because I didn't have to type the other 10 properties that were in there, including the brackets and everything else.01:12:56.853 --> 01:13:01.088


It's wonderful.01:13:01.088 --> 01:13:06.211


Well, sir, thank you again for a wonderful conversation.01:13:06.251 --> 01:13:18.417


I could talk with you for days about this and you know that I love the conversation because I think we all have different takes on this agentic world where it's going I think it's coming.01:13:19.018 --> 01:13:26.427


But I'm with tina to the point and you in a sense, chris, it's just knowing the application and the right use case for it.01:13:26.427 --> 01:13:40.431


I think the misconception a lot of people have with ai at this point is ai is one thing, instead of ai being all the different variations that we have, even with the different models, and that an agent can't do everything when you don't even have a person that can do everything.01:13:40.431 --> 01:13:47.650


So the the point is that the agents will replace specific functions or tasks to make them easier.01:13:47.650 --> 01:13:52.537


And uh, I'll just say easier.01:13:52.537 --> 01:13:54.539


So I'm not saying agents replace people.01:13:55.079 --> 01:13:57.871


To Tattini's point is there's a balance of where do you have a human?01:13:57.871 --> 01:14:10.256


Because if you look at everything, everything that we've been doing through the evolution of time or even with man and you go through the industrial revolution, is everybody's created tools to do a task.01:14:10.256 --> 01:14:12.432


No tool has been able to do everything.01:14:12.432 --> 01:14:17.552


So they've created hammers, they created power tools, we created horse and buggy, we created automobile.01:14:17.552 --> 01:14:22.813


Every step forward there's been resistance to a lot of those tools, saying, oh, a hand can do it so much better.01:14:22.813 --> 01:14:29.692


But once you have the tool that does a specific task, it can complete that function and task and you put it all together and you have a tool belt.01:14:40.286 --> 01:14:43.233


That's function and task, and you put it all together and you have a tool belt.01:14:43.233 --> 01:14:44.595


That's where I stand with this, but I'm just a dinosaur.01:14:44.595 --> 01:14:45.738


So so no, I, I completely, I completely agree with that.01:14:45.738 --> 01:14:47.202


I always say that this is not here to replace people.01:14:47.202 --> 01:14:51.153


Um, it's just making the people more, more, uh, efficient, or at least more enthusiastic about what they do.01:14:55.025 --> 01:14:56.268


And with that, I heard a quote the other day.01:14:56.268 --> 01:14:57.409


I forget who said it.01:14:57.409 --> 01:14:58.932


It was on another podcast.01:14:58.932 --> 01:15:02.840


I don't want to quote it due to inaccuracy, but I would like to give credit to someone because I didn't say it.01:15:02.840 --> 01:15:07.636


They didn't say, and what they said is AI is not going to replace you.01:15:07.636 --> 01:15:14.521


Someone using AI is going to, and it sat with me, and just let that resonate you.01:15:14.521 --> 01:15:18.613


Someone using AI is going to, and it sat with me and just let that resonate.01:15:18.793 --> 01:15:28.145


AI, to Tina's point, is not going to replace people, but somebody who can become more efficient by utilizing AI in their duties will.01:15:30.270 --> 01:15:30.829


Exactly.01:15:32.112 --> 01:15:33.994


I agree.01:15:34.735 --> 01:15:37.380


Mr Tineser, thank you again for taking the time to speak with us.01:15:37.380 --> 01:15:42.027


It's always a pleasure.01:15:42.027 --> 01:15:47.730


Look forward to having you back on in a few months to see where your progress goes with this, because I know technology is moving quickly and with your enthusiasm, and I follow everything that you do.01:15:47.730 --> 01:15:52.469


I know that you'll be doing some great things, so we'll get something on the calendar just to lock it in.01:15:52.469 --> 01:16:05.213


But in the meantime, how can someone get in contact with you to learn a little bit more about some of the things that you've been doing with AI, to see some of the information that you've been sharing and all of the other great things that you've been doing?01:16:06.666 --> 01:16:14.011


I think LinkedIn is the best place to go and I would say, for existing posts, the blog right.01:16:14.011 --> 01:16:28.551


Because just today, when I was getting in the headspace of what are we going to talk about on the podcast, I was like I wrote a blog post on GitHub Copilot a month ago and I already have so many new things that I need a patch to.01:16:28.551 --> 01:16:34.229


And it's been only what 30 days, so there's more coming excellent, excellent.01:16:34.251 --> 01:16:43.122


Thank you, and that's why I want to lock you in for, you know, maybe not 30 days, but at some point in the future.01:16:43.122 --> 01:16:44.131


But again, thank you for your time.01:16:44.131 --> 01:16:45.021


We really appreciate it.01:16:45.021 --> 01:16:49.164


Thank you for all that you share, and also thank you for all that you share and that you do within the community.01:16:49.164 --> 01:16:55.605


I know I've personally learned a lot from it as well so I appreciate it.01:16:55.626 --> 01:16:56.606


Thank you for having me again.01:16:56.726 --> 01:16:57.528


We'll talk with you soon.01:16:57.528 --> 01:16:58.668


Ciao, ciao, take care, ciao.01:16:58.668 --> 01:17:06.315


Thank you, chris, for your time for another episode of In the Dynamics Corner Chair, and thank you to our guests for participating.01:17:06.657 --> 01:17:08.198


Thank you, Brad, for your time.01:17:08.198 --> 01:17:11.641


It is a wonderful episode of Dynamics Corner Chair.01:17:11.641 --> 01:17:14.300


I would also like to thank our guests for joining time.01:17:14.300 --> 01:17:14.677


It is a wonderful episode of Dynamics Corner Chair.01:17:14.677 --> 01:17:15.310


I would also like to thank our guests for joining us.01:17:15.310 --> 01:17:18.145


Thank you for all of our listeners tuning in as well.01:17:18.145 --> 01:17:21.813


You can find Brad at developerlifecom.01:17:21.813 --> 01:17:32.676


That is D-V-L-P-R-L-I-F-E dot com, and you can interact with them via Twitter D-V-L-P-R-L-I-F-E.01:17:32.676 --> 01:17:46.056


You can also find me at Mattalinoio, M-A-T-A-L-I-N-OI-O, and my Twitter handle is Mattalino16.01:17:46.056 --> 01:17:49.752


And you can see those links down below in the show notes.01:17:49.752 --> 01:17:51.096


Again, thank you everyone.01:17:51.096 --> 01:17:52.671


Thank you and take care.

Tine Starič Profile Photo

Tine Starič

Microsoft MVP | Software Architect at Companial