<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>Microsoft MVP and blogger, focused on ASP.​NET Core. Author of ASP.​NET Core in Action (https://mng.bz/5mRz) &#xA;&#xA;Blog: https://andrewlock.net&#xA;Mastadon: @andrewlock@hachyderm.io&#xA;Twitter: @andrewlocknet</description><link>https://bsky.app/profile/andrewlock.bsky.social</link><title>@andrewlock.bsky.social - Andrew Lock &#34;Sock&#34;</title><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mkkvhzzvws2p</link><description>Blogged: New features in Git 2.54: easier rebasing, hooks, and statistics&#xA;&#xA;https://andrewlock.net/new-features-in-git-2-54-easier-rebasing-hooks-and-statistcs/&#xA;&#xA;In this post I show some of the new features in Git 2.54 including simple rebases with git history, config-based hooks, and stats with git repo structure&#xA;&#xA;#git</description><pubDate>28 Apr 2026 15:26 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mkkvhzzvws2p</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mjzqfa3gy22x</link><description>Blogged: Removing byte[] allocations in .NET Framework using ReadOnlySpan&lt;T&gt;&#xA;&#xA;https://andrewlock.net/removingbyte-array-allocations-in-dotnet-framework-using-readonlyspan-t/&#xA;&#xA;In this post I describe how to remove static byte[] allocations, even on .NET Framework, by using Span&lt;T&gt; look at the associated IL, and discuss the potential risks&#xA;&#xA;#dotnet</description><pubDate>21 Apr 2026 19:40 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mjzqfa3gy22x</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mjhvxvg5fc2f</link><description>Blogged: Running AI agents with customized templates using docker sandbox &#xA;&#xA;https://andrewlock.net/running-ai-agents-with-customized-templates-in-docker-sandbox/ &#xA;&#xA;In this post I describe how to create custom templates for Docker Sandboxes, so that your sandboxes start with additional tools immediately available (like .NET)&#xA;&#xA;#docker #dotnet</description><pubDate>14 Apr 2026 17:32 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mjhvxvg5fc2f</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3miwdsmryps2p</link><description>Blogged: Running AI agents safely in a microVM using docker sandbox&#xA;&#xA;https://andrewlock.net/running-ai-agents-safely-in-a-microvm-using-docker-sandbox/&#xA;&#xA;In this post I show how to run AI coding agents safely while still using YOLO/dangerous mode using docker sandboxes and the sbx tool&#xA;&#xA;#ai #docker #sandbox #claude</description><pubDate>07 Apr 2026 17:52 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3miwdsmryps2p</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mih6tepy3k2u</link><description>Blogged: Configuring contextual options with Microsoft.Extensions.Options.Contextual&#xA;&#xA;https://andrewlock.net/configuring-contextual-options-with-microsoft-extensions-options-contextual/&#xA;&#xA;In this post I take a brief look at the Microsoft.Extensions.Options.Contextual package to understand what it&#39;s for, how to use it, and discuss whether to use it or not&#xA;&#xA;#dotnet</description><pubDate>01 Apr 2026 17:13 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mih6tepy3k2u</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mhsvpcjpkk2c</link><description>Ah good, another virtual MVP Summit and because Microsoft Teams is terrible, I can&#39;t watch any of it. Classic 🙄</description><pubDate>24 Mar 2026 15:36 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mhsvpcjpkk2c</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mgqh2emnbk2k</link><description>This looks like a nice clean solution to a wart on .NET&#39;s localization functionality - using Fody to set a default ErrorMessageResourceType and ErrorMessageResourceName (based on the attribute type).&#xA;&#xA;https://github.com/mrpmorris/AutoLocalize&#xA;&#xA;Seems crazy that this is necessary though - am I missing something?!</description><pubDate>10 Mar 2026 22:43 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mgqh2emnbk2k</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mgqaadas4s2s</link><description>Blogged: Splitting the NetEscapades.EnumGenerators packages: the road to a stable release&#xA;&#xA;https://andrewlock.net/splitting-the-netescapades-enumgenerators-packages-the-road-to-a-stable-release/&#xA;&#xA;In this post I describe the recent architectural changes to the NetEscapades.EnumGenerators package, which is now a metapackage, to support more scenarios&#xA;&#xA;#dotnet</description><pubDate>10 Mar 2026 20:41 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mgqaadas4s2s</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mfmqvhe2cs2l</link><description>Blogged: Recording metrics in-process using MeterListener&#xA;&#xA;https://andrewlock.net/recording-metrics-in-process-using-meterlistener/&#xA;&#xA;In this post I show how you can use MeterListener to listen to Instrument measurements, how to trigger Observable measurements, and how to aggregate values&#xA;&#xA;#dotnet #observability</description><pubDate>24 Feb 2026 18:04 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mfmqvhe2cs2l</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mf32pqc4lk2j</link><description>Blogged: Creating standard and &#34;observable&#34; instruments&#xA;&#xA;https://andrewlock.net/creating-standard-and-observable-instruments/&#xA;&#xA;In this post I discuss the various Instrument&lt;T&gt; types exposed by the System.Diagnostics.Metrics API and show examples from the .NET libraries and ASP.NET Core&#xA;&#xA;#dotnet #observability</description><pubDate>17 Feb 2026 17:12 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mf32pqc4lk2j</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mdxxgwwhqk2t</link><description>Blogged: Exploring the (underwhelming) System.Diagnostics.Metrics source generators &#xA;&#xA;https://andrewlock.net/creating-strongly-typed-metics-with-a-source-generator/ &#xA;&#xA;In this post I explore the source generators shipped in Microsoft.Extensions.Telemetry.Abstractions, explore the code, and discuss whether I would use them&#xA;&#xA;#dotnet</description><pubDate>03 Feb 2026 18:10 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mdxxgwwhqk2t</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mdx4xegr3c2h</link><description>We discovered something interesting... the decompiled output of ILSpy and dotPeek differs. Which is fine...dotPeek does a &#34;better&#34; job in general... except that in this case, the dotPeek code includes an infinite loop bug 😅&#xA;&#xA;1) Original source for MemoryExtensions.TrimEnd()&#xA;2) ILSpy&#xA;3) dotPeek</description><pubDate>03 Feb 2026 10:16 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mdx4xegr3c2h</guid></item><item><link>https://bsky.app/profile/andrewlock.bsky.social/post/3mdg32jdu2226</link><description>Blogged: Creating and consuming metrics with System.Diagnostics.Metrics APIs&#xA;&#xA;https://andrewlock.net/creating-and-consuming-metrics-with-system-diagnostics-metrics-apis/&#xA;&#xA;In this post I provide an introduction to the System.Diagnostics.Metrics API,  show how to create a custom metric, and show how to read it with dotnet-counters&#xA;&#xA;#dotnet</description><pubDate>27 Jan 2026 15:26 +0000</pubDate><guid isPermaLink="false">at://did:plc:v7z2lui3kjl2szfdzi5ilsqi/app.bsky.feed.post/3mdg32jdu2226</guid></item></channel></rss>