Sign in

Gerald Versluis

@jfversluis.dev
2K followers 163 following 1.2K posts

Engineer @microsoft.com (.NET) | content creator | speaker | gamer | .NET MAUI, Blazor, C# | posts & opinions on personal title | He/Him | Talk about what you love, not what you don't. 📍 Maastricht, NL 🎥 YouTube.com/@jfversluis 🔌 jfversluis.dev

PostsRepliesMedia
Gerald Versluis @jfversluis.dev · 25/09/2026
.NET MAUI on iPhone Duo anyone? 👀
030
Gerald Versluis @jfversluis.dev · 15/09/2026
Your app feels slow. The process you are profiling might be innocent. This Visual Studio walkthrough separates CPU work from waiting, then finds 50 ms added to every streamed update. devblogs.microsoft.com/visualstudio…
Visual Studio Performance Profiler showing CPU usage results for a distributed .NET application.
010
Gerald Versluis @jfversluis.dev · 14/09/2026
That thing you learned the hard way? It might be a .NET Conf talk. Community Days CFP is open: remote 30-minute sessions, Nov 12-13. .NET 11 demos are preferred, but any useful .NET topic can be considered. Submit by Oct 6: sessionize.com/dotnetconf-community…
Official .NET Conf 2026 Community Days promotional banner.
001
Gerald Versluis @jfversluis.dev · 12/09/2026
Long press is built into .NET MAUI 11. This sample covers MinimumPressDuration, AllowableMovement, GestureStatus, commands, touch position, tap coexistence, and a two-finger iOS/Mac example. github.com/dotnet/maui-samples/tree…
Illustrated .NET MAUI 11 long-press sample card with a phone showing a press-and-hold box, completed status and coordinates, plus API notes for duration, movement, commands, position, and gesture lifecycle.
030
Gerald Versluis @jfversluis.dev · 11/09/2026
Which bug has a habit of waiting until after publish to show itself? Trimming, Native AOT, linker behavior, environment-specific configuration, signing, or path casing? What would you add to the list?
100
Gerald Versluis @jfversluis.dev · 11/09/2026
Friday .NET tip: scanning text for the same substrings repeatedly? Build SearchValues<string> once, then use ContainsAny. Need the position? Use IndexOfAny. .NET 9+, Ordinal or OrdinalIgnoreCase only. learn.microsoft.com/dotnet/api/syst…
C# code card showing a static SearchValues<string> containing error, fatal, timeout, and circuit open, reused with ContainsAny to scan each log line.
010
Gerald Versluis @jfversluis.dev · 10/09/2026
I'm live on .NET Unboxed right now, showing some of the new .NET MAUI 11 bits 🎁 The team is opening .NET 11 RC1, with Jon Galloway, Daniel Roth, Mads Torgersen, and more. Come hang out: www.youtube.com/watch?v=5fvi7m1QxIY
Official YouTube thumbnail for .NET Unboxed: .NET 11 Release Candidate 1.
030
Reposted by Gerald Versluis
.NET @dot.net · 10/09/2026
〰️ HAPPENING TODAY - .NET Unboxed: .NET 11 Release Candidate 1!! 〰️ Join the team LIVE as they show off their favorite features in .NET 11 in this release party for .NET 11 RC 1!! See you here at 11AM PT ➡️ msft.it/63320aXhLE
.NET 11 Release Candidate 1 is displayed prominently against a purple background. Two cartoon robots, one blue and one purple, stand next to a control panel, while a pink rocket with the number 11 is positioned to the right.
034
Gerald Versluis @jfversluis.dev · 10/09/2026
C# 15 preview lets break and continue target an enclosing labeled loop. That can remove a state flag or awkward goto from genuinely nested control flow. For a simple loop, keep it simple. devblogs.microsoft.com/dotnet/dotne…
C# 15 code example with two nested foreach loops. The outer loop is labeled scanRows, continue scanRows moves to the next row, and break scanRows exits both loops.
110
Gerald Versluis @jfversluis.dev · 10/09/2026
Per-solution themes make Visual Studio 2026 windows easy to spot. The useful part is settings.VisualStudio.json beside the solution. Commit it for team settings, or keep it personal with .gitignore. devblogs.microsoft.com/visualstudio…
Official Visual Studio image framed in a social card, showing two Visual Studio 2026 windows with contrasting color themes and notes about solution-scoped settings.VisualStudio.json.
020
Gerald Versluis @jfversluis.dev · 09/09/2026
Tomorrow I'm joining .NET Unboxed for .NET 11 RC1 🎁 I'll show some of the new .NET MAUI 11 bits, alongside Jon Galloway, Daniel Roth, Mads Torgersen, and more. Thursday, 20:00 CEST / 18:00 UTC www.youtube.com/watch?v=5fvi7m1QxIY Which MAUI 11 bit are you most curious about?
Official YouTube thumbnail for .NET Unboxed: .NET 11 Release Candidate 1.
000
Gerald Versluis @jfversluis.dev · 09/09/2026
A GitHub Actions job that only reads Dependabot alerts should not get unrelated token access. Use vulnerability-alerts read at job level. Once you specify permissions, omitted ones become none. docs.github.com/actions/reference/w…
Editor-style diagram showing a GitHub Actions job with the vulnerability-alerts GITHUB_TOKEN permission set to read, plus notes that omitted permissions become none and the permission accepts read or none.
010
Gerald Versluis @jfversluis.dev · 09/09/2026
A green managed test run does not prove the Native AOT publish behaves the same. Keep the fast lane. Add one representative native test lane. Verify test count and outcomes. A passing subset is still a false green. MSTest 4.4: devblogs.microsoft.com/dotnet/mstes…
Official .NET Blog diagram showing familiar MSTest code moving through source generation, which creates a test registry, delegates, and roots, before producing a Native AOT test executable.
000
Gerald Versluis @jfversluis.dev · 08/09/2026
Content exclusions now carry into agentic work. The GitHub Copilot app and Copilot CLI keep excluded files out of context. Available for Copilot Business and Enterprise. github.blog/changelog/2026-09-02-co…
Official GitHub release graphic with a green shield-like GitHub mark and the text Content exclusions in the Copilot app and CLI, labeled new release.
000
Gerald Versluis @jfversluis.dev · 08/09/2026
Stop creating every XAML resource at startup. .NET MAUI 11 XAML Source Generation turns dictionary entries into factories and creates them on demand. The benchmark shows up to ~8× faster dictionary initialization. No XAML rewrite. github.com/dotnet/maui/pull/33826
Diagram comparing eager creation of every .NET MAUI resource at startup with .NET MAUI 11 registering resource factories and creating each resource only when first requested, with up to roughly eight times faster ResourceDictionary initialization for large dictionaries.
130
Gerald Versluis @jfversluis.dev · 07/09/2026
The code is written. The PR still has review feedback, failed checks, and a merge conflict. VS Code 1.136 adds Agent Merge (preview). It can keep working through those blockers until the PR is ready. Which one would you hand off first? aka.ms/VSCode/136
VS Code Insiders Agents window with the Agent Merge menu open, showing options to address reviews, fix CI failures, resolve conflicts and behind branches, while automatic pull request merging is turned off.
000
Gerald Versluis @jfversluis.dev · 05/09/2026
MAUI Day Skopje is 12 days away 🇲🇰 September 17. One free, in-person day focused on .NET MAUI, with sessions, speakers, and plenty of time to talk with the community. If Skopje is within reach, go check it out: mauiday.net/skopje Anyone here joining?
Screenshot of the MAUI Day Skopje event page showing the September 17, 2026 date, MAUI Day Skopje badge, event description, and Get a Ticket and Submit a Talk buttons over a conference photo.
100
Gerald Versluis @jfversluis.dev · 04/09/2026
September is here. What is the one thing you want to ship before the month is over? A feature, a release, an experiment, or that tiny fix that keeps getting bumped. What are you building?
310
Gerald Versluis @jfversluis.dev · 04/09/2026
Tasks rarely finish in the order you started them. Since .NET 9, `Task.WhenEach` lets you process them as they complete with `await foreach`. No `WhenAny` loop. No removing finished tasks yourself. learn.microsoft.com/dotnet/api/syst…
Side-by-side C# code comparison showing a manual Task.WhenAny loop that removes completed tasks and the shorter Task.WhenEach await foreach pattern, with reminders to process in completion order and await each task.
110
Gerald Versluis @jfversluis.dev · 03/09/2026
We're live! .NET MAUI meets GitHub Copilot Canvas 🤝 Join David Ortinau, Dominik Titl, and me as we inspect running MAUI apps, analyze layouts, record interactions as tests, and use captured evidence to diagnose failures. Watch now: www.youtube.com/watch?v=A5Pr5N999tc
Official thumbnail for the .NET MAUI Community Standup titled Inspect, Record, Create: .NET MAUI Meets GitHub Copilot Canvas, with portraits of Gerald Versluis, David Ortinau, and Dominik Titl.
010
Gerald Versluis @jfversluis.dev · 03/09/2026
Capture it. Keep it. .NET MAUI 11 Preview 7 adds `SaveToGallery` for Media Picker photo and video capture. It is opt-in and works on Android, iOS, and Mac Catalyst. learn.microsoft.com/dotnet/api/micr…
Editorial-style .NET MAUI SaveToGallery flow showing a phone capturing media, an opt-in SaveToGallery toggle defaulting to false, and photos arriving in the gallery, with supported and unsupported platform notes.
131
Gerald Versluis @jfversluis.dev · 03/09/2026
Half-finished work, no stash required. Visual Studio 2026 now supports Git worktrees. Create one from a branch or commit, open it in a new window, and delete it when done. learn.microsoft.com/visualstudio/re…
Visual Studio Git Repository window for CalculatorApp showing worktrees alongside feature and fix branches, plus a detached worktrees section.
121
Gerald Versluis @jfversluis.dev · 02/09/2026
Tomorrow at 20:00 CEST / 18:00 UTC: .NET MAUI meets GitHub Copilot Canvas 🤝 Join David Ortinau, Dominik Titl, and me to see a tool inspect apps, analyze layouts, record interactions as tests, and capture evidence when things fail. www.youtube.com/watch?v=A5Pr5N999tc
Official thumbnail for the .NET MAUI Community Standup titled Inspect, Record, Create: .NET MAUI Meets GitHub Copilot Canvas, with portraits of Gerald Versluis, David Ortinau, and Dominik Titl.
000
Gerald Versluis @jfversluis.dev · 02/09/2026
Bot PR or very large PR? Copilot code review covers both. Copilot cloud agent PRs now get full agentic reviews. The old 300-file / 20,000-line limit no longer applies. github.blog/changelog/2026-08-27-co…
GitHub pull request review menu for resolving a Copilot code review comment, with Addressed, Won't fix, and Incorrect options and short descriptions.
110
Gerald Versluis @jfversluis.dev · 02/09/2026
Your MAUI page can stay alive while its XAML changes underneath it. .NET MAUI 11 Preview 7's Incremental Hot Reload patches every live instance of an affected page or control. It works with `dotnet watch` too. devblogs.microsoft.com/dotnet/dotne…
Diagram showing a .NET MAUI XAML TextColor edit generating one patch that updates three live StatusCard instances without recreating their pages, with limitations for x:Name, root-type, C#, file, and NuGet changes.
120
Reposted by Gerald Versluis
Update Conference @updateconference.bsky.social · 01/09/2026
AI is everywhere. Useful #AI is harder to find. That’s why the AI sessions at #UCP26 focus on what really matters. Meet the speakers: 👉 @jfversluis.dev, @konradkokosa.bsky.social, Karl-Henrik Nilsson, @chrisnas.bsky.social, @kajetanduszynski.bsky.social 👉 prague.updateconference.net/en/2026/sche...
011
Gerald Versluis @jfversluis.dev · 01/09/2026
Start in Copilot CLI. Continue in VS Code. VS Code 1.135 shows recent external Copilot sessions in the Sessions list. Open one to view the conversation and keep going. code.visualstudio.com/updates/v1_13…
Official VS Code 1.135 release graphic with the blue Visual Studio Code logo above the text "VS Code v1.135 New release" on a dark background.
100
Gerald Versluis @jfversluis.dev · 01/09/2026
I like this C# 15 preview feature: `closed` hierarchies. The compiler knows every direct subtype, so your switch can be exhaustive without a fallback. Add another subtype later and the switch is flagged for you. learn.microsoft.com/dotnet/csharp/l…
Blueprint-style C# 15 code card showing a closed PaymentResult record with sealed Success and Declined records, followed by an exhaustive switch expression with no default arm.
160
Gerald Versluis @jfversluis.dev · 31/08/2026
.NET Conf returns November 10-12! 🎉 Three days, free and online, with the official launch of .NET 11. The schedule is still coming together. For now, save the dates. What are you hoping to see this year? devblogs.microsoft.com/dotnet/dotne…
Official .NET Conf 2026 banner for the November 10-12 virtual event and launch of .NET 11.
100
Gerald Versluis @jfversluis.dev · 22/08/2026
Last week I said: send a PR to add your app to Built with .NET MAUI. You no longer need one. 😅 There is now a static showcase with search and filters, plus an issue form with automated validation. Huge shoutout to @james.montemagno.com! jfversluis.dev/built-with-maui
Screenshot of the new Built with .NET MAUI website showing 73 community apps, search and platform filters, and a grid of app cards in the dark theme.
141
Gerald Versluis @jfversluis.dev · 21/08/2026
C# 14 adds extension properties. That's not permission to hide work as data. `customer.FullName`? Good fit. `customer.CustomerHistory` hitting a database? That's a method. Properties should feel field-like. Expensive work, side effects, and surprises belong in methods. Agree?
210
Gerald Versluis @jfversluis.dev · 21/08/2026
A log call on a hot path can box values, allocate temporary objects, and parse its template at runtime. `LoggerMessageAttribute` generates a strongly typed logging method at compile time instead. learn.microsoft.com/dotnet/core/ext…
Nord-style code graphic comparing a regular LogInformation call, which can perform repeated runtime work, with a LoggerMessage partial method generated at compile time. The graphic highlights no value-type boxing, compile-time template parsing, and fewer allocations.
100
Gerald Versluis @jfversluis.dev · 20/08/2026
What is your .NET MAUI paper cut? Not the huge feature request. The small recurring annoyance you hit every week, work around again, and think: surely this should be easier by now. Some answers might become future demos or issue investigations. What’s yours?
010
Gerald Versluis @jfversluis.dev · 20/08/2026
Shell routes can carry values in the path now. .NET MAUI 11 Preview 7 adds route templates: `trip/{tripId}` matches `//routes/trip/SEA-204`, then delivers `tripId` through the existing navigation-data APIs. devblogs.microsoft.com/dotnet/dotne…
Blueprint-style graphic showing a .NET MAUI Shell route template flow: register trip/{tripId}, navigate to //routes/trip/SEA-204, and receive tripId with the value SEA-204.
110
Gerald Versluis @jfversluis.dev · 19/08/2026
One property. One null check. No manual backing field. C# 14 lets a custom accessor use the compiler-generated field through `field`. Keep `get;`, customize `set`, and remove the extra member. learn.microsoft.com/dotnet/csharp/w…
Side-by-side code comparison of a C# property with a manually declared backing field and the shorter C# 14 version using the compiler-generated field keyword for null validation.
110
Gerald Versluis @jfversluis.dev · 19/08/2026
One plugin. VS Code, Copilot CLI, and the GitHub Copilot app. Agent Plugins 1.0 support is GA. Skills and MCP server config share a portable package across supported clients. github.blog/changelog/2026-08-12-ag…
VS Code Extensions view open to the Agent Plugins section, showing several marketplace plugins with Install buttons.
110
Gerald Versluis @jfversluis.dev · 18/08/2026
That long prompt no longer disappears when the answer gets interesting. VS Code 1.133 keeps the active prompt pinned while you scroll. Select it to jump back, or use the arrows to move between prompts. code.visualstudio.com/updates/v1_13…
VS Code Chat scrolled to a response about null-conditional assignments while the prompt "Tell me more about null-conditional assignments" remains pinned at the top with a 2/2 position indicator.
110
Gerald Versluis @jfversluis.dev · 18/08/2026
Native passkeys, without three platform bridges. .NET MAUI 11 Preview 7 adds `CreateAsync` and `AssertAsync`. Your relying-party server still verifies the WebAuthn response. Official sample: github.com/dotnet/maui/tree/11.0.10…
iPhone simulator showing a .NET MAUI 11 Preview 7 app behind the native iOS 'Save a passkey?' sheet for preview7@example.test, with an Add Passkey button.
100
Gerald Versluis @jfversluis.dev · 14/08/2026
A real app list should stay current, not become a graveyard of old links. GameSpur's author updated its Built with .NET MAUI entry after a rename. If your app is missing, renamed, or on another platform, send a PR. Is yours listed? github.com/jfversluis/built-with-ma…
100
Reposted by Gerald Versluis
Tomasz Cielecki @ostebaronen.dk · 14/08/2026
Wrote a bit about my experience setting this up in Azure DevOps and GitHub Actions. Overall pretty smooth with a small gotcha. Have a read here: blog.ostebaronen.dk/2026/08/mtp-... #dotnet #devops #testing
blog.ostebaronen.dk
Microsoft Testing Platform GitHub and Azure DevOps Reporting
I’ve previously written about how cool Microsoft Testing Platform is, which is a set of libraries that a lot of Unit Test frameworks such as xUnit, TUnit, MSTest and more build on. To standardize how ...
031
Gerald Versluis @jfversluis.dev · 14/08/2026
Local AI gets more interesting beyond chat. This .NET 10 sample uses Foundry Local for live, on-device speech-to-text with interim and final results. The microphone demo is Windows-only: devblogs.microsoft.com/dotnet/found…
Console showing cyan interim and white final speech-to-text output beside a GPU monitor.
110
Gerald Versluis @jfversluis.dev · 13/08/2026
Not assigning is useful. Skipping the work to create the value is better. C# 14 allows: `customer?.Order = GetCurrentOrder();` If `customer` is null, the right side is not evaluated. learn.microsoft.com/dotnet/csharp/w…
Screenshot of VS Code showing C# 14 null-conditional assignment. The terminal output reports zero CreateOrder calls for a null customer and one call for a non-null customer.
110
Gerald Versluis @jfversluis.dev · 13/08/2026
MAUI binding typos should fail the build, not wait for you to tap the right screen. Use `x:DataType` where context changes, type each `DataTemplate`, then promote XC0022/XC0023/XC0025 in CI. I made a video on compiled bindings: youtu.be/RAuW8NvRDns
Thumbnail for Gerald Versluis’s video “Better Performance with Compiled Bindings - .NET MAUI 101.”
120
Gerald Versluis @jfversluis.dev · 12/08/2026
Not every PR needs the same review depth. Lite and Balanced are generally available for GitHub Copilot code review. Pick per review or set an org default. Which would you use? github.blog/changelog/2026-08-07-co…
GitHub organization settings for Copilot code review showing the default review-effort menu with Lite for an essential low-cost review, Balanced for deep analysis at moderate cost, and Max marked as coming soon.
000
Gerald Versluis @jfversluis.dev · 12/08/2026
A red build should show evidence, not send you log hunting. Microsoft.Testing.Platform 2.3 puts test failures and summaries directly in GitHub Actions. The reporter is still preview. devblogs.microsoft.com/dotnet/micro…
GitHub Actions test summary generated by Microsoft.Testing.Platform, showing one failed test with its error message and stack trace directly on the workflow page.
111
Gerald Versluis @jfversluis.dev · 11/08/2026
Issues can be related without blocking or duplicating each other. GitHub's new "Relates to" relationship is in public preview, adding a neutral connection for cross-cutting work. github.blog/changelog/2026-08-07-co…
100
Reposted by Gerald Versluis
Update Conference @updateconference.bsky.social · 10/08/2026
What does #AI actually look like in a developer’s everyday workflow? Hear it from @jfversluis.dev. At #HypelessAI #2, Gerald will take you behind the scenes of how he works with AI on real development tasks. 📅 19 August 2026 | 💻 Live online + Q&A 👉 Join us hypeless-ai.updateconf.net
011
Gerald Versluis @jfversluis.dev · 10/08/2026
One quick question shouldn't derail the agent that's already working. VS Code 1.132 adds `/btw`: a side chat that shares the current context and prompt cache without interrupting the active turn. Small feature. Very practical. code.visualstudio.com/updates/v1_132
VS Code Agents window showing a C# test project while a primary test investigation continues and a /btw side chat identifies xUnit as the repository's test framework.
010
Gerald Versluis @jfversluis.dev · 08/08/2026
“I haven't written any code in months.” Fair enough. Software engineering was never just typing. But GitHub Copilot does not revoke your keyboard license. Delegate the tasks you dislike and keep the coding you enjoy. I would delegate ___, but keep ___. Your turn.
020
Reposted by Gerald Versluis
Update Conference @updateconference.bsky.social · 07/08/2026
AI demos look great. But what happens when the demo ends and you give #AI a real development task? Real code. Real bugs. Real PRs. Real problems. @jfversluis.dev shows how he actually uses AI in his daily workflow. No hype, just the good, the bad, and the useful. 👉 hypeless-ai.updateconf.net
021