Kamran Ayub
banner
kamranicus.com
Kamran Ayub
@kamranicus.com
🎙️ Podcast Host @typescript.fm
👾 Creator: KeepTrackOfMyGames.com
🎥 Pluralsight Author: bit.ly/KamranOnPluralsight
💸 Money Talks: kamranicus.com/money

Corporate quitter bringing back summers off 🌞
I've got a PR up for the MCP in Practice course demo that makes it work *locally* and *without Azure* by default. Authentication is opt-in, Azure is opt-in. SO COOL. I love @aspire.dev

PR: github.com/kamranayub/p...
January 9, 2026 at 6:00 PM
i humbly present to you a full "on behalf of" delegated token exchange flow from MCP server (local) -> auth gateway (Duende IdentityServer) -> Entra ID -> Azure Functions API (local) -> MCP server.
January 9, 2026 at 4:20 AM
Bundle optimizations:

- split big vendor from main and mark async
- cache core app code separately vs sharing across multiple entry points

Results?

40mb -> 22mb (dev, initial, source size)

5.5mb -> 2.3mb (prod, initial, uncompressed)

850kb -> 650kb (prod, initial, gzip)

I'll take it! 🎉
January 8, 2026 at 6:06 PM
I now have a full end-to-end environment set up with MCP + OAuth + Azure Functions that works locally using Aspire. It does depend on having a couple Azure storage resources provisioned but other than that, only requires Entra ID to be set up. Otherwise, it "just works" with 'aspire run' 🤘
December 29, 2025 at 10:32 PM
I can see your point, but I disagree when it comes to options-bag patterns. I agree when it comes to domain models. I sync models from my backend to TS and yeah, none of them support optional types (though some can be explicitly null). I usually use optional props when interop-ing with JS.
December 13, 2025 at 3:54 PM
I think we need to bring on the folks from @elysiajs.com to talk about this for @typescript.fm

elysiajs.com
December 10, 2025 at 4:58 PM
Made it tonight and after 5 people there's still plenty and I only doubled it.
December 7, 2025 at 12:48 AM
This is what happens when you let your kid use your Spotify. My son is in the top 1% of listeners for Sabaton, the metal band that sings about real-life wars and the heroes in them. 🥹 #ProudMetalDad 🤘
December 3, 2025 at 11:29 PM
Using C# 14 and #dotnet 10 and the new `extension` member syntax, you can now add static extension properties. This makes adding custom NUnit constraints way easier!

Hopefully I can upgrade my test project soon!
December 3, 2025 at 7:13 PM
today in "weird browser behaviors", in Chromium the input type=number incrementing UI will trigger onBlur event on the input. But in Firefox? Nope! I had logic that would recalculate the total time when the inputs blur event fired but it wasn't working in Firefox 🤦‍♂️Refactoring to watch data instead
December 2, 2025 at 10:24 PM
i dont believe u
November 26, 2025 at 5:51 AM
you telling me ai can understand this??? bruh
November 26, 2025 at 5:35 AM
Wow @riversidefm.bsky.social way to be a downer. Can't support Firefox??? Must be some underlying Web API 😭
November 19, 2025 at 5:45 PM
Now with a little prompting, you can have Copilot figure this out for you 🤘
November 13, 2025 at 3:32 PM
Got it! Updated the gist. The original method I used is still a good option if you don't have Docker installed or don't/can't switch to Linux containers/WSL2.
November 13, 2025 at 3:20 PM
HAH, ChatGPT was able to help write a PowerShell script (that it first wrote in Python to test) and now I get what I want 😍

I can share the Gist for it, super handy!
November 13, 2025 at 6:23 AM
you don't want to be on my list.
November 6, 2025 at 11:55 PM
People talk about LLM non-deterministic behavior like it's a bad thing when it comes to MCP. But... we've always had to deal with non-deterministic behavior from users. Have you ever done a usability test? Human users are WILD. We adjust UX to accommodate. Same with MCP servers cuz LLM is now a user
October 31, 2025 at 4:19 AM
always
October 29, 2025 at 4:45 PM
@riversidefm.bsky.social did something happen, the editor feels a lot faster (like, a LOT faster) this week

Did you turn on the React Compiler or something? 👀
October 29, 2025 at 2:30 AM
The AI Crawler analytics are dope. It's interesting to see Search and Assistant metrics too; actually helpful to understand how people are learning about KTOMG through AI tools.
October 27, 2025 at 5:26 AM
This is hilarious and a good feature. I'll have to test it out. I don't exactly mind bots consuming my game detail/release pages but that's about it. I separately plan to optimize anonymous pages like that for SEO anyway, so I don't want to block them from crawlers.
October 27, 2025 at 5:02 AM
Also, I will add the documentation states this would work on Pro, which I'm on:

support.claude.com/en/articles/...

There's nothing here that says Client ID is restricted to Teams/Enterprise only.
October 25, 2025 at 10:15 PM
Gotta say this is huge bummer @anthropic.com; why is this limited to Teams/Enterprise? It means I can't demo/test a remote MCP server without DCR. I can't sign up for a 5 member team plan when there's a team of 1. 🫠 I mean I guess I can make 4 more email addresses 🤷‍♂️ Also it's not clear *what* plan.
October 25, 2025 at 9:49 PM
Rough itinerary. I noticed from Halix proper it's quite a ways to NB parks. So might try to see if a stay in NB makes sense. We already had initially planned to stay in Moncton. But we'd LIKE to keep it to 3 stays.
October 25, 2025 at 3:42 AM