Graymatter DeveloperHi! My name is Michael. I sometimes write code :)2023-12-12T20:56:29.000Zhttps://www.graymatterdeveloper.com/Michael YarichukHexoWorks On My Machine(tm)https://www.graymatterdeveloper.com/2023/12/12/works-on-my-machine/2023-12-12T20:56:29.000Z2023-12-12T20:56:29.000Z<p>Oh, but it works on my machine! What gives?! Today, I found myself asking the uncaring monitor over and over again, while adding logsMocking HttpClient the simple wayhttps://www.graymatterdeveloper.com/2023/12/09/mocking-http/2023-12-09T14:06:32.000Z2023-12-09T14:06:32.000Z<p>Ever found yourself deep in unit tests, only to realize you need to mock an HttpClient? Yep, we’ve all been there. There are many ways'Production Ready' Non-Negotiable: Comprehensive Testinghttps://www.graymatterdeveloper.com/2023/11/18/production-ready-testing/2023-11-18T17:31:25.000Z2023-11-18T17:31:25.000Z<p>Let’s delve into the most crucial, non-negotiable aspect of <em>production-ready</em> systems: Testing.</p>
<p>In my experience,'Production Ready' Non-Negotiable: Memory Dump Toolinghttps://www.graymatterdeveloper.com/2023/11/15/production-ready-memory-dumps/2023-11-15T22:19:28.000Z2023-11-15T22:19:28.000Z<p>Local debugging? That’s easy. You’ve got your breakpoints, variable inspections, and on-the-fly state changes, provided you’ve got the'Production Ready' Non-Negotiable: Performance Metricshttps://www.graymatterdeveloper.com/2023/11/15/production-ready-performance-metrics/2023-11-15T17:43:55.000Z2023-11-15T17:43:55.000Z<p>Here’s a curious challenge I faced at Hibernating Rhinos, as part of the core team for the <a href="https://ravendb.net/">NoSQL database'Production Ready' Non-Negotiable: Structured Logging and Monitoringhttps://www.graymatterdeveloper.com/2023/11/14/production-ready-logging-monitoring/2023-11-14T23:00:00.000Z2023-11-14T23:00:00.000Z<p>Hey there! In the <a href="https://www.graymatterdeveloper.com/2023/11/11/production-ready-intro/">previous post</a> of the series, weProduction-Ready Software: Introductionhttps://www.graymatterdeveloper.com/2023/11/14/production-ready-intro/2023-11-14T19:15:48.000Z2023-11-14T19:15:48.000Z<p>In the tech world, the term ‘production-ready’ often gets tossed around, sometimes more like a hot potato than a clear standard. ButTaming Complexity with Responsibilityhttps://www.graymatterdeveloper.com/2023/11/10/responsibility-chain/2023-11-10T23:00:00.000Z2023-11-10T23:00:00.000Z<p>Imagine, one quiet morning, your boss comes to you and says, “Hey, our web shop is growing and we will be having more than one deliveryFrom Inheritance Hell to Component Heaven, the ECS Patternhttps://www.graymatterdeveloper.com/2023/11/09/ecs-intro/2023-11-09T23:00:00.000Z2023-11-09T23:00:00.000Z<h2 id="All-you-need-is-love-and-Object-Oriented-right-Right"><a href="#All-you-need-is-love-and-Object-Oriented-right-Right"Disentangling the Spaghetti Monsterhttps://www.graymatterdeveloper.com/2023/11/08/templates-ftw/2023-11-08T19:15:48.000Z2023-11-08T19:15:48.000Z<p>In this blog post, we will explore the practical application of a specific design pattern. To illustrate its usefulness, we willNancyFx vs. FeatherHttphttps://www.graymatterdeveloper.com/2020/04/25/nancyfx-vs-featherhttp/2020-04-25T09:28:54.000Z2020-04-25T09:28:54.000Z<p>As a long time fan of the lightweight syntax of the awesome <a href="http://nancyfx.org/">NancyFx web framework</a>, I was reallyMore efficient string concatenation with string.Create()https://www.graymatterdeveloper.com/2020/04/09/fun-string-create/2020-04-09T22:17:31.000Z2020-04-09T22:17:31.000Z<p>Strings are immutable in C#, this is a common knowledge. Unless you use pointers in unsafe blocks, that is. Apparently, there isReasons for C# inlining are (a bit) more complex than you think.https://www.graymatterdeveloper.com/2020/03/07/csharp-inlining-rules/2020-03-07T15:37:36.000Z2020-03-07T15:37:36.000Z<p>The Twitter sometimes can serve as a place of unexpected insights and very interesting technical questions! For example, the questionLocal variables vs properties. No suprises here?https://www.graymatterdeveloper.com/2020/03/03/localvar-vs-property/2020-03-03T18:02:14.000Z2020-03-03T18:02:14.000Z<p>Can the benchmark that compares array iteration vs. pointer based iteration be optimized further? Yep!<br>In a post I wrote earlierIs it faster to access arrays with pointer arithmetics?https://www.graymatterdeveloper.com/2020/02/23/arrays-vs-pointers/2020-02-23T06:39:23.000Z2020-02-23T06:39:23.000Z<p>After seeing the results of my <a href="/2020/02/17/data-locality/">previous post</a> where I tested performance impact of dataEasy way to configure SOS in LLDBhttps://www.graymatterdeveloper.com/2020/02/18/lldb-convenient-sos/2020-02-18T18:48:13.000Z2020-02-18T18:48:13.000Z<p>I don’t have much experience in using <a href="https://lldb.llvm.org/">LLDB</a> to debug .Net Core, so when I stumbled upon this littleSequential memory access is... faster?https://www.graymatterdeveloper.com/2020/02/17/data-locality/2020-02-17T17:31:11.000Z2020-02-17T17:31:11.000Z<p>In gamedev articles about Entity-Component-System, data locality is often mentioned as a big reason to use such design pattern. TheNice little gotcha when loading SOS after launching .Net executablehttps://www.graymatterdeveloper.com/2020/02/14/windbg-launch-net-executable/2020-02-14T17:55:15.000Z2020-02-14T17:55:15.000Z<p>When you launch .Net executable with WinDBG, in order to “catch” something nasty like <code>AccessViolationExcetion</code>, theSetting up WinDBG for analyzing memory dumpshttps://www.graymatterdeveloper.com/2020/02/12/setting-up-windbg/2020-02-12T23:25:23.000Z2020-02-12T23:25:23.000Z<p>When I needed to investigate a memory dump for a first time, I stared at WinDBG window, not knowing how to begin. My google-fu yieldedSegmentation faults when using P/Invoke = pointer issues? Not necessarilyhttps://www.graymatterdeveloper.com/2020/01/26/segment-faults-and-gdb/2020-01-26T23:28:27.378Z2020-01-26T23:28:27.378Z<p>When debugging new <a href="https://ravendb.net/">RavenDB’s</a> 32-bit <a href="https://en.wikipedia.org/wiki/Paging">pager</a> for