41554 blogs · [ { "id": "01a0821d-5fa3-72c1-8a14-a97a8398595f", "title": "Analysing .NET start-up time with Flamegraphs", "url": "http://www.mattwarren.org/2020/03/03/Analysing-.NET-Runtime-Startup-with-Flamegraphs/", "published_at": "2020-03-03T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a846b9a31", "title": "Under the hood of \"Default Interface Methods\"", "url": "http://www.mattwarren.org/2020/02/19/Under-the-hood-of-Default-Interface-Methods/", "published_at": "2020-02-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a84f5b445", "title": "Research based on the .NET Runtime", "url": "http://www.mattwarren.org/2019/10/25/Research-based-on-the-.NET-Runtime/", "published_at": "2019-10-25T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8558baec", "title": "\"Stubs\" in the .NET Runtime", "url": "http://www.mattwarren.org/2019/09/26/Stubs-in-the-.NET-Runtime/", "published_at": "2019-09-26T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a85e18958", "title": "ASCII Art in .NET Code", "url": "http://www.mattwarren.org/2019/04/25/ASCII-Art-in-.NET-Code/", "published_at": "2019-04-25T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a86540bb6", "title": "Is C# a low-level language?", "url": "http://www.mattwarren.org/2019/03/01/Is-CSharp-a-low-level-language/", "published_at": "2019-03-01T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a86852a91", "title": "\"Stack Walking\" in the .NET Runtime", "url": "http://www.mattwarren.org/2019/01/21/Stackwalking-in-the-.NET-Runtime/", "published_at": "2019-01-21T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a86bd04a8", "title": "Exploring the .NET Core Runtime (in which I set myself a challenge)", "url": "http://www.mattwarren.org/2018/12/13/Exploring-the-.NET-Core-Runtime/", "published_at": "2018-12-13T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a872b5f73", "title": "Open Source .NET – 4 years later", "url": "http://www.mattwarren.org/2018/12/04/Open-Source-.Net-4-years-later", "published_at": "2018-12-04T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a882a2165", "title": "A History of .NET Runtimes", "url": "http://www.mattwarren.org/2018/10/02/A-History-of-.NET-Runtimes/", "published_at": "2018-10-02T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8862d7ca", "title": "Fuzzing the .NET JIT Compiler", "url": "http://www.mattwarren.org/2018/08/28/Fuzzing-the-.NET-JIT-Compiler/", "published_at": "2018-08-28T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a887b3ba1", "title": "Monitoring and Observability in the .NET Runtime", "url": "http://www.mattwarren.org/2018/08/21/Monitoring-and-Observability-in-the-.NET-Runtime/", "published_at": "2018-08-21T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8949458b", "title": "Presentations and Talks covering '.NET Internals'", "url": "http://www.mattwarren.org/2018/07/12/Presentations-and-Talks-covering-.NET-Internals/", "published_at": "2018-07-12T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8a094ef5", "title": ".NET JIT and CLR - Joined at the Hip", "url": "http://www.mattwarren.org/2018/07/05/.NET-JIT-and-CLR-Joined-at-the-Hip/", "published_at": "2018-07-05T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8a341eb6", "title": "Tools for Exploring .NET Internals", "url": "http://www.mattwarren.org/2018/06/15/Tools-for-Exploring-.NET-Internals/", "published_at": "2018-06-15T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8abbee37", "title": "CoreRT - A .NET Runtime for AOT", "url": "http://www.mattwarren.org/2018/06/07/CoreRT-.NET-Runtime-for-AOT/", "published_at": "2018-06-07T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8bafcad2", "title": "Taking a look at the ECMA-335 Standard for .NET", "url": "http://www.mattwarren.org/2018/04/06/Taking-a-look-at-the-ECMA-335-Standard-for-.NET/", "published_at": "2018-04-06T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8c9fbf36", "title": "Exploring the internals of the .NET Runtime", "url": "http://www.mattwarren.org/2018/03/23/Exploring-the-internals-of-the-.NET-Runtime/", "published_at": "2018-03-23T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8d0ebb37", "title": "How generics were added to .NET", "url": "http://www.mattwarren.org/2018/03/02/How-generics-were-added-to-.NET/", "published_at": "2018-03-02T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8d7983f2", "title": "Resources for Learning about .NET Internals", "url": "http://www.mattwarren.org/2018/01/22/Resources-for-Learning-about-.NET-Internals/", "published_at": "2018-01-22T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8e482158", "title": "A look back at 2017", "url": "http://www.mattwarren.org/2017/12/31/A-look-back-at-2017/", "published_at": "2017-12-31T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8f171106", "title": "Open Source .NET – 3 years later", "url": "http://www.mattwarren.org/2017/12/19/Open-Source-.Net-3-years-later", "published_at": "2017-12-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a8fd6197a", "title": "A look at the internals of 'Tiered JIT Compilation' in .NET Core", "url": "http://www.mattwarren.org/2017/12/15/How-does-.NET-JIT-a-method-and-Tiered-Compilation/", "published_at": "2017-12-15T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a90056604", "title": "Exploring the BBC micro:bit Software Stack", "url": "http://www.mattwarren.org/2017/11/28/Exploring-the-BBC-microbit-Software-Stack/", "published_at": "2017-11-28T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a906820b1", "title": "Microsoft & Open Source a 'Brave New World' - CORESTART 2.0", "url": "http://www.mattwarren.org/2017/11/14/Microsoft-and-Open-Source-a-Brave-New-World-CORESTART/", "published_at": "2017-11-14T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a912f37d5", "title": "A DoS Attack against the C# Compiler", "url": "http://www.mattwarren.org/2017/11/08/A-DoS-Attack-against-the-C-Compiler/", "published_at": "2017-11-08T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a917eae08", "title": "DotNetAnywhere: An Alternative .NET Runtime", "url": "http://www.mattwarren.org/2017/10/19/DotNetAnywhere-an-Alternative-.NET-Runtime/", "published_at": "2017-10-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a91922196", "title": "Analysing C# code on GitHub with BigQuery", "url": "http://www.mattwarren.org/2017/10/12/Analysing-C-code-on-GitHub-with-BigQuery/", "published_at": "2017-10-12T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a921aa5be", "title": "A look at the internals of 'boxing' in the CLR", "url": "http://www.mattwarren.org/2017/08/02/A-look-at-the-internals-of-boxing-in-the-CLR/", "published_at": "2017-08-02T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a929c744f", "title": "Memory Usage Inside the CLR", "url": "http://www.mattwarren.org/2017/07/10/Memory-Usage-Inside-the-CLR/", "published_at": "2017-07-10T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a936bda7d", "title": "How the .NET Runtime loads a Type", "url": "http://www.mattwarren.org/2017/06/15/How-the-.NET-Rutime-loads-a-Type/", "published_at": "2017-06-15T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a937c8cc1", "title": "Lowering in the C# Compiler (and what happens when you misuse it)", "url": "http://www.mattwarren.org/2017/05/25/Lowering-in-the-C-Compiler/", "published_at": "2017-05-25T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a94593700", "title": "Adding a new Bytecode Instruction to the CLR", "url": "http://www.mattwarren.org/2017/05/19/Adding-a-new-Bytecode-Instruction-to-the-CLR/", "published_at": "2017-05-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a951bf0df", "title": "Arrays and the CLR - a Very Special Relationship", "url": "http://www.mattwarren.org/2017/05/08/Arrays-and-the-CLR-a-Very-Special-Relationship/", "published_at": "2017-05-08T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a952f989f", "title": "The CLR Thread Pool 'Thread Injection' Algorithm", "url": "http://www.mattwarren.org/2017/04/13/The-CLR-Thread-Pool-Thread-Injection-Algorithm/", "published_at": "2017-04-13T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a95302ad7", "title": "The .NET IL Interpreter", "url": "http://www.mattwarren.org/2017/03/30/The-.NET-IL-Interpreter/", "published_at": "2017-03-30T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9553c64b", "title": "A Hitchhikers Guide to the CoreCLR Source Code", "url": "http://www.mattwarren.org/2017/03/23/Hitchhikers-Guide-to-the-CoreCLR-Source-Code/", "published_at": "2017-03-23T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a961546e2", "title": "The 68 things the CLR does before executing a single line of your code (*)", "url": "http://www.mattwarren.org/2017/02/07/The-68-things-the-CLR-does-before-executing-a-single-line-of-your-code/", "published_at": "2017-02-07T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a96e4295e", "title": "How do .NET delegates work?", "url": "http://www.mattwarren.org/2017/01/25/How-do-.NET-delegates-work/", "published_at": "2017-01-25T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a973e6189", "title": "Analysing Pause times in the .NET GC", "url": "http://www.mattwarren.org/2017/01/13/Analysing-Pause-times-in-the-.NET-GC/", "published_at": "2017-01-13T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a979fe203", "title": "Why Exceptions should be Exceptional", "url": "http://www.mattwarren.org/2016/12/20/Why-Exceptions-should-be-Exceptional/", "published_at": "2016-12-20T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9835fc45", "title": "Why is reflection slow?", "url": "http://www.mattwarren.org/2016/12/14/Why-is-Reflection-slow/", "published_at": "2016-12-14T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a984596ff", "title": "Research papers in the .NET source", "url": "http://www.mattwarren.org/2016/12/12/Research-papers-in-the-.NET-source/", "published_at": "2016-12-12T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a98ef3097", "title": "Open Source .NET – 2 years later", "url": "http://www.mattwarren.org/2016/11/23/open-source-net-2-years-later/", "published_at": "2016-11-23T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a99a709ec", "title": "How does the 'fixed' keyword work?", "url": "http://www.mattwarren.org/2016/10/26/How-does-the-fixed-keyword-work/", "published_at": "2016-10-26T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a99c63081", "title": "Adding a verb to the dotnet CLI tooling", "url": "http://www.mattwarren.org/2016/10/03/Adding-a-verb-to-the-dotnet-CLI-tooling/", "published_at": "2016-10-03T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9a7a68fc", "title": "Optimising LINQ", "url": "http://www.mattwarren.org/2016/09/29/Optimising-LINQ/", "published_at": "2016-09-29T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9ae0a793", "title": "Compact strings in the CLR", "url": "http://www.mattwarren.org/2016/09/19/Compact-strings-in-the-CLR/", "published_at": "2016-09-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9b22d852", "title": "Subverting .NET Type Safety with 'System.Runtime.CompilerServices.Unsafe'", "url": "http://www.mattwarren.org/2016/09/14/Subverting-.NET-Type-Safety-with-System.Runtime.CompilerServices.Unsafe/", "published_at": "2016-09-14T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9b3e4d25", "title": "Analysing .NET Memory Dumps with CLR MD", "url": "http://www.mattwarren.org/2016/09/06/Analysing-.NET-Memory-Dumps-with-CLR-MD/", "published_at": "2016-09-06T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9bc59703", "title": "Analysing Optimisations in the Wire Serialiser", "url": "http://www.mattwarren.org/2016/08/23/Analysing-Optimisations-in-the-Wire-Serialiser/", "published_at": "2016-08-23T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9bd1f7c6", "title": "Preventing .NET Garbage Collections with the TryStartNoGCRegion API", "url": "http://www.mattwarren.org/2016/08/16/Preventing-dotNET-Garbage-Collections-with-the-TryStartNoGCRegion-API/", "published_at": "2016-08-16T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9be221f2", "title": "GC Pauses and Safe Points", "url": "http://www.mattwarren.org/2016/08/08/GC-Pauses-and-Safe-Points/", "published_at": "2016-08-08T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9c3e09bb", "title": "How the dotnet CLI tooling runs your code", "url": "http://www.mattwarren.org/2016/07/04/How-the-dotnet-CLI-tooling-runs-your-code/", "published_at": "2016-07-04T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9c44a564", "title": "Visualising the .NET Garbage Collector", "url": "http://www.mattwarren.org/2016/06/20/Visualising-the-dotNET-Garbage-Collector/", "published_at": "2016-06-20T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9c4b5b7b", "title": "Strings and the CLR - a Special Relationship", "url": "http://www.mattwarren.org/2016/05/31/Strings-and-the-CLR-a-Special-Relationship/", "published_at": "2016-05-31T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9ce91b06", "title": "Adventures in Benchmarking - Performance Golf", "url": "http://www.mattwarren.org/2016/05/16/adventures-in-benchmarking-performance-golf/", "published_at": "2016-05-16T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9cecec7c", "title": "Coz: Finding Code that Counts with Causal Profiling - An Introduction", "url": "http://www.mattwarren.org/2016/03/30/Coz-Finding-Code-that-Counts-with-Causal-Profiling/", "published_at": "2016-03-30T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9d3629c7", "title": "Adventures in Benchmarking - Method Inlining", "url": "http://www.mattwarren.org/2016/03/09/adventures-in-benchmarking-method-inlining/", "published_at": "2016-03-09T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9d3b3395", "title": "Adventures in Benchmarking - Memory Allocations", "url": "http://www.mattwarren.org/2016/02/17/adventures-in-benchmarking-memory-allocations/", "published_at": "2016-02-17T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9d54d2a1", "title": "Technically Speaking - Anniversary Mentoring", "url": "http://www.mattwarren.org/2016/02/16/technically-speaking-anniversary-mentoring/", "published_at": "2016-02-16T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9e4f784d", "title": "Learning How Garbage Collectors Work - Part 1", "url": "http://www.mattwarren.org/2016/02/04/learning-how-garbage-collectors-work-part-1/", "published_at": "2016-02-04T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9f49dc1d", "title": "Open Source .NET – 1 year later - Now with ASP.NET", "url": "http://www.mattwarren.org/2016/01/15/open-source-net-1-year-later-now-with-aspnet/", "published_at": "2016-01-15T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97a9fde7f12", "title": "Open Source .NET – 1 year later", "url": "http://www.mattwarren.org/2015/12/08/open-source-net-1-year-later/", "published_at": "2015-12-08T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa0cc8485", "title": "The Stack Overflow Tag Engine – Part 3", "url": "http://www.mattwarren.org/2015/10/29/the-stack-overflow-tag-engine-part-3/", "published_at": "2015-10-29T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa1908987", "title": "The Stack Overflow Tag Engine – Part 2", "url": "http://www.mattwarren.org/2015/08/19/the-stack-overflow-tag-engine-part-2/", "published_at": "2015-08-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa1ff8bee", "title": "The Stack Overflow Tag Engine – Part 1", "url": "http://www.mattwarren.org/2014/11/01/the-stack-overflow-tag-engine-part-1/", "published_at": "2014-11-01T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa2c378de", "title": "The Art of Benchmarking (Updated 2014-09-23)", "url": "http://www.mattwarren.org/2014/09/19/the-art-of-benchmarking/", "published_at": "2014-09-19T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa3c19be4", "title": "Stack Overflow - performance lessons (part 2)", "url": "http://www.mattwarren.org/2014/09/05/stack-overflow-performance-lessons-part-2/", "published_at": "2014-09-05T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa4680753", "title": "Stack Overflow - performance lessons (part 1)", "url": "http://www.mattwarren.org/2014/09/01/stackoverflow-performance-lessons-part-1/", "published_at": "2014-09-01T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa479178d", "title": "How to mock sealed classes and static methods", "url": "http://www.mattwarren.org/2014/08/14/how-to-mock-sealed-classes-and-static-methods/", "published_at": "2014-08-14T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa4f53a5d", "title": "Know thy .NET object memory layout (Updated 2014-09-03)", "url": "http://www.mattwarren.org/2014/07/04/know-thy-net-object-memory-layout/", "published_at": "2014-07-04T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa5cd18d5", "title": "Measuring the impact of the .NET Garbage Collector - An Update", "url": "http://www.mattwarren.org/2014/06/23/measuring-the-impact-of-the-net-garbage-collector-an-update/", "published_at": "2014-06-23T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa5d79969", "title": "Measuring the impact of the .NET Garbage Collector", "url": "http://www.mattwarren.org/2014/06/18/measuring-the-impact-of-the-net-garbage-collector/", "published_at": "2014-06-18T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa63b6d9a", "title": "Roslyn code base - performance lessons (part 2)", "url": "http://www.mattwarren.org/2014/06/10/roslyn-code-base-performance-lessons-part-2/", "published_at": "2014-06-10T00:00:00+00:00" }, { "id": "01a0821d-5fa3-72c1-8a14-a97aa68d9e0e", "title": "Roslyn code base - performance lessons (part 1)", "url": "http://www.mattwarren.org/2014/06/05/roslyn-code-base-performance-lessons-part-1/", "published_at": "2014-06-05T00:00:00+00:00" } ] posts Claim your blog
Back to Matt Warren
Blog · corpus.blog/blogs/mattwarren.org/posts

Matt Warren

mattwarren.org

2020

2019

2018

2017

2016

2015

2014