Building Modern Microsoft 365 Solutions with SharePoint Framework, Microsoft Graph, PnPjs & Great User Experiences with Julie Turner [MVP]
Modern Microsoft 365 development is about far more than writing code. Organizations expect solutions that integrate seamlessly across SharePoint, Microsoft Teams, Microsoft Graph, Azure, and Microsoft 365 while remaining scalable, secure, maintainable, and ready for future innovation. In this episode of M365.FM, Microsoft MVP Julie Turner shares decades of real-world experience designing enterprise-grade Microsoft 365 solutions. From SharePoint Framework (SPFx) and Microsoft Graph to PnPjs, open-source development, UX design, and AI-assisted coding, this conversation provides practical guidance for developers, solution architects, consultants, and technical decision makers building on the Microsoft platform.
WHY MICROSOFT 365 EXTENSIBILITY MATTERS MORE THAN EVER
Microsoft 365 has evolved into a powerful business platform that goes far beyond email and collaboration. Julie explains how extensibility enables organizations to transform Microsoft 365 into a tailored business platform by integrating external systems, automating business processes, extending SharePoint and Teams, and creating custom user experiences. Rather than replacing standard Microsoft functionality, modern development focuses on extending it through supported APIs, frameworks, and services that remain compatible with Microsoft's continuous cloud updates.
SHAREPOINT FRAMEWORK AS THE FOUNDATION OF MODERN DEVELOPMENT
SharePoint Framework has become the standard for building supported client-side solutions across Microsoft 365. Julie explains why SPFx remains the preferred development model for SharePoint Online, Microsoft Teams, and Microsoft 365 experiences. The discussion covers hosted deployment, simplified maintenance, supported customization, reusable components, and how developers can build scalable enterprise applications without maintaining complex infrastructure. The episode also highlights the best learning resources, Microsoft Learn content, and the extensive Patterns and Practices (PnP) community for developers getting started with SharePoint Framework.
MICROSOFT GRAPH, PNPJS, AND THE FUTURE OF ENTERPRISE APIS
Microsoft Graph has become the central gateway into Microsoft 365, but understanding when to use Graph versus native SharePoint REST APIs remains critical. Julie discusses the strengths and current limitations of Microsoft Graph, endpoint maturity, authentication, permissions, performance considerations, and enterprise security. She also explains how PnPjs dramatically simplifies development by eliminating repetitive boilerplate code, providing fluent APIs, simplifying authentication, retry logic, error handling, and API consumption. Listeners also gain insight into the future roadmap of PnPjs Version 5 and the importance of semantic versioning in large open-source projects.
DESIGNING USER EXPERIENCES THAT PEOPLE ACTUALLY ENJOY USING
Technology alone does not create successful solutions. Great user experience often determines whether employees embrace or avoid enterprise software. Julie shares practical examples from real customer projects, explaining how thoughtful UX design improves productivity, reduces friction, and increases adoption. Whether building mobile applications for field workers, internal business applications, or Microsoft 365 solutions, developers should focus on simplicity, responsiveness, accessibility, and minimizing unnecessary user interaction. Small UX decisions can have enormous impacts on employee satisfaction and business efficiency.
OPEN SOURCE, AI, AND THE FUTURE OF MICROSOFT DEVELOPMENT
The conversation concludes with an honest discussion about open-source software, AI-assisted development, GitHub Copilot, Claude Code, Microsoft Copilot, and the future relationship between low-code and pro-code development. Julie explains why AI should enhance—not replace—developer expertise, how experienced developers can use AI as a collaborative assistant rather than an automated replacement, and why logical thinking and software architecture remain essential skills. The episode finishes with rapid-fire questions covering favorite developer tools, coding preferences, Microsoft events, future improvements for Microsoft Graph, and practical advice for developers who want to start building modern Microsoft 365 solutions today.
Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-fm-modern-work-security-and-productivity-with-microsoft-365--6704921/support.
🚀 Want to be part of m365.fm?
Then stop just listening… and start showing up.
👉 Connect with me on LinkedIn and let’s make something happen:
- 🎙️ Be a podcast guest and share your story
- 🎧 Host your own episode (yes, seriously)
- 💡 Pitch topics the community actually wants to hear
- 🌍 Build your personal brand in the Microsoft 365 space
This isn’t just a podcast — it’s a platform for people who take action.
🔥 Most people wait. The best ones don’t.
👉 Connect with me on LinkedIn and send me a message:
"I want in"
Let’s build something awesome 👊
00:00:00,000 --> 00:00:06,000
Oh yeah, welcome back to the ANSI 65 and podcast today's episode is perfect for the
2
00:00:06,000 --> 00:00:11,000
better post solution architect consults and anyone built on Microsoft 65.
3
00:00:11,000 --> 00:00:18,000
Julie has been a Microsoft since 2017 is a member of the Microsoft patterns and practice team.
4
00:00:18,000 --> 00:00:21,000
Co-main intends the PNP.js.
5
00:00:21,000 --> 00:00:25,000
Co-made contains the H2O.
6
00:00:25,000 --> 00:00:34,000
I hope I was right. It's co-host of the code deploy and go live and spends her days helping organizations building
7
00:00:34,000 --> 00:00:40,000
better Microsoft 365 experience. Today we are exploring modern Microsoft 365 extend
8
00:00:40,000 --> 00:00:46,000
extensibility SharePoint framework, Microsoft graph, developer tooling, UX and we are a customer
9
00:00:46,000 --> 00:00:51,000
given up the setting in the age of co-pilot in the eye. Welcome Julie to the podcast.
10
00:00:51,000 --> 00:00:57,000
Thanks for having me Mark. It's very nice to meet you.
11
00:00:57,000 --> 00:01:07,000
Thank you for the people I think the most people know you especially in the PNP community much for listeners who may not know you who is
12
00:01:07,000 --> 00:01:10,000
Julie, join our outside of the Microsoft ecosystem.
13
00:01:10,000 --> 00:01:19,000
Yeah, so I've been in the Microsoft environment since my career started a long, long time ago in a galaxy far, far away.
14
00:01:19,000 --> 00:01:26,000
But primarily what I do is build extensibility solutions on top of Microsoft 365.
15
00:01:26,000 --> 00:01:42,000
That's what I do day in day out as part of my role at some practice consulting, which is essentially just a small boutique consultancy where seven people we work out of our homes but work collectively under this
16
00:01:42,000 --> 00:02:07,000
and practice consulting brand and we essentially help people help organizations large and small micro organizations up to big fortune 500 organizations implement Microsoft 365 in their environment and that can be anything from you know helping them with their information architecture governance administration setup configuration
17
00:02:07,000 --> 00:02:17,000
Internet builds business process automation, co pilot readiness is such a buzzword these days. So that's a big part of what we're doing.
18
00:02:17,000 --> 00:02:34,000
And then of course the extensibility piece, which is when you need to integrate with external systems or on prem systems or just integrate within the Microsoft 365 ecosystem or with Azure or any of those types of things.
19
00:02:34,000 --> 00:02:42,000
That's sort of where my bread and butter is that's the piece of the puzzle that is my area of expertise. So yeah.
20
00:02:42,000 --> 00:02:49,000
When you look back, what technology shift has the biggest impact on your career?
21
00:02:49,000 --> 00:03:12,000
Probably SharePoint itself that might sound funny, but I was in the Microsoft ecosystem from the day I, well before I finished college, but since college building things with you know ASP.net.net, but I graduated with a degree in electrical engineering specializing in micromancer system design.
22
00:03:12,000 --> 00:03:32,000
And so I was doing you know motherboard type design and that kind of low level stuff. But because of that, I did a lot of assembler and C++ and you know even writing machine code when you're doing little circuit board stuff. So like that was my low level understanding.
23
00:03:32,000 --> 00:03:56,000
And then for my summer jobs, I would get these jobs working in it doing custom development and that became quickly something that I really loved and had a passion for. And so I just followed that into my career. And so I was doing basically working in IT departments doing custom solution development on the Microsoft platform, whatever that was at the time, you know, sequel server.
24
00:03:56,000 --> 00:04:12,000
And then I got to see that net see sharp. Those areas just building client, well, you know, client services and then we had client server model and we have the microservices model and we, you know, so we had all the models that we went through, you know, whatever.
25
00:04:12,000 --> 00:04:39,000
And then I got introduced I was working as director of IT and I got introduced to SharePoint in 2007, the on prem version and I was working for a clinical research organization that was doing device implant heart like stent work and stuff like that. And we needed a platform to store content and have it be.
26
00:04:39,000 --> 00:05:03,000
And then I got a security in a way that could work for a clinical research organization. And so SharePoint, I started in on it. I got deeper, I got deeper and then I am eventually moved into a consultancy, I moved out of direct IT, moved into consultancy, started working on SharePoint itself. And then we went to the cloud and, you know, the rest is history, I suppose.
27
00:05:03,000 --> 00:05:15,000
You, you, you were in many hats, you consign, you know, speaker open stalls, many antenna, which is your favorite.
28
00:05:15,000 --> 00:05:18,000
Wow, that is a darn good question.
29
00:05:18,000 --> 00:05:36,000
I love help, I think my favorite is probably when I get a client who deeply understands the benefit of extensibility in Microsoft 365 has a vision has an understanding of what we can do with the power of the platform and some custom code.
30
00:05:36,000 --> 00:05:55,000
And then we start building business process solutions that really help accelerate their business that I have a few customers like that and it's just a joy to work on those projects because the light in their eyes, the happiness, the joy when, hey, we've automated this thing that nobody wanted to do.
31
00:05:55,000 --> 00:06:20,000
And it's so much better and they're seeing return on their investment that's that interactivity is super powerful to me, but then from that same perspective, speaking, going out and telling other people how to do that thing for their internal customers or external customers or whatever it is is really joyful to especially, you know, when you have those great hallway conversations with them like, I didn't even know I could do that.
32
00:06:20,000 --> 00:06:31,000
So great to learn that's fun, you know, so I love that too. I do a lot of the community work has that same feel, I'm commenting PMP JS and H2O.
33
00:06:31,000 --> 00:06:58,000
PMP JS is probably fairly well known throughout the world. It's in a fluent API for accessing the, the share point and Microsoft graph rest API's, but it could be used against any API service that you want to you can create your own little version of it and use it against any API service you want to I'm actually doing it right now I've built an API for a customer that I'm working on.
34
00:06:58,000 --> 00:07:17,000
I have a very large API surface for them. So I'm building a custom like little version of PMP JS to access those APIs that gives me a programming, a fluent programming space over the top of it handles all that tricky stuff that can be a boilerplate code that you don't want to repeat over and over.
35
00:07:17,000 --> 00:07:34,000
So that's when PMP JS is and so that's helpful to, you know, 38 billion requests per month. We handle through that library and around 30,000 tenants, you use it on a monthly basis. So it's a fairly widely used piece of software.
36
00:07:34,000 --> 00:07:46,000
And then H2O is the other one I work on with stuff and power. That one's super fun because that is a pure HTML and CSS implementation of Microsoft's fluent design.
37
00:07:46,000 --> 00:07:58,000
So Microsoft has their fluent design language and they have, you know, great documentation on it. Unfortunately, their reacts component implementation has been
38
00:07:58,000 --> 00:08:12,000
challenging certainly challenging in the sense that they tend to really break things when they go from major version to major version. I mean, that is the definition of a major version, but when you have to refactor your entire project to go up a major version.
39
00:08:12,000 --> 00:08:30,000
And then you lose components that you had before or whatever because they decided to start from scratch again. It becomes super challenging to build good user experiences to extend Microsoft 65 when that, you know, when that component library for the design is is constantly, you know, falling out from under you.
40
00:08:30,000 --> 00:08:51,000
So Stefan and I built one on pure HTML and CSS and then I built a react component library on top of what he did. So we have that as an open source solution. And I, you know, I use it all the time. So it's a big part of my day. And if I can meet somebody else's job easier because I we've open sourced it all the better.
41
00:08:51,000 --> 00:09:08,000
Yeah, I think a lot of you people use Microsoft products like I don't know SharePoint teams, Excel. Yeah. But, but what do those extensibility mean Microsoft 365 extensibility today.
42
00:09:08,000 --> 00:09:30,000
I think it what it really means in general is how you can extend the user experience or the interoperability of the Microsoft 365 platform. So I don't know how much I still agree with this. But certainly in the SharePoint when, when SharePoint first went to the cloud to Microsoft 365.
43
00:09:30,000 --> 00:09:44,000
A lot of people would say, oh, Microsoft 365 isn't software as a service is almost platform as a service. It's sort of bridged the gap between being software as a service and platform as a service because it was so extendable.
44
00:09:44,000 --> 00:10:05,000
You know, you could change things to meet your needs, you know, certainly can use it out of the box. But as soon as you hit of a boundary in what you could do without the box, well, it was okay to just pivot. And there was supported ways for you to extend the platform to be able to build what you need bespoke to you.
45
00:10:05,000 --> 00:10:29,000
And I mean, that's certainly still true today. It's changing as, you know, AI becomes part of the conversation or whatever. But still today, that's the goal. That's the end game, right? That's the, you can build out your information architecture, your, your, your, your content design, what content you need to store in the SharePoint ecosystem.
46
00:10:29,000 --> 00:10:46,000
You can build out how the user interacts with conversations and documents and whatever, you know, all those things with, and, and then any other tool you want to bring into the team's user interface certainly.
47
00:10:46,000 --> 00:11:13,000
You have the planner and you have the outlook and you have all these tools, you know, whatever Yamers being called today, all of these tools as part of the Microsoft 365 ecosystem that you can kind of bring together and make what you need them to be for your organization, take what you need, leave what you don't need and change what's not working. Right. And, and so I think with good vision, good structure, good governance.
48
00:11:13,000 --> 00:11:25,000
You can really make the Microsoft 365 platform, whatever you need it to be. And so having that extensibility points. So in, in SharePoint, that's going to be the SharePoint framework.
49
00:11:25,000 --> 00:11:51,000
But that also bleeds over into teams. And so teams also supports their own extensibility model, but you can use the SharePoint framework to extend teams and SharePoint. And the, the browser based Microsoft 365 landing space all with SharePoint framework. And that's basically platform hosted extensibility solutions, client side extensibility solutions that are platform hosted.
50
00:11:51,000 --> 00:12:20,000
And so, the team also has an extensibility platform and that sort of extended out from teams into Microsoft 365 extensibility. And that idea is that you can extend the teams UI using your own hosted solutions. So this is a model where you host the solution and you just essentially in the long as short of it is you're going to high frame your solutions inside of the teams UI or into the Microsoft 365.
51
00:12:20,000 --> 00:12:47,000
And so, it's also starting to mean your co pilot extensibility, making declarative agents, making custom engine agents and being able to surface the chat solutions, chat bots, those types of things all being able to extend the Microsoft 365 ecosystem with various ways depending on your needs. And again, that's what it's all about.
52
00:12:47,000 --> 00:13:16,000
So, the way it's all about the ways to extend depends on what your needs are, what your investment is, you know, and I'm not even mentioning power platform that's certainly a way to extend the Microsoft 365 ecosystem. I think it's it's oversold, but it does have a place right so if you are an organization who like uses dynamics and you have full dynamics licensing, then the power platform is probably well licensed for you.
53
00:13:16,000 --> 00:13:41,000
And some of the really interesting and cool extensibility models without, you know, because you're already paying the licensing fees to do that where I don't think that works as well is when you are not invested in dynamics and you're looking at, oh, well, I have all my Microsoft 365 licenses and now I would have to add these, you know, power platform licenses on top of it when you can build the same thing.
54
00:13:41,000 --> 00:13:55,000
And then you can build a custom and not pay that extra licensing so you know it's a trade off there's a lot of pros and cons I think one of the cons for power platform on the Microsoft 365 side is that it is really meant to be one off solutions.
55
00:13:55,000 --> 00:14:15,000
So that doesn't lend itself well to a repeatable model and by that I mean like if you have let's say you have project based organization where you do project work and so you're spinning up sharepoint sites or Microsoft teams to handle your project.
56
00:14:15,000 --> 00:14:36,000
And you want to have the same extensibility in every single project that you spin up the power platform doesn't lend itself to that well because the connections that it makes are very deterministic right it's like I'm connecting to this list or this library or this team or this chat or whatever it is and it's very specific.
57
00:14:36,000 --> 00:14:59,000
And so to like duplicate that means that you're duplicating the power platform object that you created and therefore by fricating your code and there's ways to get around it and things that you can do but it's jumping through a lot of hoops that don't necessarily make sense so it's again it's not that one's right or wrong it's just picking the right tool for the extensively project that you're trying to build.
58
00:14:59,000 --> 00:15:25,000
I think an extensibility I know a lot of companies they use I don't know standard software and they are updated so much that it feels like a completely new software and it's no longer maintainability and you cannot longer updated on the normal way is there also a risk there when you customize your.
59
00:15:25,000 --> 00:15:49,000
I don't feel like there is as long as you're following the guidance right like as long as you're using the tools in the manner that they've been designed for I don't see that as being an issue like they have we have contracts with Microsoft about where we can extend and how we can extend it and as long as we're staying true to those contracts then.
60
00:15:49,000 --> 00:16:17,000
A we're honoring we're doing the right thing for our organizations but B we have an argument to me that if something breaks Microsoft had a contract with us and they need to fix it if they if it's broken on their end and so I think because of that you know because you're doing that you're you're safe right where you're not safe is something I you know what we used to do all the time was share point classic or on prem.
61
00:16:17,000 --> 00:16:46,000
Well we used to build weight in the way back machine we used to build farm solutions and then we build sandbox you know type solutions and those were things pieces of code that we were actually putting inside of the well the gal but we were essentially putting pieces of code inside of the server itself and obviously that doesn't lend itself to online version but we were we sort of made this transition where we're like oh well let's do client size.
62
00:16:46,000 --> 00:17:12,000
You client side solutions and put them in script editor content editor web parts and essentially what that ends up being it wasn't a contract right I mean it was in that Microsoft provided us those web parts to do the things but what we were doing with them was basically what I jokingly call dancing on the DOM which is to say we were manipulating the user interface dynamically on page load.
63
00:17:12,000 --> 00:17:41,000
And or doing things that were changing the user experience with our code as the page loads and thereby if the page that was loading changed the code that we were writing on top of it didn't necessarily do the right thing anymore and I think that had to be a broken it had to be broken right like we can't do that anymore we can't add code into share point online teams online any of those products online.
64
00:17:41,000 --> 00:18:10,000
And manipulate the user interface directly because that creates that fragile you know thing that is not a contract with Microsoft about what you're doing now there are subtle ways you can still do some things if you need to but it's better to take the approach of Microsoft has given me this place that I can extend the UI this is my div this I can work inside of this but I don't try to make it work.
65
00:18:10,000 --> 00:18:21,000
But I don't try to manipulate anything that share point has on the page unless there's a setting inside of Microsoft 365 that allows me to do that you know share point teams whatever it is.
66
00:18:21,000 --> 00:18:33,000
Yeah yeah yeah report it's it's a good topic so the SPFA X has become the the stand out for share point mode one one excites you most about SPFA X.
67
00:18:33,000 --> 00:19:02,000
I think it's the the ease by which I can extend the platform right so I can build a share point framework solution I can package it up I can put it in 10 and app catalog and I don't have to worry about maintaining a set of server infrastructure or whatever to host that solution so that's that provided host provider hosted solution that Microsoft is giving you essentially under the covers what's happening is there's a special.
68
00:19:02,000 --> 00:19:31,000
site collection in share point called the ten and app catalog and it has some superpowers and one of its superpowers is that it puts the manifest and the JavaScript bundle that was created in your share point framework solution inside of that site collection and then serves it up to whatever page is requesting it and so they built the infrastructure for supporting saving though the manifest in the in the JavaScript making sure it's available to the page.
69
00:19:31,000 --> 00:19:51,000
It's available to the pages that it needs to be on based on whatever type of extensibility is be a web part an application customizer field customizer custom form now a copilot app you know the lots of things that we have the ability to do with the share point framework solutions to extend the UI.
70
00:19:51,000 --> 00:20:20,000
And so it manages that for you and you don't have to manage the infrastructure for it whereas if you do the team solution which is just as valuable and valid it just depends is this the road you want to go down if you are wanting to surface a bit of code in a lot of different places and not just the Microsoft 365 space then maybe you want to build a solution that is a fully custom react app i'm just using that as an example since it lends itself to the.
71
00:20:20,000 --> 00:20:49,000
Framework but maybe want to build a custom react app that does whatever it does and you're going to host that in Azure or AWS or wherever you're going to host it and then you want to just surface that within teams or share point or whatever it is and then you can just use a manifest to say hey this solution that's hosted here I would like to serve up in this diff right here's my div I want that to render here.
72
00:20:49,000 --> 00:21:07,000
And so that's an option for you but for for the share point framework the power is in that provider hosted in that you don't have to worry about it once you deploy it that's you know it's going to for the most part it's going to just run and if there's a problem again this is a support situation not a you have to just go figure it out.
73
00:21:07,000 --> 00:21:20,000
Yeah for someone I never used to I'm a more on to a part but when I will start tomorrow with us be a fix what where I should start.
74
00:21:20,000 --> 00:21:36,000
You they have some a lot of good getting started content and so that's on we can share some links if you if you want to there's some learn documentation on getting started with the share point framework actually my friend and colleague Andrew column wrote a lot of that document.
75
00:21:36,000 --> 00:21:54,000
For Microsoft he had that he no longer has but he had for a long time a company called Vuittonus that he he shared getting started with share point framework content he has since moved on and he's not doing that anymore.
76
00:21:54,000 --> 00:22:23,000
But the content that is available on Microsoft learn is written by him and so it's a great way to get started with the share point framework there's a lot of demos and examples in there that gets a person started on top of that we sort of mentioned it when I introduced myself but on top of that we have the pmp and so i'm using that term pmp stands for patterns and practices we used to call ourselves i've been part of it since 2019 so it's been a long time.
77
00:22:23,000 --> 00:22:42,000
We used to call ourselves the Microsoft 365 patterns and practices team a lot of us old time or still use that because the new name is a lot longer and a lot harder to say and I don't know if I can remember to fub my ad but it's like Microsoft 365 and power platform community I believe.
78
00:22:42,000 --> 00:23:10,000
And so we wanted to be more inclusive so patterns and practices people were confused what does that mean and so we sort of changed the name to be more inclusive it's not just for developers but it has so much content you know we have biweekly calls on the share point framework people do demos on those calls you know getting started stuff we have reference samples just thousands and thousands of samples made by the community and then.
79
00:23:10,000 --> 00:23:34,000
So tens of reference samples that you can use as a way to like you know figure out how to do something many of those reference samples are things that I've created as part of working with with Microsoft and in the patterns and practices team so you know there's a lot of content out there to get people started a lot of you know and that learn stuff for free is a great way to get started.
80
00:23:34,000 --> 00:23:49,000
Awesome I think when we talk about PNP we also have to talk about the Microsoft graph API I think Microsoft has become the gateway into Microsoft 365 how have the change development.
81
00:23:49,000 --> 00:24:00,000
Yeah so this is an interesting conversation so at the beginning of time there was the share point rest API's and so are.
82
00:24:00,000 --> 00:24:29,000
It's far as restful inputs before that when we were on prem we had the client service object model and the server object model so those were more you know dot net based solutions that we could you you know a st case that we could use to build our solution so we had those object models and then we got a restful version of those in the 2013 2016 range we got the the client.
83
00:24:29,000 --> 00:24:57,000
A restful version of those we had soap services before then we got restful services so those existed and then we got to online and I think what they quickly real that Microsoft quickly realized is that they needed to have a better way to get to all of the services inside of Microsoft 365 and so each of those individual teams that were managing product.
84
00:24:57,000 --> 00:25:22,000
Contributed their rest end points to the Microsoft graph and so the Microsoft graph was born out of all of those separate teams contributing end points the problem with that was that the teams had to build their rebuild or expose their own end points that they had for their product inside of the graph and that became a sort of.
85
00:25:22,000 --> 00:25:47,000
Job that nobody wanted to get done and so what you see is that the share point rest end points are almost completely fully functional across like the entire share point platform but even those rest end points aren't fully developed there are still some things that you can't do inside of share point without falling back on soap services or even see some services so.
86
00:25:47,000 --> 00:26:16,000
It's a situation right where you had a fully functioning see some library that covered everything that was inside of Microsoft or a share point excuse me then you had the rest end points that did like let's say 98% of it and then you had the graph end points which do maybe 60 70% of it and that's sort of still the story today so we are in this sort of.
87
00:26:16,000 --> 00:26:37,000
Issue where we want to use the Microsoft graph but keep in mind it's an abstraction layer over the share point rest API's or over the exchange API's or over the teams you know some of these teams like so teams is a good example of this teams the product came up when graph existed so you see.
88
00:26:37,000 --> 00:26:59,000
You don't have a teams API in and of itself you only have teams rest end points exposed on the graph so they're pretty much fully functional right it's fully covers everything that's in the product it's the older products like exchange and share point and there's in yammer was one of those I still can't remember.
89
00:26:59,000 --> 00:27:19,000
I just never can remember the engagement I think thank you thank you that's it I can never I can never remember it's almost a running joke at this point so you would so you just don't have full fidelity is essentially what i'm trying to say in the Microsoft graph but it is still.
90
00:27:19,000 --> 00:27:35,000
You know one token and you can essentially access whatever scopes you've been granted for that token to get to whatever product in the Microsoft 365 environment you want to get to this does not mean that things are still being added to the graph they certainly are.
91
00:27:35,000 --> 00:28:01,000
It's just not full fidelity yet and so there are cases where you have to fall back on the share point rest API's I will say as somebody does this day in and day out the graph end points for some of those share point end points are obviously if you think about the architecture slightly slower and so sometimes that's a situation you don't want to have to deal with depending on what you're trying to do.
92
00:28:01,000 --> 00:28:26,000
So you know you have to be thoughtful and and sort of decide depending on what you're doing I mean maybe it's not something that's so intensive that it matters but maybe it is and so you know you have to constantly make those trade offs to decide whether you're going to use the Microsoft graph where you're going to use share point rest point end points if you're trying to get access to stuff in share point but for like like I said if it's teams or whatever.
93
00:28:26,000 --> 00:28:48,000
Those are the API's those are the ones you're going to but their first party they were written at the time the product was created and you get better results plan are same same same same you get better results because the graph is the fully functioning API surface for the that product so it depends how old the product is instead of the pen which thing is good and graph and which one is it is not.
94
00:28:48,000 --> 00:28:55,000
What what graph capabilities do you think is of far more attention.
95
00:28:55,000 --> 00:29:01,000
Needs far more attention you mean yeah.
96
00:29:01,000 --> 00:29:20,000
Yeah is that deserves more attention well that's a good question I think we need the finish the implementation of all the end points from share point into graph I mean I think that would go a long long way.
97
00:29:20,000 --> 00:29:43,000
There are some things now for share point that are in the graph that aren't actually available via share point so that's been kind of a thing a good example of that is for those who use the taxonomy also called managed metadata in share point it's a way to create a sort of global taxonomy for your information architecture.
98
00:29:43,000 --> 00:30:12,000
If you're using those the way that we did that when we were in share point had more fidelity than they do in the Microsoft graph as an example you can get to sort of the same things which you don't have you have to traverse it in a much different way and some of the update methods weren't available but now they're kind of coming so you know you you get that you know you you're trading off there right some other things like.
99
00:30:12,000 --> 00:30:41,000
The new so the content type hub is a part of share point as an example and the way we used to do it was that it was a push model excuse me and now it's a push model and they did add some end points into the Microsoft graph that manage that much better and so if you're still using the old share point end points for the content type of you really need to re look at that because there is ways to likes to add content types to
100
00:30:41,000 --> 00:30:54,000
share pointless and libraries and manage your content types from the hub in a better way in the graph has those correct end points so you know this is where you have to know that the nuance is important.
101
00:30:54,000 --> 00:31:12,000
Yeah there's I think a lot of big companies they sell graph PMP solutions and one of their most I think or one of their yeah
102
00:31:12,000 --> 00:31:34,000
Agaments to say oh why you need us it's in the graph appy the out of the defecation and permissions are not so so well how do you approach this enterprise solutions.
103
00:31:34,000 --> 00:31:44,000
So I'm following the question that the yeah a lot of I hear often the security and graph API is very well.
104
00:31:44,000 --> 00:32:03,000
Oh I'm following you now sorry okay so you're talking about like scopes okay so this is a situation actually that is getting significantly better and and recently getting significantly better so what you're I think referencing is that in share point we had some scopes that were really really broad essentially you would be able to say
105
00:32:03,000 --> 00:32:28,000
for app permissions which is so for your listeners they don't know there's two types of permissions there's delegated permissions and then there's app permissions delegated permissions are what a user can use to get a token to act to have that token act on behalf of them so whatever permissions they have the token will be able to do those things for them assuming that they got a scope for
106
00:32:28,000 --> 00:32:57,000
where the app permissions are I'm saying this application can act on these scopes and so where where the problem sort of starts is not really in the delegated permissions but in the app permissions and so people would be like oh I would like to create sites I want to have this solution that create sites and one of the things that we had an issue with is the only way you could do that was to give the app that was going to do that work to get the token to do that
107
00:32:57,000 --> 00:33:25,000
work to get the token to do that work full access to share point pretty much like almost the share point admin essentially was the level of of scope that that token would have and so you know a bad actor could take that token and essentially do malicious things with it because they had it's had so much power within that token for something that you only wanted to be able to have create sites
108
00:33:25,000 --> 00:33:49,000
and we're getting more and more scope of scope permissions that are more granular so that you can be more specific so sites selected is one of those so now we're able to say this app has sites selected and then you can give it a list of sites that you want it to have access to so you can really scope it down from that perspective
109
00:33:49,000 --> 00:34:11,000
getting a create site endpoint so it's a scope that allows you to say this user can only create a site they can't actually manage sites so that you know that scope was super helpful that one's out in beta I don't think it's GA but but again it's it's happening right we're starting to see this and now we have some new scopes as well
110
00:34:11,000 --> 00:34:40,000
where we can scope to a list and or even an item and so that allows us to give those apps very very granular permissions into our share point environments to say I only wanted to have access to this one list and this one site and maybe even this one item and so that can be super helpful when you're trying to secure your apps to make them more specific and more granular to what you need I think that's where you were going with that.
111
00:34:40,000 --> 00:34:57,000
Yeah awesome so yeah I will also take the chance when I have some other words like comment maintainer so what what problem was PNP just just all generally created to solve.
112
00:34:57,000 --> 00:35:26,000
Oh yeah so well it's problem is maybe a strong word it's more that it was created to streamline boilerplate code that you would have to write over and over again before I started using PNP just I had my own you know typescript slash JavaScript file full of little helper functions helper methods that would handle making those rest calls because if you're making the rest calls you're essentially in today's language you're going to make a fetch call you're going to add the message.
113
00:35:26,000 --> 00:35:54,000
You're going to add the method to it you're going to add the payload to it if it's if it's a put or a post or a patch you know so you're going to add the payload to it you also have to add that content types the you know any authentication header so you have to go get your token you have to maintain that token you have to maintain its expiration you have to ask also then in create helper methods to.
114
00:35:54,000 --> 00:36:21,000
Manage the the responses right so if you get a 500 that's fine but if you get a 429 that means you're being throttled you need to manage the header that comes back to say you know wait this amount of time and retry you know all of that you need to manage you have to have boilerplate code to manage that you also need to parse all the responses so when the response comes back you need to parse that into Jason.
115
00:36:21,000 --> 00:36:50,000
You need to turn it back to the user etc so you need all of this helper content and it's it's not simple to write and then on top of it you have to build the URLs now when it's a straightforward URL like get me this list that you are well is pretty straightforward it's not that hard to build but once you start to want very specific things and this goes for the graph as well as share point you need to be able to do like
116
00:36:50,000 --> 00:37:19,000
here's my URL for the list I want but I only want to select these five fields and then I want to you know have or if I let's say I'm going to get a list of items I would like the top 50 items I want these five fields I'd like to order it in this way I'd like to filter by this filter that can be complex you know so all of that becomes burdensome for the user writing it and so essentially what pmp just does is it helps you
117
00:37:19,000 --> 00:37:40,000
helps you put that URL together and it includes all the boilerplate code that you need to handle you know retry logic and handle errors and parse Jason and parse text and parse blobs and you know all the things to handle all the rest and points for the Microsoft
118
00:37:40,000 --> 00:38:02,000
share point anyway we have full coverage of all the share point and points and for the Microsoft graph pmpgs has you know I would say maybe 50 60% of the coverage the beauty of it though is whatever we don't have coverage it's a very straightforward thing to make a call to something else so there's these methods built in allow you to take
119
00:38:02,000 --> 00:38:18,000
how far you can get as far as what we've implemented and then just say and add create to the end of this or add whatever that URL is to the end of it to to make a call to something that we're not supporting currently and I do that regularly and as soon as I find one that I'm like oh I need this
120
00:38:18,000 --> 00:38:40,000
and we don't have it in our library yet I not only just do it that way in my library but I then go back over to pmpgs and add it in because I found it and I can add it in and that's one of the beauty of open source software right anybody can contribute to pmpgs and we certainly encourage it and so if you're using the library and you find an end point that we're not supporting
121
00:38:40,000 --> 00:38:50,000
fairly trivial thing to go in and add it and do a PR and and send it over so that we can add it to the library so other people can benefit from having it implemented.
122
00:38:50,000 --> 00:39:02,000
What would you say we're no in recycled version 4 for the border pmpgs?
123
00:39:02,000 --> 00:39:14,000
Yeah we're in release 4 and we are considering that incredibly stable version there is not much we need to change in it at all we are working on a version 5 but it is more
124
00:39:14,000 --> 00:39:30,000
it's a maintainer build we want to call it it's going to be a major version because we are going to deprecate a few things that have been deprecated like officially remove them we've deprecated them in v4 you know mark them is deprecated but we haven't cleaned it up there's some clean up stuff to do.
125
00:39:30,000 --> 00:39:38,000
And with SharePoint framework we the pmpgs and SharePoint framework work hand at hand as does.
126
00:39:38,000 --> 00:39:53,000
You know with the graph right so the a lot of people who build SharePoint framework solutions use the pmpgs to do their restful calls because it just cleans it up makes it easier and simpler.
127
00:39:53,000 --> 00:40:21,000
And so you know there's some things that have happened with the SharePoint framework in the newer releases the one to twenty one one to twenty two one twenty three releases that make us want to now upgrade some of our dependencies so there's a lot of that kind of stuff just dependencies updating our ES lens updating our mocha packages that we're using so there's some internal we want to upgrade that would require a major
128
00:40:21,000 --> 00:40:46,000
revision of that and just some deprecations and just adding some stuff so we've been doing some refactoring adding some more endpoints that we see have been added to the graph that we think would be useful for more people and so we'll be adding those but we are not on a tight timeline we're we're doing it as we can because like I said before is so stable you can get to any end point you want and we are updating before and keeping it maintained while we are working on these
129
00:40:46,000 --> 00:41:07,000
and how do you balance adding new features while keeping the API clean I think that's yeah yeah we we have a little bit of semantic versioning unlike some Microsoft graph which doesn't version at all in my it's just painful
130
00:41:07,000 --> 00:41:28,000
we lean heavily into semantic versioning so the way we handle that is if it's going to be a breaking change we don't do it in a major version essentially we only fix bugs and we could add but we don't remove so if we want to remove we mark something is deprecated and then in the next major version we would remove it
131
00:41:28,000 --> 00:41:52,000
you know with notes etc in our change logs and all of that but in general we manage very strongly for semantic versioning so you might see the mendiditions in a major version but they would be patched as a minor version and then we have patches obviously for bugs when something went horribly wrong you know it's happened a few times so you know we'll make those patches
132
00:41:52,000 --> 00:42:13,000
yeah I think maintaining open source projects it sounds rewarding but a lot of people actually from the open source community say they're it's dying because it's too much work actually and it's coming too much new stuff what did you think about the open source community
133
00:42:13,000 --> 00:42:34,000
I know I think the open source community is thriving still in my opinion I mean I I think what's a little bit what's happening is that a lot of people are leaning heavily into using a item right code and if you're using a item right code and you're not
134
00:42:34,000 --> 00:43:03,000
not architecting that code yourself then maybe you have less need for open source projects because AI is not going to know they exist or is going to rewrite boilerplate code for you or whatever it might be and that's fine I think craft is still important and I lean heavily in the craft and I posted it on LinkedIn I love writing code I don't want to give up writing code to
135
00:43:03,000 --> 00:43:31,000
AI does not mean I don't use AI I absolutely have you know I've started and I would say monthly I've increased my usage of AI in my coding world but it's not it's not to replace my own brain it is to augment what I already know how to do it's to enhance my own learning of things when I encounter something new
136
00:43:31,000 --> 00:43:53,000
I use AI to help me explore that new thing I use AI to help be like my rubber duck program if you've ever heard that term it's a little school but the idea of somebody to talk to even if it's sort of talking to yourself but in this case AI is literally talking to another
137
00:43:53,000 --> 00:44:22,000
I just thought that challenges can challenge your thinking if you prompt it properly right and so I use in those ways I use it to I also use it to sort of check my work right like doesn't mean I have to listen to it but I can say hey you know in short hand hey go look at this I think it's ready for production what do you say kind of saying and that having that AI challenge me means I at least look at everything it says right whether I agree or disagree at least I've looked
138
00:44:22,000 --> 00:44:51,000
at it and it finds things right not always but sometimes you know a lot of times it'll find things like whoo good catch I I missed that you know or it'll find things I'm like oh my god you're on crack that's not even wrong you don't know what you're talking about kind of thing so there's both but at least I looked at it right and I think that kind of thing is important but if you're outsourcing your entire brain to AI then yeah I think it's probably not going to use open solutions as much as you know we have
139
00:44:51,000 --> 00:44:59,000
but that's my take at the moment I'm old though so maybe the young people will be like yeah you're just an old grouchy person
140
00:44:59,000 --> 00:45:10,000
I know I give you a new job you're you're now a market here what's the one feature in PMPJs you wish every developer shows me that's exist
141
00:45:10,000 --> 00:45:25,000
that's exist that you get the the extensibility piece right so the the yes you can call all the SharePoint endpoints we support all the graph ones we already support but if we don't have it document it doesn't mean you can't do it and we have
142
00:45:25,000 --> 00:45:39,000
documentation on how to do it and it's very straightforward you can extend very easily to call other endpoints and you should and not only that you can create your own packages so if you're in an
143
00:45:39,000 --> 00:45:56,000
organization where you've built an API for your own internal use and you have a lot of developers working on that go ahead and build a version of PMPJs that's for your custom endpoint and that will make the rest of the users the
144
00:45:56,000 --> 00:46:11,000
developers of your API endpoint more productive because they won't make any mistakes right because you can you can you can point them down the path that they can go with the with the endpoint and what things they can call and how they can
145
00:46:11,000 --> 00:46:23,000
call them so that's another just good thing to know yeah the second project you contribute is the HTO and we talk about this it's a topic user experience
146
00:46:23,000 --> 00:46:38,000
yes why is good user experience still underestimated and enterprise applications perspective oh gosh that's yeah that goes back to well I have a couple colleagues who do a lot with Nielsen Norman you know and they
147
00:46:38,000 --> 00:46:50,000
would be able to tell you all the reasons why user experience and usability is super important it's not my specialty so I won't try to quote it other than to say that if your
148
00:46:50,000 --> 00:47:11,000
users can't easily and successfully use the user in our face no matter what it's for to get their job done you've created the level of friction that is hurting productivity significantly right and so you know we all at this point even my 89
149
00:47:11,000 --> 00:47:26,000
year old father use you access every day on our phones on our computers whatever it is and when something doesn't work right or isn't intuitive to use we get pre frustrated pre quickly and here
150
00:47:26,000 --> 00:47:50,000
and so I think that goes for with double for the enterprise right we need to be able to give user experiences to our users that allow them to get their job done intuitively quickly so that they can move on to the next thing to do if your user experience is crap people will not know how to use it they will avoid using it try to go around using it
151
00:47:50,000 --> 00:48:12,000
whatever they need to do to get you know around you doing the thing that you want that them to do with your software right and so usability is huge making it responsive meaning it you know bullet proof obvious all of those things is critical to having a good and solution right
152
00:48:12,000 --> 00:48:40,000
that's my view what's up to separates an application as a user have to use and one that they really enjoy using the I think the ease with which they can do the thing they need to do here's an example right we're building I'm building a time card solution for a customer
153
00:48:40,000 --> 00:49:08,000
and their workforce is entirely mobile so you know this is in their construction people right so they're you know men and women who are you know out in the field have various levels of internet access depending on where they are because they're building you know they're doing they're doing excavation and stuff like that so this is not like you know finish work or whatever they're they're in a spot
154
00:49:08,000 --> 00:49:24,000
without any infrastructure around them and you know they're wearing gloves and they're you know doing all these things and when you want them to act with your app you need to make it so freaking simple that they can just get it done they don't have to even think about it that makes their life easier
155
00:49:24,000 --> 00:49:36,000
so making the user interface in on their mobile app to check in for the day button this friggin big you know what I mean like nobody can say you know like almost the size of the screen
156
00:49:36,000 --> 00:49:51,000
like that you're done and that's it you're done and I don't have to worry you know if I've architected it right from the coding side I've saved that check into index db to save it locally and I think it you know asynchronous
157
00:49:51,000 --> 00:50:04,000
lead back to the cloud all of those things so they don't have they just click the button they don't have to worry about right that's what you you want the lead amount of friction between the user what they need to get done and getting it done
158
00:50:04,000 --> 00:50:18,000
and so it's thinking through that we have another app for them that's for an equipment checklist all every time they use a piece of equipment on a day once a day they have to every new piece equipment they have to do a checklist that is friggin painful
159
00:50:18,000 --> 00:50:28,000
we need to make that like the simplest thing so big yes no buttons for every question here's the question is it okay or not okay thumbs up thumbs down
160
00:50:28,000 --> 00:50:49,000
I'm done right not little drop down buttons or you know whatever you got to type something nobody wants to date do data entry on a mobile phone with a set of gloves on right like that's not so you have to you have to think about your audience and who you're building for and streamline right yeah
161
00:50:49,000 --> 00:51:14,000
let's also has or how has co pilot change your way to work especially when you code when I code yeah I think I sort of said this I use it as a I don't use co pilot I admit I use co pilot for inside of our Microsoft 365 tenant inside of like SharePoint or teams or whatever
162
00:51:14,000 --> 00:51:43,000
so if I am writing a statement of work for a customer I might have it give me some bullet points from the calls that we had from transcripts to help me write a statement of work I use co pilot for that I like to stay within the data boundary that co pilot gives me I think it's a misunderstanding for a lot of people who buy external AI solutions that they take their content from inside of Microsoft 365 and ship it out to an external source
163
00:51:43,000 --> 00:52:12,000
that that seems crazy to me I mean I don't have any metrics on what might be happening to your data but why would you want to take your data outside of the security boundary of Microsoft 365 and send it to some third party person who may or may not be doing whatever they might be doing with it right like we don't know what they say and what they do as we've learned over time is not necessarily the same right so I think co pilot's mean
164
00:52:12,000 --> 00:52:27,000
super power is that it acts within the security boundary of your Microsoft 365 tenant and I think more lay people need to understand that and I've had this conversation literally had this conversation
165
00:52:27,000 --> 00:52:55,000
about late last week with one of my customers who finally admitted to me that for about a year they've had chat GPT and they're literally downloading proprietary information from their tenant and giving it to chat GP to T to work on it and I'm like dude why didn't you buy just by a co pilot license I don't know is that the same does that work I'm like okay let's level set come back let's figure this out together
166
00:52:55,000 --> 00:53:11,000
for that co pilots the thing I my personal opinion is that claw code is better I've had better lock I've used co get hub co pilot and I've used claw code and I prefer claw code
167
00:53:11,000 --> 00:53:40,000
that's just everybody has their own opinion about it so in my development work I use claw code and again I'm using it more as like a sounding board a check back thing a way to you know think things through but I don't actually have it occasionally I have it like hey I've got this huge json file is not formatted properly please fix it that kind of stuff I do but I don't have it really right code very often it's more like I can't
168
00:53:40,000 --> 00:53:52,000
remember how to do this what was the way to do that and then have it tell me and then go oh right yeah yeah yeah okay let me code that that's just me and maybe it's because I'm old it's just how I prefer to do it so
169
00:53:52,000 --> 00:54:09,000
thank you in the future the low code and the pro code continue merging more together all hmm that's an interesting question I think that the term low code is so freaking nebulous
170
00:54:09,000 --> 00:54:22,000
right the power platform often gets tagged as being low code but man you've got to you got to understand logic you've got to understand some data structures it's not I don't I think it's almost
171
00:54:22,000 --> 00:54:36,000
disingenuous to call things low code if you have a brain of the type of brain not a brain if you have the type of brain who can think logically can think structurally or whatever the tool you're using kind of doesn't matter
172
00:54:36,000 --> 00:55:04,000
I think it's just a what tool you have deeply immersed yourself into deeply understand right like there's a time in my life where I wrote a shite ton of info path now did I put code behind it sure was that you know was I writing C sharp and extending info path beyond its general capability sure but that's no different than using power apps today right it's the same idea
173
00:55:04,000 --> 00:55:29,000
am I a pro dev yes was I using a low code tool sure was I thinking about it or are using it in a more pro code way it using that term yes but doesn't matter right so I think the difference between pro code and low code is not so much the person as just the tool
174
00:55:29,000 --> 00:55:46,000
and so will we have all of those tools always I think so I don't think code is going away anytime soon until we get to like Star Trek when we're going to be talking to the computer or whatever but even in that even in Star Trek they had to figure
175
00:55:46,000 --> 00:56:13,000
out the computer wasn't figuring it all out was just answering questions they still have the logic their way through their problems and I think that's still always going to be a thing you know unless we get into some walletype world right yeah yeah so yeah this was was really cool I have all interviews a rapid fire round so I ask question and you give us an answer so coffee to our energy during the development
176
00:56:13,000 --> 00:56:38,000
and coffee visual studio court or visual studio visual studio code now yeah 100% react is you react because it's SharePoint frameworks default so you don't want to like very specifically SharePoint frameworks built in default is react and react is already on the page in SharePoint
177
00:56:38,000 --> 00:56:48,000
so don't don't go use a separate framework and then try to load that too in the page you're just slowing the page down so react because I build SharePoint framework solutions
178
00:56:48,000 --> 00:56:52,000
tap those spaces
179
00:56:52,000 --> 00:56:55,000
oh
180
00:56:55,000 --> 00:57:08,000
I hit the tap but it only does two spaces I don't know how to answer that question dark more like mode dark oh 100% dark everything is
181
00:57:08,000 --> 00:57:22,000
on the documentation or YouTube oh documentation I can't sit through a video long enough to learn something from it yeah
182
00:57:22,000 --> 00:57:29,000
what's your favorite Microsoft event Microsoft sponsored event
183
00:57:29,000 --> 00:57:50,000
I don't go to them they used to be great they suck now I don't know I don't go I go to the Microsoft 365 community conference but it's a community event that Microsoft heavily sponsors so that one but I don't go to ignite or build I don't even go online anymore
184
00:57:50,000 --> 00:58:07,000
they're they they're deluded so badly neither so when such an adalya came up and say truly you get all the money and resources you need to develop a feature which what will you develop
185
00:58:07,000 --> 00:58:15,000
oh I would make the graph fully functional and I'd start versioning it well that's an easy answer yes
186
00:58:15,000 --> 00:58:24,000
but your full fidelity and it would have versioning and it would make sense in the world and it would have support yeah 100% that's where I am
187
00:58:24,000 --> 00:58:33,000
we get a pages API we get a pages API my friend that would be the next thing says slice bread yes
188
00:58:33,000 --> 00:58:42,000
so yeah well thank you for for your time if listeners remember only one thing from today's conversation what should it be
189
00:58:42,000 --> 00:58:52,000
get started extend Microsoft 365 is a lot of power in that yeah try it
190
00:58:52,000 --> 00:59:03,000
and finally who will you nominate as future guest on the podcast oh stuff in power my right and left hand he's the man the myth the legend if you want to talk about
191
00:59:03,000 --> 00:59:14,000
anything with regards to UX clients server development from that perspective he's just he's master of front end development and UX
192
00:59:14,000 --> 00:59:24,000
so that would be my nomination yeah Julie thank you so much for drawing me today and yeah we could be covered Microsoft 365 extension ability
193
00:59:24,000 --> 00:59:34,000
the SharePoint framework Microsoft graph the pmpjs H2o user experience all the source AI in the future Microsoft development this
194
00:59:34,000 --> 00:59:42,000
conversion was packed with practical insights for for anyone building solutions on Microsoft 365 so yeah thank you
195
00:59:42,000 --> 00:59:51,000
for for staying here with me and spend nearly while I will meet you thank you so much thanks it was great to meet you and great to spend time with you
196
00:59:51,000 --> 00:59:58,000
and enjoyed it a lot yeah thank you bye bye