<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The thoughtstuff Blog</title>
	<atom:link href="https://blog.thoughtstuff.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.thoughtstuff.co.uk</link>
	<description>Teams, Skype, Bots, AI Development  &#124; Tom Morgan</description>
	<lastBuildDate>Thu, 02 Apr 2026 07:46:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>PSA: I&#8217;m handing in my Microsoft MVP badge</title>
		<link>https://blog.thoughtstuff.co.uk/2026/04/psa-im-handing-in-my-microsoft-mvp-badge/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/04/psa-im-handing-in-my-microsoft-mvp-badge/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Thu, 02 Apr 2026 07:46:06 +0000</pubDate>
				<category><![CDATA[Everything Else]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62416</guid>

					<description><![CDATA[After over 10 years in the program, I’m choosing not to renew my Microsoft MVP award this year.&#160; The MVP program has been a huge part of my life and I credit it with having the greatest impact on my career. It opened doors, it enabled conversations, it taught me so much, and it introduced [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>After over 10 years in the program, I’m choosing not to renew my Microsoft MVP award this year.&nbsp;</p>



<p>The MVP program has been a huge part of my life and I credit it with having the greatest impact on my career. It opened doors, it enabled conversations, it taught me so much, and it introduced me to some amazing people. It’s been an absolute blast, and I feel very lucky to have been a part of it.</p>



<p>But 10 years is a long time. Many things have changed and both the MVP program and me are different to what we were a decade ago. That’s not a bad thing or a good thing, but it is a truth.</p>



<p>Over the past 6 months or so, I’ve decided that I need a new challenge. I tend to thrive on the exploration, understanding and application of new ideas, new technologies, new ways of doing things. Sometimes, the comfy chair can become a little too comfy. It’s time for me to throw myself into something I don’t know as well.</p>



<p>I’m staying in the communications world but I’m broadening out from just Microsoft UC. It’s no secret that the company that I work for now &#8211; <a href="https://cloudinteract.io/" target="_blank" rel="noreferrer noopener">CloudInteract</a> &#8211; are an AWS partner. I’ve been spending time understanding their CCaaS platform, <a href="https://aws.amazon.com/connect/" target="_blank" rel="noreferrer noopener">Amazon Connect</a>, and so that’s where you can expect me to be concentrating my efforts moving forward. </p>



<p>I’ll still be blogging and I’ll still be on <a href="http://www.linkedin.com/in/tmorganuk" target="_blank" rel="noreferrer noopener">LinkedIn</a>. My blog has never just been about Microsoft technology &#8211; very long time readers will recall it started off being about <a href="https://blog.thoughtstuff.co.uk/2010/05/auto-building-getting-things-done-with-nant/" target="_blank" rel="noreferrer noopener">nANT</a> and <a href="https://blog.thoughtstuff.co.uk/2010/05/getting-started-with-continuous-integration/" target="_blank" rel="noreferrer noopener">CruiseControl</a> &#8211; instead it tends to follow my interests. All the existing content remains, for free, and will do for as long as I’m in charge of it.</p>



<p>There’s another reason that I feel comfortable making this jump. When I first started blogging and speaking about developing solutions on Microsoft UC (at the time it was Office Communicator, then Microsoft Lync), I was the ONLY developer at a conference of IT Pros. In fact, apart from my manager (shout out to <a href="https://www.chimusoftware.com/" target="_blank" rel="noreferrer noopener">Paul Nearney</a> who got me started on my MVP journey) I only knew of one other person building UC-based solutions &#8211; <a href="http://blog.greenl.ee/about/" target="_blank" rel="noreferrer noopener">Michael Greenlee</a> who had, quite literally, written <a href="https://amzn.to/4bQp6Ly" target="_blank" rel="noreferrer noopener">the book on the subject</a>.</p>



<p>Today, the community is rich with developers, both low and pro code, bringing their talents and experiences to help people build solutions. With such great talent I don’t feel at all bad about stepping away, and it’s a testament to the community that I feel reassured that should I ever decide to return in the future I will find a kind and supportive environment waiting for me. I know this because I’ve seen first hand how the Microsoft 365 MVP community welcomes new members and treats everyone with respect and love. It really is one of the best communities in tech, and I feel very proud that I played my own small part in building that.</p>



<p>There are so many people I would like to say thank you to, and I’ve done my best over the past few weeks to do so in person where I can. I’m resisting trying to make a list, as invariably I will miss someone out. But I do want to reserve a special mention for my wife Emma, for the support you’ve given me over the last 11 years. Being an MVP means yielding to an over-achiever type desire to perform, which takes time away from other things, and I’m very grateful for the countless evenings and weekends you’ve given me as I’ve selfishly chosen to spend time blogging, filming or travelling. I can’t promise it’s going to end, but hey, it might at least be different! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> xx</p>



<p>It’s a classic cliche, often said when changing jobs, but it’s the people that I will miss the most. Realistically, I know that I will probably drift apart from many of you, but there are also some firm friendships that have developed over the years that I hope will continue. You know where I am, I’ll still be on LinkedIn &#8211; if you ever need anything from me, please ask.</p>



<p>I understand if you want to use this announcement as a reason to stop following my content, as it’s clearly going to be less Microsoft-focused going forward. But, if you’re in the UC or CCaaS world, if you’re into technology or are curious, sometimes considering alternative ways of doing things, alternative technologies and approaches, can make you a more rounded individual. The technology world is small and, particularly amongst the big firms, there is a lot of movement of talent. This is just another one of those &#8211; no biggie <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>I’ll be taking a social media break over Easter, and I’ll be back after that with a new focus. It’s a new chapter, and I’m excited. The way that AI is impacting contact centres right now is massive and I have a long list of things I want to talk about!</p>



<p>PS &#8211; I had been thinking about how to structure this post for a few days, and was killing time in an airport lounge procrastinating instead of writing a draft when I read something from <a href="https://www.linkedin.com/in/fabiangwilliams/" target="_blank" rel="noreferrer noopener">Microsoft employee and ex-MVP Fabian Willians</a>, someone that I really respect as a technology visionary, and it really resonated with me in that moment. “<a href="https://www.linkedin.com/posts/fabiangwilliams_linkedin-jesuit-ai-activity-7436137068361216000-yN-R?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAFOHkABTvqxoj5k9Z7KYkQ6tAfSX2eMDHo" target="_blank" rel="noreferrer noopener">Qui non proficit deficit</a>“ &#8211; thanks Fabs, that’s exactly what I needed to hear.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/04/psa-im-handing-in-my-microsoft-mvp-badge/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 16 February 2026 &#8211; Lack of M365 News, Legacy User Settings in SPFx, M365 Copilot License &#038; more</title>
		<link>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-16-february-2026-lack-of-m365-news-legacy-user-settings-in-spfx-m365-copilot-license-more/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-16-february-2026-lack-of-m365-news-legacy-user-settings-in-spfx-m365-copilot-license-more/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 13:09:41 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62368</guid>

					<description><![CDATA[This week: Handling Legacy User Settings in SharePoint Framework M365 Copilot and the case of the broken license Is the craft dead? You can also listen to the audio-only version: Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 16 February 2026. Find all my videos at thoughtstuff.co.uk/videos. You can also subscribe to the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/handling-legacy-user-settings-in-sharepoint-framework?WT.mc_id=M365-MVP-5001530">Handling Legacy User Settings in SharePoint Framework</a></p>



<p><a href="https://www.loryanstrant.com/2026/02/16/m365-copilot-and-the-case-of-the-broken-license?WT.mc_id=M365-MVP-5001530">M365 Copilot and the case of the broken license</a></p>



<p><a href="https://www.hanselman.com/blog/is-the-craft-dead">Is the craft dead?</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Weekly Update 16 February 2026" width="500" height="281" src="https://www.youtube.com/embed/W1xrAmkjT1o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version: <a href="https://thoughtstuff.libsyn.com/weekly-update-16-february-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 16 February 2026</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript <em>(AI-Generated)</em></h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well.</p>



<p>Okay, I take it back what I said a couple of weeks ago about the pace of change of news being back to normal for Microsoft 365. It has been another really quiet week and I think this is interesting &#8211; maybe even a little concerning. There&#8217;s really been very little posted to the usual places: developer blogs and other Microsoft 365 channels.</p>



<p>I don’t really know why this is. I can speculate &#8211; it’s probably a mixture of a few things. One: fewer people may be working at Microsoft now and that’s impacting marketing and developer advocacy. Two: those who remain may be busy working on exciting things, so they don’t have time to post blog updates. Or maybe there&#8217;s just genuinely less happening, possibly due to enhanced focus on Copilot core development, which might mean fewer changes on the extensibility layer &#8211; where I typically focus.</p>



<p>Whatever the reason, there&#8217;s definitely a noticeable change in the level of output. For lots of admins and devs, it may actually be welcome because the pace has been so fast recently.</p>



<p>Even with the slowdown, we&#8217;ve got a couple of things to talk about. Paolo Pialorsi, who I mentioned last week for his SharePoint Framework (SPFx) blog on user settings, has followed up with another one, this time discussing legacy user settings in SPFx. I’m not an expert in this area, but the post is really good. It goes through the legacy application model, the new model, and explains why the change matters. There are clear migration guidelines and well-written content &#8211; including sample code and a detailed table of contents.</p>



<p>To underscore the point about decreased activity, I checked the official Microsoft 365 Developer Blog &#8211; there’s been nothing posted since last week except Paolo’s article. This is unusual; a year ago we would easily have seen multiple posts weekly.</p>



<p>But this slowdown lets us feature other great community content. Loryan Strant, another Microsoft MVP, has a humorous piece titled “Copilot and the Case of the Broken License.” While I usually speak to developers, more developers are now being looked to as AI experts. Loryan&#8217;s post discusses edge cases in license management and Copilot behavior that can impact devs and admins alike. It&#8217;s worth reading simply because he’s already been through the pain and has useful insights to share.</p>



<p>Lastly, I want to highlight a short but potent blog from Scott Hanselman titled “Is the Craft Dead?” It dives into the existential debate about software development in the age of AI. Scott has been in development for over 35 years, and his thoughts are worth considering. His answer: No, development isn&#8217;t dead &#8211; but it&#8217;s also not unaffected.</p>



<p>If you want my opinion: if you’re a developer and haven’t used AI to make your dev work better or faster, that’s probably a missed opportunity. And if you think your job will vanish because AI can code &#8211; that’s not right either. If you don’t believe you bring additional value over what AI can generate, maybe it’s time to improve your skills. Most developers, I think, will find that they can combine their strengths with AI to be even more valuable &#8211; whether that’s enhancing AI-generated solutions, ensuring compliance with internal systems, or simply maintaining and improving codebases headed for production.</p>



<p>There’s more and more code, which means we need more and more people who truly understand it.</p>



<p>That’s it from me this week. Let&#8217;s see what next week brings. Keep an eye on the news cycle &#8211; it could be a temporary lull, or something deeper. I don’t want to overreact or guess at motives. All I can do is point out the change I’ve noticed in publication frequency.</p>



<p>Thanks for watching — have a great week!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-16-february-2026-lack-of-m365-news-legacy-user-settings-in-spfx-m365-copilot-license-more/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 9 February 2026 &#8211; SPFx Update, User Config API, Channel Apps update, Dev Proxy v2.1</title>
		<link>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-9-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-9-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 09 Feb 2026 10:07:56 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[microsoftgraph]]></category>
		<category><![CDATA[MicrosoftTeams]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62361</guid>

					<description><![CDATA[This week: Deprecation notice: Teams Live Events meeting creation via Microsoft Graph Mastering User Settings in SharePoint Framework Navigating Microsoft Teams Docs: A Developer Survival Guide You can also listen to the audio-only podcast: Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 9 February 2026 Find all my videos at thoughtstuff.co.uk/videos. You can [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/deprecation-notice-teams-live-events-meeting-creation-via-microsoft-graph/">Deprecation notice: Teams Live Events meeting creation via Microsoft Graph</a></p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/mastering-user-settings-in-sharepoint-framework/">Mastering User Settings in SharePoint Framework</a></p>



<p><a href="https://www.voitanos.io/blog/microsoft-teams-navigate-developer-docs-survival-guide/">Navigating Microsoft Teams Docs: A Developer Survival Guide</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Weekly Update 9 February 2026 - SPFx Update, User Config API, Channel Apps update, Dev Proxy v2.1" width="500" height="281" src="https://www.youtube.com/embed/qUbSbkBGnqA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only podcast: <a href="https://thoughtstuff.libsyn.com/weekly-update-9-february-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 9 February 2026</a></p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript (AI-Generated)</h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well and had a great week. A couple of things to talk through this time.</p>



<h2 class="wp-block-heading">Microsoft Graph Deprecation: Live Events</h2>



<p>I&#8217;m going to spend some time on this first item. It&#8217;s a deprecation notice about creating Microsoft Teams Live Events meetings via Microsoft Graph. This functionality has been around for a few years — enabling the creation of live meetings through the API. However, it’s changing because Live Events are being retired in favor of virtual events.</p>



<p>Specifically, the <code>isBroadcast</code> property used when creating an online meeting is being deprecated. Going forward, setting this property to true won’t be allowed. Instead, users should look to use webinars or town halls, both of which now have API support.</p>



<p>On the surface, this change seems manageable. But my concern is about the short window in which this update is occurring. Microsoft announced this change via a blog post on February 3rd. The beta endpoint will stop supporting the property at the end of March — which is fair given beta is inherently unstable. But more concerning is that the V1 endpoint will see the same change by the end of June — just five months later, and only three months after the beta cut-off.</p>



<p>This feels very short notice considering v1 APIs are supposed to be stable. There are clauses in the terms that mention a two-year window for changes — something we&#8217;ve not seen honored consistently. While Microsoft likely has the telemetry to understand usage patterns, from a developer perspective, this kind of short-notice change is disruptive, especially when running production services or software that depends on it.</p>



<h2 class="wp-block-heading">Storing User Settings via Microsoft Graph</h2>



<p>On a more positive note, Paolo Pialorsi — an ex-MVP now at Microsoft — has written an excellent blog post on mastering user settings in the SharePoint Framework (SPFX).</p>



<p>He proposes an approach that makes use of Microsoft Graph and OneDrive for Business to persist application-specific settings per user. This was new to me — I would typically have reached for my own data store or a configuration file. But for SPFX or Teams-based solutions, storing this in app-specific folders via Graph is elegant and scalable.</p>



<p>Every user gets an app-specific folder structure as part of their OneDrive, and app developers can use this space to write and retrieve settings. It also ensures per-application isolation, aligns well with Azure AD registered applications, and behaves much like managing settings on local drives.</p>



<p>Paolo&#8217;s post walks through the exact steps to implement this setup, how to handle permissions, and how to structure and retrieve settings. The approach is robust and applicable beyond SPFX — definitely worth a read if you&#8217;re building anything accessing Microsoft Graph.</p>



<h2 class="wp-block-heading">Navigating Teams Documentation: A Developer&#8217;s Survival Guide</h2>



<p>Lastly, a pick that made me smile — Andrew Connell’s blog post titled “Navigating Microsoft Teams Docs: A Developer Survival Guide.”</p>



<p>He discusses the various challenges developers face finding accurate information in Microsoft documentation. While everything is somewhere in the docs — finding it can feel like an archaeological dig. You almost need to know the age of the Teams feature to figure out where to start looking.</p>



<p>He highlights problems like outdated recommendations, overlapping SDKs, and fragmented documentation across platforms — with some hosted on Learn, others as GitHub entries or blog posts.</p>



<p>Andrew lays out the issues clearly and provides useful strategies for navigating the mess. It&#8217;s a good reminder that this struggle is shared and that there are ways to get better at coping with it — trial, error, and experience go a long way in building your own toolkit for success.</p>



<p>That&#8217;s it from me this week. Whatever you&#8217;re working on — have a great week, and I&#8217;ll speak to you again next time.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-9-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 2 February 2026 &#8211; SPFx Update, User Config API, Channel Apps update, Dev Proxy v2.1</title>
		<link>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-2-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-2-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 02 Feb 2026 11:52:58 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[microsoftgraph]]></category>
		<category><![CDATA[MicrosoftTeams]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62347</guid>

					<description><![CDATA[This week: SharePoint Framework (SPFx) roadmap update – January 2026 Introducing the Microsoft Graph User Configuration API (preview) Apps for shared and private channels Dev Proxy v2.1 with configuration hot reload and stdio proxying You can also listen to the audio-only podcast version: Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 2 February [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/sharepoint-framework-spfx-roadmap-update-january-2026?WT.mc_id=M365-MVP-5001530">SharePoint Framework (SPFx) roadmap update – January 2026</a></p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/introducing-the-microsoft-graph-user-configuration-api-preview?WT.mc_id=M365-MVP-5001530">Introducing the Microsoft Graph User Configuration API (preview)</a></p>



<p><a href="https://learn.microsoft.com/en-us/microsoftteams/platform/build-apps-for-shared-private-channels?tabs=tabs%2Cexternal-users%2Csharedchannel&amp;WT.mc_id=M365-MVP-5001530">Apps for shared and private channels</a></p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/dev-proxy-v2-1-with-configuration-hot-reload-and-stdio-proxying?WT.mc_id=M365-MVP-5001530">Dev Proxy v2.1 with configuration hot reload and stdio proxying</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Weekly Update 2 February 2026 - SPFx Update, User Config API, Channel Apps update, Dev Proxy v2.1" width="500" height="281" src="https://www.youtube.com/embed/XZ3kMCjxpQs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only podcast version: <a href="https://thoughtstuff.libsyn.com/weekly-update-2-february-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 2 February 2026</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript (AI-Generated)</h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well. A couple more things to talk about this week.</p>



<p>It might be that the Microsoft engine is finally getting off the ground &#8211; just a slow start. It does seem a bit slower than usual, but we&#8217;re returning to a more normal cadence of posting. It&#8217;s nice to start seeing posts appear consistently in the places you&#8217;d expect them.</p>



<p>First up, on the Microsoft 365 Developer Blog, there&#8217;s an update to the SharePoint Framework (SPFx) courtesy of a blog post from Vesa Juvonen. It’s similar to last month’s update, but focused on January delivery. The standout for me is how the team actually delivered what they said they would. That consistency gives me confidence, not just in the team, but for everyone relying on SPFx. There’s evidence of ongoing investment and momentum behind the technology.</p>



<p>The main point of the January update is the new debug toolbar, which the December roadmap said would be delivered. It’s now part of the January blog post, confirming that work has been completed. The roadmap itself hasn’t significantly changed—so everything seems to be on track.</p>



<p>This kind of transparency isn’t for pointing fingers if delays happen, it’s really about communication. And Microsoft is showing they’re still committed to SPFx and haven&#8217;t moved on from it. The team is clearly funded and supported. Overall, that’s a really positive outcome.</p>



<p>Now, another interesting development &#8211; Microsoft Graph has new beta endpoints for user configuration, specifically focused on Exchange Online items. This effort is clearly part of the transition away from Exchange Web Access (EWA), which has been prolonged. Despite initial plans, Microsoft is now firm about deprecating it, even setting a hard stop date and warning tenants accordingly.</p>



<p>One difficulty with transitioning off EWA was that Graph didn’t previously offer comparable functionality. That gap made it impossible for developers to switch over. These new APIs aim to fix that. The Microsoft Graph userConfiguration API (in beta for now) allows storing configuration data per mail folder, which includes read, write, update, and delete operations.</p>



<p>It’s meant to do what it says: store metadata alongside mailbox context. I haven’t used it yet, but it looks like a straightforward CRUD interface. For those holding off migration due to missing features, this could be the green light you were waiting on. Yes, it&#8217;s in beta, but I expect a speedy general availability (GA) rollout to match the EWA deprecation deadline. If you try it and run into issues—report them. Microsoft wants feedback since this directly affects the deprecation timeline.</p>



<p>Moving on &#8211; another important update in Microsoft Teams: support for apps in shared and private channels. This has long been a pain point. For a while, apps were only supported in public and group scopes, but Microsoft has been closing those feature gaps. As of now, apps in shared channels are GA. Apps in private channels are in public developer preview—a big step forward!</p>



<p>There are still a few gotchas outlined in the updated blog post, so take the time to read through the capability matrix. Pay special attention to any highlighted limitations, especially if you&#8217;re building complex scenarios.</p>



<p>Lastly, Dev Proxy is reaching new heights with version 2.1.0. Quality-of-life improvements like configuration hot reload are great, but the headliner is STDIO proxying—that&#8217;s standard input/output. This means Dev Proxy can be used with MCP servers too, not just web traffic. It greatly expands its usefulness, especially as many developers shift towards MCP-based infrastructure.</p>



<p>The release includes the ability to wrap executables with the proxy and surface traffic in the network tab. You can also run multiple Dev Proxy instances and configure different ports. These updates demonstrate that the Dev Proxy team is being proactive, keeping the tool relevant and highly useful for developers. High marks all around.</p>



<p>That’s all from me this week. Have a great week ahead, and I’ll catch you next time!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/02/weekly-update-2-february-2026-spfx-update-user-config-api-channel-apps-update-dev-proxy-v2-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 26 January 2026 &#8211; Background Responses in Agent Framework, ACS 101, GitHub Copilot SDK</title>
		<link>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-26-january-2026-background-responses-in-agent-framework-acs-101-github-copilot-sdk/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-26-january-2026-background-responses-in-agent-framework-acs-101-github-copilot-sdk/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 26 Jan 2026 12:26:33 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[Copilot]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62339</guid>

					<description><![CDATA[This week: Microsoft Agent Framework: Using Background Responses to Create an AI Researcher and Newsletter Publisher Empowering.Cloud Community Update – January 2026 Build an agent into any app with the GitHub Copilot SDK Announcing winapp, the Windows App Development CLI You can also listen to the audio-only version: Thoughtstuff Podcast &#8211; Tom Morgan on Teams [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://jamiemaguire.net/index.php/2026/01/24/microsoft-agent-framework-using-background-responses-to-create-an-ai-researcher-and-newsletter-publisher">Microsoft Agent Framework: Using Background Responses to Create an AI Researcher and Newsletter Publisher</a></p>



<p><a href="https://techcommunity.microsoft.com/blog/microsoftteamscommunityblog/empowering-cloud-community-update-%E2%80%93-january-2026/4486034">Empowering.Cloud Community Update – January 2026</a></p>



<p><a href="https://github.blog/news-insights/company-news/build-an-agent-into-any-app-with-the-github-copilot-sdk/">Build an agent into any app with the GitHub Copilot SDK</a></p>



<p><a href="https://blogs.windows.com/windowsdeveloper/2026/01/22/announcing-winapp-the-windows-app-development-cli/">Announcing winapp, the Windows App Development CLI</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Weekly Update 26 January 2026 - Background Responses in Agent Framework, ACS 101, GitHub Copilot SDK" width="500" height="281" src="https://www.youtube.com/embed/Z9OdxEYT1nQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version: <a href="https://thoughtstuff.libsyn.com/weekly-update-26-january-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 26 January 2026</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript (AI-Generated)</h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well and had a good week.</p>



<p>A few interesting things to talk through this week. I still think something is going on with the Microsoft 365 developer blog in terms of its cadence. I’ve mentioned this before, and what seemed like a slow post-Christmas period continues. It could be staffing changes, deprioritization, or just a genuine lack of news. Either way, there are still fascinating developments happening elsewhere.</p>



<p>The first is a blog from fellow MVP Jamie Maguire about the Microsoft Agent Framework. He walks through how to use background responses with the framework—essentially letting an agent go off, do some work, and then come back asynchronously. Jamie’s example? Building an AI researcher and newsletter publisher. It’s an excellent application of long-running agent workflows using polling and background execution. He includes the full setup in his blog post, and I’d love to see this content presented at a talk in future.</p>



<p>Next, a quick mention of a video I recorded last year with Sean Keegan, a developer evangelist from Microsoft focusing on Azure Communication Services. We talked about communication APIs, Microsoft Teams integration, and building AI-powered voice solutions. It&#8217;s available now on Empowering.Cloud, and we went deep into helping developers understand the current state and exciting future of AI-first voice interaction.</p>



<p>Another area I&#8217;ve blogged about is the GitHub Copilot CLI. It&#8217;s Copilot for the command line—helping you interact with code without needing to be in a specific IDE. I use it mostly for less critical projects—where I don&#8217;t need to scrutinize every line but still want structure in my development. Even more interesting is the recent SDK release, which lets you bring CLI-level code generation and reasoning into your own apps or workflows. It&#8217;s in technical preview, and there’s a blog post on GitHub detailing how you can start using it.</p>



<p>If you’re already using the CLI manually and find you’re repeating the same workflows, the SDK could be the next step. I think it’s a great move in the space of automating repetitive coding with intelligent agents.</p>



<p>We&#8217;re at an interesting inflection point where AI tools are starting to differentiate by modality. Some tools are becoming better at code, others at images—and we&#8217;re starting to see people settle into stacks and preferences. This is good—it helps establish consistent benchmarks in an otherwise chaotic space.</p>



<p>Lastly, I want to discuss WinApp—a new CLI from the Windows app dev team. While it might not generate sensational news, it’s important. It’s a unified CLI to scaffold, package, and build native Windows applications—whether Electron-based, .NET, Rust, or others. Why is that exciting? Because AI agents work best with CLIs. Imagine using large language models to build Windows apps without needing prior platform knowledge. This CLI could enable that by abstracting away complexity and giving toolchains AI-friendly interfaces.</p>



<p>I’ll be watching to see how this develops, and whether it encourages more app creation for Windows. At the very least, it shows the team is laying smart foundations for AI involvement in app development.</p>



<p>That’s everything from me this week. Aside from the slow Microsoft 365 news cycle, there’s still lots to explore. I’m going to dig through past update notes to see if January is usually this calm. I’ll let you know what I find.</p>



<p>Have a great week whatever you&#8217;re working on, and I’ll talk to you again soon.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-26-january-2026-background-responses-in-agent-framework-acs-101-github-copilot-sdk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 19 January 2026 &#8211; Copilot Memories, VS Code Studio Extension, Open to Work book</title>
		<link>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-19-january-2026-copilot-memories-vs-code-studio-extension-open-to-work-book/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-19-january-2026-copilot-memories-vs-code-studio-extension-open-to-work-book/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 09:26:32 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[Copilot]]></category>
		<category><![CDATA[visualstudio]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62333</guid>

					<description><![CDATA[This week: Copilot Memories Copilot Studio Extension for Visual Studio Code Is Now Generally Available Announcing Open to Work: How to Get Ahead in the Age of AI Microsoft AI Power Days You can also listen to the audio-only version: Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 19 January 2026. Find all [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://devblogs.microsoft.com/visualstudio/copilot-memories/">Copilot Memories</a></p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/copilot-studio-extension-for-visual-studio-code-is-now-generally-available/">Copilot Studio Extension for Visual Studio Code Is Now Generally Available</a></p>



<p><a href="https://blogs.microsoft.com/blog/2026/01/13/announcing-open-to-work-how-to-get-ahead-in-the-age-of-ai/">Announcing Open to Work: How to Get Ahead in the Age of AI</a></p>



<p><a href="https://info.microsoft.com/EM-CAW-CNTNTO-FY26-12Dec-05-Microsoft-AI-Power-Days-SREVM81995_Catalog-Display-Page.html">Microsoft AI Power Days</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Weekly Update 19 January 2026 - Copilot Memories, VS Code Studio Extension, Open to Work book" width="500" height="281" src="https://www.youtube.com/embed/PrfHCRR37NQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version: <a href="https://thoughtstuff.libsyn.com/weekly-update-19-january-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 19 January 2026</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript (AI-Generated)</h2>



<p>Hello and welcome to another weekly update. Oh, there we go. That’s what I meant to do. I hope you&#8217;re well.</p>



<p>It’s been a couple of weeks. We did one last week, but there wasn’t much to talk about. This week, there’s more to cover—though not loads. It’s kind of surprising and not what I expected, but that’s okay. We’ll get through it. There are some interesting developments happening.</p>



<h2 class="wp-block-heading">Copilot Memory in Visual Studio</h2>



<p>The first thing I want to talk about is Copilot Memory, now coming to Visual Studio. This is documented on the Visual Studio blog by Jessie Houghton. It addresses a familiar pain point—constantly re-entering system prompts like coding standards or commit message formats. What you really want is Copilot to remember some of that context.</p>



<p>For example, when we commit to Git, if it&#8217;s tied to a specific bug or task, we start with a code. That helps track changes later—but it’s easy to forget. Copilot now has a memory feature where instructions can be stored in a file called <code>copilot-instructions.mmd</code>. This file can exist at the user profile or the repo level, and Copilot merges it in to remember preferences.</p>



<p>While it&#8217;s not exactly an AI memory in the fullest sense, it’s a powerful extension of prompt augmentation. From enforcing consistent commit messages to defining code generation behaviors and explaining business logic—this feature can be incredibly helpful when used smartly.</p>



<h2 class="wp-block-heading">Copilot Studio in Visual Studio Code</h2>



<p>Another exciting update is a Visual Studio Code extension for working with Copilot Studio. If you&#8217;re a pro-level developer who prefers code to UI, this is for you. It brings a full code-first development experience to Copilot Studio projects, letting you work on topics, workflows, triggers, and agent information—all from within VS Code.</p>



<p>This integration is fantastic because it allows for full Git and GitHub workflow compatibility, including source control, versioning, and builds. Whether you’re productionizing a prototype or extending functionality, it’s now easier to Govern, secure, and audit your AI agents in enterprise settings with Copilot Studio.</p>



<h2 class="wp-block-heading">Book Alert &#8211; Open to Work</h2>



<p>LinkedIn has a new book coming out titled <em>Open to Work</em>, co-authored by CEO Ryan Roslansky and Chief Economic Opportunity Officer Aneesh Raman. It’s about adapting how we work in the age of AI. While it may not deliver groundbreaking new insights, it’s still worthwhile; especially coming from two of LinkedIn’s top executives. It’s available for pre-order now, with a release date of March 31st.</p>



<h2 class="wp-block-heading">Microsoft AI Power Days</h2>



<p>Microsoft is also running a series of <strong>AI Power Days</strong>: three-day online events aimed at enabling business leaders to build frontier firms for the agentic AI era. It’s likely to feature a lot of Ignite-level content and resources from Azure, Microsoft 365, Foundry, Windows 365 and more.</p>



<p>You don’t have to commit to the full three days; sessions are modular and must be registered for individually. This makes you think more intentionally about what you want to attend. Most times seem friendly for UK and Europe-based folks, but you can likely watch recordings after the fact. Day three appears more hands-on, and there’s even a data center tour to look forward to.</p>



<p>All right, that’s all from me. Have a great week, whatever you’re working on. I’ll speak to you again next week.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-19-january-2026-copilot-memories-vs-code-studio-extension-open-to-work-book/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 12 January 2026 &#8211; Welcome to 2026, Where are all the stories, Building AI Org Muscle, Copilot Checkout</title>
		<link>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-12-january-2026-welcome-to-2026-where-are-all-the-stories-building-ai-org-muscle-copilot-checkout/</link>
					<comments>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-12-january-2026-welcome-to-2026-where-are-all-the-stories-building-ai-org-muscle-copilot-checkout/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 11:25:22 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[Copilot]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62330</guid>

					<description><![CDATA[This week:Welcome to 2026, A Growth Year for All of Us Where are all the news stories?! (A discussion about a quiet start to 2026) How to build the organizational muscle needed to scale AI beyond PoCs Microsoft and PayPal&#8217;s Copilot Checkout allows users to make purchases without leaving the AI chatbot You can also [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:<br><a href="https://devblogs.microsoft.com/visualstudio/vs-live-2026-immersive-learning-for-vs2026?WT.mc_id=M365-MVP-5001530" target="_blank" rel="noreferrer noopener">Welcome to 2026, A Growth Year for All of Us</a></p>



<p>Where are all the news stories?! (A discussion about a quiet start to 2026)</p>



<p><a href="https://www.thoughtworks.com/insights/articles/how-to-build-organizational-muscle-needed-to-scale-AI" target="_blank" rel="noreferrer noopener">How to build the organizational muscle needed to scale AI beyond PoCs</a></p>



<p><a href="https://www.windowscentral.com/artificial-intelligence/microsoft-copilot/microsoft-and-paypals-copilot-checkout-allows-users-to-make-purchases-without-leaving-the-chatbot" target="_blank" rel="noreferrer noopener">Microsoft and PayPal&#8217;s Copilot Checkout allows users to make purchases without leaving the AI chatbot</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Weekly Update 12 January 2026 - VS 2026, Where are all the stories?, AI Org Muscle, Copilot Checkout" width="500" height="281" src="https://www.youtube.com/embed/S4VT3bSno78?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version: <a href="https://thoughtstuff.libsyn.com/weekly-update-12-january-2026">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 12 January 2026</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript (AI-Generated)</h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well. Welcome to 2026 &#8211; this is the first one of the new year!</p>



<p>I didn’t do one last week, and I’ll explain why in a bit. I want to begin where I intended to start, and then take a slightly different path.</p>



<h2 class="wp-block-heading">Developers Staying Busy Over The Holidays</h2>



<p>The first blog post that caught my eye was from the Visual Studio team. It was their “Welcome to 2026” post, and what struck me was the tone. You’d think people slow down coming into Christmas, but according to their watch statistics—from sessions at VS Live Orlando—it looks like developers kept going strong. Lots of interest in learning Visual Studio, AI tools, and what’s coming in 2026.</p>



<p>The top six ranked sessions were deeply technical, not just overviews, which suggests developers are really leaning in and being intentional with their time. That mirrors what I felt too—no slowing down, just keeping up and catching up.</p>



<p>The blog’s main purpose was also to highlight upcoming in-person Visual Studio Live events in 2026, so check those out if you&#8217;re interested.</p>



<h2 class="wp-block-heading">Radio Silence from Microsoft 365 Dev</h2>



<p>I was surprised, however, when preparing this week’s update. I regularly go through a set of RSS feeds and key web pages related to Microsoft 365 dev, extensibility, and Co-pilot updates. Usually, there’s plenty to talk about, even if I step slightly outside the core M365 dev scope.</p>



<p>This time? Silence. Since mid-December, just before Christmas, there’s been almost nothing. RSS feeds were empty. That’s actually why I didn’t release an update last week.</p>



<p>I don’t think it’s because there’s nothing to do—far from it. My guess is a combination of internal changes, budget calendar impacts, or teams needing time to reboot communications after planning through to year-end. That said, I’ve done a bunch of Christmases now, and I don’t recall ever having a content drought quite this long into the new year.</p>



<h2 class="wp-block-heading">Scaling AI Within Organizations &#8211; A ThoughtWorks Perspective</h2>



<p>The quiet push me to look elsewhere, and I landed on a ThoughtWorks article: <strong>“How to build the organizational muscle needed to scale AI beyond POCs”</strong>. It’s exactly the right conversation a lot of us need to have.</p>



<p>If you’ve done any AI development, you know the pattern: you build a proof of concept, people are interested… and then things fizzle. This piece explores how to keep momentum—how to get organizations to internalize and embed AI into their workflows. It’s a comprehensive read, full of references, diagrams, and practical suggestions. Highly recommended.</p>



<h2 class="wp-block-heading">Copilot Checkout with PayPal</h2>



<p>Another headline I almost missed: Microsoft is working on “Copilot Checkout” via PayPal, now in public preview. This one flew under the radar—I found it on a Windows Central blog.</p>



<p>While details are sparse, it seems we’ll see native “buy buttons” inside the Copilot chat experience (probably the web-based version). It won&#8217;t make purchases for you, but it will present buying options and redirect to PayPal for completion.</p>



<p>What’s really intriguing is the potential for developer extensibility. Will this be open to ISVs, or limited to select partners? Will there be an equivalent for Microsoft 365 Copilot that also handles enterprise procurement use cases through internal workflows? Lots of possibilities if they get the model right.</p>



<p>And it ties back to the ThoughtWorks piece: shaping organizational adoption habits. Embedding purchasing flows into chat may help normalize AI-driven decisions and actions inside businesses too.</p>



<h2 class="wp-block-heading">Wrapping Up</h2>



<p>So, even in a relatively quiet week for Microsoft news, there are still valuable threads to pull—from developer learning trends, to organizational AI adoption, and the quiet beginnings of commerce integrations inside Copilot.</p>



<p>Let’s see what the next week brings. Have a good one—whatever you’re working on. I’ll see you again next week!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2026/01/weekly-update-12-january-2026-welcome-to-2026-where-are-all-the-stories-building-ai-org-muscle-copilot-checkout/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 22 December 2025 &#8211; AIContextProvider, Copilot AI Insights API GA, VS2026 Debugging</title>
		<link>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-22-december-2025-aicontextprovider-copilot-ai-insights-api-ga-vs2026-debugging/</link>
					<comments>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-22-december-2025-aicontextprovider-copilot-ai-insights-api-ga-vs2026-debugging/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 22 Dec 2025 08:46:25 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62325</guid>

					<description><![CDATA[Microsoft Agent Framework: Giving Agents Contextual Memory Using AIContextProvider Copilot AI Insights (meeting recap) API is now generally available! Get AI-generated meeting summaries with Meeting AI Insights API Debugging, but Without the Drama (A Visual Studio 2026 Story) You can also listen to the audio-only version: https://thoughtstuff.libsyn.com/weekly-update-22-december-2025 Find all my videos at thoughtstuff.co.uk/videos. You can [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://jamiemaguire.net/index.php/2025/12/20/microsoft-agent-framework-giving-agents-contextual-memory-using-aicontextprovider/">Microsoft Agent Framework: Giving Agents Contextual Memory Using AIContextProvider</a></p>



<p><a href="https://github.com/MicrosoftDocs/msteams-docs/discussions/13751">Copilot AI Insights (meeting recap) API is now generally available!</a></p>



<p><a href="https://learn.microsoft.com/en-us/microsoftteams/platform/graph-api/meeting-transcripts/meeting-insights?WT.mc_id=M365-MVP-5001530">Get AI-generated meeting summaries with Meeting AI Insights API</a></p>



<p><a href="https://devblogs.microsoft.com/visualstudio/visual-studio-2026-debugging-with-copilot?WT.mc_id=M365-MVP-5001530">Debugging, but Without the Drama (A Visual Studio 2026 Story)</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Weekly Update 22 December 2025 - AIContextProvider, Copilot AI Insights API GA, VS2026 Debugging" width="500" height="281" src="https://www.youtube.com/embed/TAkN53rGcZ8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version: <a href="https://thoughtstuff.libsyn.com/weekly-update-22-december-2025">https://thoughtstuff.libsyn.com/weekly-update-22-december-2025</a></p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript <em>(AI-generated)</em></h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well. We&#8217;re in the final couple of weeks of the year. Not loads and loads of news flying around, but there are still some interesting things coming out — and from some unusual places. We&#8217;ll talk about that in a moment.</p>



<h2 class="wp-block-heading">AI Context Provider for Microsoft Agents</h2>



<p>First up, I want to highlight a blog post by fellow MVP Jamie Maguire. He&#8217;s been publishing a lot of high-quality content recently, especially on the pro-code side of building bots using the Microsoft Agent Framework.</p>



<p>This latest post is about using the AI Context Provider to give your bots contextual memory. It&#8217;s a follow-up to a demo he included in an earlier blog. Really useful stuff if you&#8217;re working with agent frameworks and want to let your bots remember what users tell them. All the code is included in the post, making it a fantastic resource.</p>



<p>This reminds me of when I was doing similar pro-code work, especially around UCMA. At the time, you had to document everything yourself or risk forgetting it entirely. It’s great that Jamie is putting this knowledge out there publicly.</p>



<h2 class="wp-block-heading">CoPilot AI Insights API Goes GA</h2>



<p>Microsoft’s Copilot AI Insights API (formerly known as the meeting recap API) has reached General Availability. This API gives you access to AI-generated summaries of meetings via API after those meetings have finished.</p>



<p>Now that it’s GA, it has better support, a longer life cycle, and more stability. Microsoft typically gives two years’ notice before deprecating GA endpoints, unlike beta ones which can disappear at any time and aren’t supported. This is a solid step forward.</p>



<p>Oddly, the announcement came in a GitHub Discussion instead of an official blog post. Maybe marketing will catch up in the new year.</p>



<p>Important to note: this API only works for users with a Microsoft 365 Copilot license and currently requires user-delegated permissions — not ideal for headless or large-scale implementations. We’ll need to see if that changes over time.</p>



<p>Also, there are limits: meeting summaries may take up to four hours post-meeting to become available. No real-time data here — developers will need to build around that delay, perhaps with polling logic.</p>



<h2 class="wp-block-heading">Visual Studio 2026 Debugging Enhancements</h2>



<p>Visual Studio 2026 is still on my radar, and a great blog post caught my attention. It’s a kind of narrative walkthrough — like a story — focusing on debugging without the drama. It highlights some genuinely helpful features like enhanced exception analysis, inline values, and better unit testing tools.</p>



<p>If you&#8217;re like me, your debugging techniques may be stuck in the past from when you first learned. Tools like conditional breakpoints were life-changing for me when they first came out. Every developer should know about them — but often, they don&#8217;t! This blog is a good reminder to revisit and update your knowledge.</p>



<h2 class="wp-block-heading">Wrapping Up the Year</h2>



<p>As the year ends, I’ve been reflecting on what a big twelve months it’s been for AI – particularly Copilot and its developer extensibility. Progress may have been slower than in early hype years, but it’s been steady, with important milestones reached. I’m looking forward to seeing what 2026 brings.</p>



<p>No weekly update from me next week – I’ll see you in the new year. Whatever you&#8217;re up to, have a great time. Merry Christmas if that&#8217;s your thing!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-22-december-2025-aicontextprovider-copilot-ai-insights-api-ga-vs2026-debugging/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Weekly Update 15 December 2025 &#8211; SPFx Tooling Changes, Git workflow with VS2026, Vibing a running dashboard, Claude Code step by step</title>
		<link>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-15-december-2025-spfx-tooling-changes-git-workflow-with-vs2026-vibing-a-running-dashboard-claude-code-step-by-step/</link>
					<comments>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-15-december-2025-spfx-tooling-changes-git-workflow-with-vs2026-vibing-a-running-dashboard-claude-code-step-by-step/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 09:04:27 +0000</pubDate>
				<category><![CDATA[Weekly Updates]]></category>
		<category><![CDATA[microsoft365dev]]></category>
		<category><![CDATA[spfx]]></category>
		<category><![CDATA[vs2026]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62321</guid>

					<description><![CDATA[This week: General Availability of SharePoint Framework 1.22 – A Major Refresh of the Build &#38; Tooling Experience SharePoint Framework v1.22: What&#8217;s in the Latest SPFx Update Streamlining your Git workflow with Visual Studio 2026 How to: build a runner’s training and progress dashboard How to install and configure Claude Code, step by step You [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>This week:</p>



<p><a href="https://devblogs.microsoft.com/microsoft365dev/general-availability-of-sharepoint-framework-1-22-a-major-refresh-of-the-build-tooling-experience?WT.mc_id=M365-MVP-5001530">General Availability of SharePoint Framework 1.22 – A Major Refresh of the Build &amp; Tooling Experience</a></p>



<p><a href="https://www.voitanos.io/blog/sharepoint-framework-v1-22-whats-in-latest-update-of-spfx/">SharePoint Framework v1.22: What&#8217;s in the Latest SPFx Update</a></p>



<p><a href="https://devblogs.microsoft.com/visualstudio/streamlining-your-git-workflow-with-visual-studio-2026?WT.mc_id=M365-MVP-5001530">Streamlining your Git workflow with Visual Studio 2026</a></p>



<p><a href="https://blog.thoughtstuff.co.uk/2025/12/how-to-build-a-runners-training-and-progress-dashboard/">How to: build a runner’s training and progress dashboard</a></p>



<p><a href="https://www.zdnet.com/article/how-to-install-configure-claude-code-ai-pricing-developers/">How to install and configure Claude Code, step by step</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Weekly Update 15 December 2025 - SPFx Tooling Changes, Git workflow with VS2026, Vibing, Claude Code" width="500" height="281" src="https://www.youtube.com/embed/6aByOyQX3u8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>You can also listen to the audio-only version of this podcast: <a href="https://thoughtstuff.libsyn.com/weekly-update-15-december-2025">Thoughtstuff Podcast &#8211; Tom Morgan on Teams Dev: Weekly Update 15 December 2025</a>.</p>



<p>Find all my videos at <a href="https://thoughtstuff.co.uk/videos">thoughtstuff.co.uk/videos</a>. You can also subscribe to the audio-only version of these videos, either via <a href="https://itunes.apple.com/gb/podcast/thoughtstuff-tom-morgan-on-skype-for-business-office/id1211712640" target="_blank" rel="noreferrer noopener">iTunes</a>, <a href="https:/thoughtstuff.co.uk/spotify" target="_blank" rel="noreferrer noopener">Spotify</a> or your <a href="https://feeds.feedburner.com/ThoughtstuffPodcast" target="_blank" rel="noreferrer noopener">own podcasting tool</a>.</p>



<h2 class="wp-block-heading">Transcript <em>(AI-generated)</em></h2>



<p>Hello and welcome to another weekly update. I hope you&#8217;re doing well.</p>



<p>We’re heading into the quiet slide toward Christmas, but there’s still some important updates to talk through. This week’s highlight is a major release for SharePoint Framework (SPFx) version 1.22.</p>



<h2 class="wp-block-heading">SPFx 1.22 Build Tooling Shift: Gulp → Heft</h2>



<p>The biggest news is that SPFx has moved from Gulp to a new build tool &#8211; Heft. It’s worth paying attention, especially if you have projects still in development. Heft is a drop-in replacement with some key differences, and migrating early could help you avoid breaking changes down the line.</p>



<p>If you’re already in production, consider this update during your next version bump.</p>



<p>To explore this further, I&#8217;m referencing two blog posts—one is the official Microsoft announcement, and the other is by Andrew Connell, who has detailed insights including how to create custom Heft plugins.</p>



<h3 class="wp-block-heading">Security Enhancements</h3>



<p>Another big plus with v1.22 is the significant reduction in security audit warnings from npm packages. The SPFx team has worked to ensure the default scaffolding is now clean of those warnings, making it much easier to pass client audits and get into production.</p>



<h2 class="wp-block-heading">Git Workflows in Visual Studio 2026</h2>



<p>Mads Kristensen&#8217;s blog post revisits Git integration in VS 2026. It’s a &#8220;day in the life&#8221; style walkthrough, covering workflows like stashing, popping, and even AI-assisted commit messages. If you&#8217;re like me and don’t stash often enough, it&#8217;s a great reminder to use these capabilities more thoroughly.</p>



<p>The generate commit message button is especially game-changing &#8211; I don’t write any commit messages myself anymore!</p>



<h2 class="wp-block-heading">Vibe Coding with GitHub Copilot and Claude Sonnet 4.5</h2>



<p>Over the weekend, I built a running training dashboard using nothing but AI &#8211; specifically GitHub Copilot CLI and Claude Sonnet 4.5. The result? Data from Strava and a weather API presented on a terminal display. I didn’t manually write a single line of code. Perfect for those “someday” projects that usually never get built.</p>



<p>I shared a full blog post about it if you’re curious about using AI to build functional, minimal-code projects.</p>



<h2 class="wp-block-heading">Reminder: Claude Code Integration Guide</h2>



<p>Finally, I dropped in a high-level but useful ZDNet post on getting started with Claude Code. Sometimes a walkthrough is all you need to get a tool into your workflow. I’ll be playing with it over the holidays – we’ll see how it stacks up compared to Copilot.</p>



<p>That’s everything from me this week – have a great one, stay stress-free as we head toward year-end, and I’ll speak to you again soon.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2025/12/weekly-update-15-december-2025-spfx-tooling-changes-git-workflow-with-vs2026-vibing-a-running-dashboard-claude-code-step-by-step/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to: build a runner’s training and progress dashboard</title>
		<link>https://blog.thoughtstuff.co.uk/2025/12/how-to-build-a-runners-training-and-progress-dashboard/</link>
					<comments>https://blog.thoughtstuff.co.uk/2025/12/how-to-build-a-runners-training-and-progress-dashboard/#respond</comments>
		
		<dc:creator><![CDATA[Tom]]></dc:creator>
		<pubDate>Thu, 11 Dec 2025 15:10:41 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[strava]]></category>
		<category><![CDATA[trmnl]]></category>
		<guid isPermaLink="false">https://blog.thoughtstuff.co.uk/?p=62312</guid>

					<description><![CDATA[I recently built myself a bespoke motivation/accountability dashboard for my running training. It’s one of those projects that I would never have had the time to sit down and do from scratch, but thanks to advancements in AI and ‘vibe coding’ I managed to get it done one evening. I chose to use GitHub Copilot [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I recently built myself a bespoke motivation/accountability dashboard for my running training. It’s one of those projects that I would never have had the time to sit down and do from scratch, but thanks to advancements in AI and ‘vibe coding’ I managed to get it done one evening.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="960" height="720" src="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.49.png" alt="" class="wp-image-62316" srcset="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.49.png 960w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.49-300x225.png 300w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.49-768x576.png 768w" sizes="auto, (max-width: 960px) 100vw, 960px" /></figure>



<p>I chose to use <a href="https://github.com/features/copilot/cli" target="_blank" rel="noreferrer noopener">GitHub Copilot CLI</a>, which is the same GitHub Copilot that’s in Visual Studio and Visual Studio Code but just through Windows Terminal. As a developer, I’m finding that building entire ‘vibe’ projects this way to be strangely pleasing &#8211; because I’m not in a code editor it’s a mental shift away from more traditional development and I don’t feel the karmic weight of the code that’s being generated because I can’t see it. It also means I can switch focus away to some other task, coming back periodically to issue new requests or clarifications. For this, GitHub Copilot used Claude Sonnet 4.5.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="934" height="495" src="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/GitHubCopilot.jpg" alt="" class="wp-image-62305" srcset="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/GitHubCopilot.jpg 934w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/GitHubCopilot-300x159.jpg 300w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/GitHubCopilot-768x407.jpg 768w" sizes="auto, (max-width: 934px) 100vw, 934px" /></figure>



<p>I recently had success using this to create another vibe-coded project: <a href="https://blog.thoughtstuff.co.uk/2025/12/introducing-winter-for-windows-the-fun-festive-desktop-addition-for-the-season/" target="_blank" rel="noreferrer noopener">Winter for Windows</a>.</p>



<h2 class="wp-block-heading">The Problem</h2>



<p>I tend to train best when I’m aiming at some future event, so I try and make sure I’m signed up to something most of the time. This time around I signed up to a half-marathon with about 3 months notice and so I decided to look for a training plan to see if I could improve my time. In the past I’ve used ChatGPT to create training plans, and it’s done a good job, but this time I used one from <a href="https://benparkes.com/" target="_blank" rel="noreferrer noopener">Ben Parkes</a>, mostly because I think he has the nicest running tops.</p>



<p>The training plan came as a PDF. I don’t have a printer but I can view it on my phone. However, on Sunday nights, when I needed to plan what I was going to do when (because in the real world we can’t always run exactly when it says to on the training plan!) I found that I was writing down the plan for the week, and then constantly referring to it throughout the week. Was tomorrow the Easy 3, or the one with the Strides, or what?</p>



<p>I already had a <a href="https://usetrmnl.com/" target="_blank" rel="noreferrer noopener">TRMNL</a> device, which I’ve variously used as a task list and to count down to my next speaking event, plus we have another one in the kitchen with the family calendar and house battery stats, and I thought this would be the perfect device to show the training plan, somehow.</p>



<p>I also needed something to give me that extra bit of motivation throughout the winter months, and the idea of always being able to see how many miles I’d run that week against my goal, would be a good way to keep me on the waggon.</p>



<h2 class="wp-block-heading">Overnight Success 20 years in the making, or Prerequisites to ‘just vibing it’</h2>



<p>There’s an interesting thing about vibe coding, which might explain the wild differences in how people talk about it. I think that, for a certain type of developer, it can 10x your productivity. However, for others, it can actually slow you down &#8211; AI Drag is a thing. <a href="https://www.youtube.com/watch?v=A6l23fVG-UE" target="_blank" rel="noreferrer noopener">Scott and Mark talk about this better</a> than I can. Luckily, I’m in the 10x camp.</p>



<p>I also know what Microsoft Azure is and have an account there, and I understand the client/API model. I know what JSON is. I understand (mostly) how OAuth works when dealing with third party APIs and where to avoid putting sensitive data. I know the language of CSS. Note that I say I know the language. I’m bad at CSS and could not be relied on to produce the output of this project, but I understand the language enough to use the right words when describing what I want.</p>



<p>All of these things (I think) mean that I can have a very productive interaction with a coding AI and come away with some great results. I’ve put all my generated code into 2 public repositories so that if you want to, you’re welcome to use the (excellent) auto-generated README files to create your own.</p>



<h2 class="wp-block-heading">What I “built”</h2>



<p>There are 2 projects &#8211; the API and the front-end. They are separate from each other, in the sense that you could consume the API elsewhere and not use the plugin, but the plugin assumes an API that works in the way that this one does.</p>



<h3 class="wp-block-heading">Part 1 &#8211; The API</h3>



<p>The API is built in python and I chose to deploy it to an Azure function, but you could host it elsewhere if you’re more comfortable doing that. The API conveys:</p>



<ul class="wp-block-list">
<li>Your next event, and how many weeks away it is</li>



<li>Your total miles run so far this week, and your target for the week</li>



<li>The training plan for the week</li>



<li>The weather for each day</li>



<li>A record of your recorded runs so far, from Strava</li>
</ul>



<p>There are two external API calls to make this happen &#8211; <a href="https://developers.strava.com/" data-type="link" data-id="https://developers.strava.com/" target="_blank" rel="noreferrer noopener">Strava</a> and <a href="https://openweathermap.org/api" data-type="link" data-id="https://openweathermap.org/api" target="_blank" rel="noreferrer noopener">OpenWeather</a>. You’ll need an account on each, and there are instructions for what to do on each in the README.</p>



<p>All the other data is stored as environment variables, so that it’s easy to update over time. </p>



<p>Each weekend, I’ll update the training plan for the week. It’s JSON, and looks something like this:</p>



<pre class="wp-block-code"><code>&#91;
  {"day": "Monday", "workout": "Rest day"},
  {"day": "Tuesday", "workout": "Easy 5 miles"},
  {"day": "Wednesday", "workout": "Tempo 6 miles"},
  {"day": "Thursday", "workout": "Easy 4 miles"},
  {"day": "Friday", "workout": "Rest day"},
  {"day": "Saturday", "workout": "Long run 10 miles"},
  {"day": "Sunday", "workout": "Recovery 3 miles"}
]</code></pre>



<p>When I want to change the running event I’m training for there is an environment variable for the name of the event and the date. There is also a JSON array for the weekly goals:</p>



<pre class="wp-block-code"><code>&#91;
  {"weeks_until": 16, "target_miles": 15},
  {"weeks_until": 12, "target_miles": 20},
  {"weeks_until": 8, "target_miles": 25},
  {"weeks_until": 6, "target_miles": 28},
  {"weeks_until": 4, "target_miles": 30},
  {"weeks_until": 2, "target_miles": 20},
  {"weeks_until": 1, "target_miles": 10}
]</code></pre>



<p>Based on this information, the API seems to be* smart enough to figure out what day it is, how many weeks to go, what the weekly goal should be, what the training plan is, and what running activities I’ve done that match those dates. It also picks from a selection of vaguely motivational quotes:</p>



<pre class="wp-block-code"><code>{
  "weekly_miles": 14.1,
  "target_miles": 28.0,
  "weeks_until_event": 9,
  "event_name": "Marriott's Way Half Marathon",
  "quote": "Every morning in Africa, a gazelle wakes up. It knows it must run faster than the fastest lion or it will be killed. Whether you are a lion or a gazelle, when the sun comes up, you better be running.",
  "weekly_plan": &#91;
    {
      "day": "Monday",
      "day_short": "Mon",
      "workout": "50 min Progression Run",
      "completed": true,
      "distance_miles": 5.7,
      "duration_minutes": 50,
      "pace_per_mile": "8:48"
    },
    {
      "day": "Tuesday",
      "day_short": "Tue",
      "workout": "Easy 5 miles &amp; strength",
      "completed": true,
      "distance_miles": 5.1,
      "duration_minutes": 44,
      "pace_per_mile": "8:37"
    },
    {
      "day": "Wednesday",
      "day_short": "Wed",
      "workout": "Easy 3 &amp; strength",
      "completed": true,
      "distance_miles": 3.3,
      "duration_minutes": 27,
      "pace_per_mile": "8:05",
      "weather": {
        "temp_morning": 10.2,
        "feels_like_morning": 9.6,
        "precipitation_prob": 0,
        "description": "broken clouds"
      }
    },
    {
      "day": "Thursday",
      "day_short": "Thu",
      "workout": "Easy 4 &amp; strides (5x20s)",
      "completed": false,
      "weather": {
        "temp_morning": 7.1,
        "feels_like_morning": 3.7,
        "precipitation_prob": 0,
        "description": "sky is clear"
      }
    },
    {
      "day": "Friday",
      "day_short": "Fri",
      "workout": "Strength",
      "completed": false,
      "weather": {
        "temp_morning": 9.3,
        "feels_like_morning": 7.2,
        "precipitation_prob": 5,
        "description": "overcast clouds"
      }
    },
    {
      "day": "Saturday",
      "day_short": "Sat",
      "workout": "Rest Day",
      "completed": false,
      "weather": {
        "temp_morning": 6.5,
        "feels_like_morning": 4.0,
        "precipitation_prob": 0,
        "description": "broken clouds"
      }
    },
    {
      "day": "Sunday",
      "day_short": "Sun",
      "workout": "Long 11 miles",
      "completed": false,
      "weather": {
        "temp_morning": 10.9,
        "feels_like_morning": 10.3,
        "precipitation_prob": 100,
        "description": "light rain"
      }
    }
  ],
  "has_weekly_plan": true,
  "progress_percentage": 50
}</code></pre>



<p>The GitHub repo for this API is: <a href="https://github.com/tomorgan/trmnl-running-dashboard-api">https://github.com/tomorgan/trmnl-running-dashboard-api</a>. You could either use it by itself as part of some other project, or with the TRMNL plugin project below. All the instructions should be in the README, but you’ll need to create an application in Strava and get a Client ID, and then do a little auth dance with the provided python script to get your tokens. You’ll also need an account with Open Weather (mine was free, but it was a long time ago so YMMV), and to know your lat/long for where you want the weather forecast.</p>



<p>*I say &#8220;seems to be&#8221; because I haven&#8217;t actually looked at the code for this. I&#8217;m deliberately experimenting with NOT getting involved with the code that gets produced, to see what happens. So far, it&#8217;s been working out OK.</p>



<h3 class="wp-block-heading">Part 2 &#8211; The Plugin</h3>



<p>TRMNL uses a <a href="https://usetrmnl.com/framework" target="_blank" rel="noreferrer noopener">specific design language</a> for its plugins &#8211; the <a href="https://shopify.github.io/liquid/" target="_blank" rel="noreferrer noopener">Liquid templating language</a>. I think it’s fairly popular (Shopify created it I believe) but it’s not something I’d previously come across. I’d summarise it as HTML &amp; CSS, with maybe some additional rules and restrictions around CSS, and the ability to insert variables using handlebar syntax, and do some basic conditional formatting and control flow stuff. For basic layouts, it’s pretty good, and fast to get something working.</p>



<p>The biggest limitation I found with TRMNL is that, because it’s a relatively low-quality monochrome e-ink display you can’t always display what you want to. Emojis especially, it seems to really struggle with. I understand why (mostly) and I’m more than happy with the trade for a device that is a lot less intrusive in my life (it doesn’t draw the eye like a regular screen does) and lasts 6 months between charges.</p>



<p>It’s also a little hard to work out whether stuff will fit on the screen or not without some trial and error. There is a sort of software emulator but it’s not instant and each change takes around 30 seconds of messing around to see how it renders. Usually this isn’t really a problem because most plugins take up a portion of the screen and can use built in components to display one or two keys pieces of information. However, I wanted a full-screen dashboard with a few different sections, and needed to be able to convey quite a bit of data. I got there in the end, it just took a few different attempts.</p>



<p>For what it is, there’s quite a bit of additional stuff in this project. The actual work of calling the API on a schedule and then inserting the values into the placeholders in the HTML is all done by TRMNL, so the only really needed file here is plugin.html. However the rest of the code lets you run it locally without needing a TRMNL or having an API to call, should you want to. Honestly, I think the AI got a little carried away on this one, but it’s fine.</p>



<p>You can find this repo here: <a href="https://github.com/tomorgan/trmnl-running-dashboard/tree/main">https://github.com/tomorgan/trmnl-running-dashboard/tree/main</a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="960" height="720" src="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.15.png" alt="" class="wp-image-62317" srcset="https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.15.png 960w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.15-300x225.png 300w, https://cdnblogpostimages.thoughtstuff.co.uk/cdn/2025/12/2025-12-11-07.27.15-768x576.png 768w" sizes="auto, (max-width: 960px) 100vw, 960px" /></figure>



<h2 class="wp-block-heading">Docs: the unexpected win of the AI age</h2>



<p>When it comes to AI generated coding, I’m almost more impressed with the quality of the documentation than I am with the code. This might be because I mostly know how to write the code, whereas I was never going to write the docs so I see this output as the bigger win. The quality of the docs is also a reason I’m putting all this stuff public rather than keeping it private as I would normally do &#8211; I don’t need to go to the effort to write up everything you need to know to get it deployed, as it’s all been nicely documented. Also, of course, if something isn’t clear you can load it into your AI tool of choice and have it explained to you there.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>I’m loving having the mashup of accountability, motivation and organisation. It makes laying out my clothes the night before easier as I don’t have to check what sort of run I’m doing, and I think it really reduces the risk of my falling off the training plan and not hitting my weekly targets. I’m pleased with it and it makes me happy because it’s one of those little projects that I never would have got around to writing otherwise and it doesn’t make sense to expend any money to solve, but thanks to advancements in AI I was able to make for myself.</p>



<p>In a world where everyone is grumpy that AI is taking away creative jobs, I’ve taken an idea I had and made it a reality. As a developer, shouldn’t I be worried that this is going to take away my job? No! Firstly, this project was never going to be written anyway, no developer jobs were impacted as a result of AI doing most of the work here. Secondly, whilst I know our jobs will evolve as these tools change how we work, I’m confident in the value and knowledge we bring here to do all the other things that are not just typing syntactically correct machine code. It’s a fun time to be a developer! </p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.thoughtstuff.co.uk/2025/12/how-to-build-a-runners-training-and-progress-dashboard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
