<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Martynas Samuilovas</title>
    <link>https://martynas.dev</link>
    <description>Writing on software engineering, consulting insights, and project write-ups from Martynas Samuilovas.</description>
    <language>en</language>
    <lastBuildDate>Thu, 14 Nov 2024 00:00:00 GMT</lastBuildDate>
    <item>
      <title>ASP.NET Identity Management with KeyCloak</title>
      <link>https://martynas.dev/blog/asp-net-identity-management-with-keycloak</link>
      <guid>https://martynas.dev/blog/asp-net-identity-management-with-keycloak</guid>
      <description>A step-by-step guide to integrating an ASP.NET application with Keycloak for authentication and authorization using Docker Compose and MariaDB.</description>
      <pubDate>Thu, 14 Nov 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# — EF Migrations with Kubernetes Jobs</title>
      <link>https://martynas.dev/blog/c-ef-migrations-with-kubernetes-jobs-and-mariadb</link>
      <guid>https://martynas.dev/blog/c-ef-migrations-with-kubernetes-jobs-and-mariadb</guid>
      <description>How to deploy MariaDB in Kubernetes and automate Entity Framework migrations with a bundled executable run as a Kubernetes Job.</description>
      <pubDate>Mon, 11 Nov 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# – Applying EF Migrations</title>
      <link>https://martynas.dev/blog/c-applying-ef-migrations</link>
      <guid>https://martynas.dev/blog/c-applying-ef-migrations</guid>
      <description>A walkthrough of the different strategies for applying Entity Framework migrations, from CLI tools and SQL scripts to bundles and runtime migration.</description>
      <pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Entity Framework — Concurrency Conflicts Handling</title>
      <link>https://martynas.dev/blog/handling-concurrency-conflicts-in-c-with-code-examples</link>
      <guid>https://martynas.dev/blog/handling-concurrency-conflicts-in-c-with-code-examples</guid>
      <description>A practical guide to optimistic and pessimistic concurrency control in EF Core, with SemaphoreSlim and DistributedLock examples in C#.</description>
      <pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Constraining your C# Classes</title>
      <link>https://martynas.dev/blog/constraining-your-c-classes</link>
      <guid>https://martynas.dev/blog/constraining-your-c-classes</guid>
      <description>Why implicit, wide-open C# classes hurt code quality, and how adding functionality, concrete constructors, and validation constraints makes them more explicit and robust.</description>
      <pubDate>Mon, 05 Jun 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# Component Tests: With code examples</title>
      <link>https://martynas.dev/blog/c-component-tests-with-code-examples</link>
      <guid>https://martynas.dev/blog/c-component-tests-with-code-examples</guid>
      <description>A practical guide to writing component tests in ASP.NET, including how they differ from unit and integration tests, with a full working example using WebApplicationFactory.</description>
      <pubDate>Wed, 05 Apr 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Performance Battle: Which Collection is the Fastest in C#</title>
      <link>https://martynas.dev/blog/performance-battle-which-collection-is-the-fastest-in-c</link>
      <guid>https://martynas.dev/blog/performance-battle-which-collection-is-the-fastest-in-c</guid>
      <description>Benchmarking arrays, lists, hashsets, sorted sets, IEnumerable, and Parallel.For in C# with BenchmarkDotNet to see which collection type iterates fastest.</description>
      <pubDate>Sun, 02 Apr 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# Integration Tests: With code examples</title>
      <link>https://martynas.dev/blog/c-integration-tests-with-code-examples</link>
      <guid>https://martynas.dev/blog/c-integration-tests-with-code-examples</guid>
      <description>A practical guide to writing C# integration tests, covering database integration testing with Entity Framework and external HTTP service integration testing, with full code examples.</description>
      <pubDate>Thu, 30 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# Unit Tests Made Easy</title>
      <link>https://martynas.dev/blog/c-unit-test-tricks-that-will-actually-help-you</link>
      <guid>https://martynas.dev/blog/c-unit-test-tricks-that-will-actually-help-you</guid>
      <description>Practical C# unit testing best practices with code examples — from test class structure and test data generators to mocking, auto-mocking containers, and exception testing.</description>
      <pubDate>Sat, 25 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>C# Mappers: Which One is the Fastest?</title>
      <link>https://martynas.dev/blog/c-mappers-which-one-is-the-fastest</link>
      <guid>https://martynas.dev/blog/c-mappers-which-one-is-the-fastest</guid>
      <description>Benchmarking seven popular C# object-to-object mappers — Inline, Reflection, AutoMapper, TinyMapper, Mapster, ValueInjecter, and FastMapper — for speed and memory usage.</description>
      <pubDate>Wed, 15 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>10 Micro API Ideas to Make Money</title>
      <link>https://martynas.dev/blog/10-micro-api-ideas-to-make-money</link>
      <guid>https://martynas.dev/blog/10-micro-api-ideas-to-make-money</guid>
      <description>Ten simple, focused API ideas — from URL shortening to VIN lookups — that you can build and monetize with usage-based or subscription pricing.</description>
      <pubDate>Sat, 11 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>7 Awesome Tools for .NET Developers</title>
      <link>https://martynas.dev/blog/7-awesome-tools-for-net-developers</link>
      <guid>https://martynas.dev/blog/7-awesome-tools-for-net-developers</guid>
      <description>A roundup of seven NuGet packages and libraries — from benchmarking and code coverage to validation and date/time handling — that make .NET development faster and more reliable.</description>
      <pubDate>Wed, 08 Mar 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Create a Scraping Tool for Efficient Data Extraction in C#</title>
      <link>https://martynas.dev/blog/building-a-website-scraping-tool-with-selenium-and-net</link>
      <guid>https://martynas.dev/blog/building-a-website-scraping-tool-with-selenium-and-net</guid>
      <description>A step-by-step guide to building a website scraping tool in .NET using Selenium and HtmlAgilityPack, from setting up a Dockerized Chrome driver to extracting data from HTML.</description>
      <pubDate>Tue, 31 Jan 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How good is ChatGPT at C# code performance optimizations</title>
      <link>https://martynas.dev/blog/c-code-performance-optimizations-with-chatgpt</link>
      <guid>https://martynas.dev/blog/c-code-performance-optimizations-with-chatgpt</guid>
      <description>Putting ChatGPT to the test on three real C# performance optimization tasks, then benchmarking its suggestions against hand-written solutions.</description>
      <pubDate>Thu, 26 Jan 2023 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>30 Interview questions that every C#/CSharp developer should know</title>
      <link>https://martynas.dev/blog/c-net-interview-questions</link>
      <guid>https://martynas.dev/blog/c-net-interview-questions</guid>
      <description>A rundown of 30 core C# and .NET interview questions covering OOP fundamentals, memory management, async programming, and generics.</description>
      <pubDate>Tue, 03 Jan 2023 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
