<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Emin Vergil</title>
    <description>The latest articles on Forem by Emin Vergil (@eminvergil).</description>
    <link>https://forem.com/eminvergil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F883060%2F66a6c60a-d285-4f38-83b9-9db36994a478.jpg</url>
      <title>Forem: Emin Vergil</title>
      <link>https://forem.com/eminvergil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/eminvergil"/>
    <language>en</language>
    <item>
      <title>an alternative to swagger in dotnet 9</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 21 Jul 2024 21:04:05 +0000</pubDate>
      <link>https://forem.com/eminvergil/an-alternative-to-swagger-in-dotnet-9-2jd6</link>
      <guid>https://forem.com/eminvergil/an-alternative-to-swagger-in-dotnet-9-2jd6</guid>
      <description>&lt;p&gt;Microsoft has decided to remove the built-in Swagger support (Swashbuckle) from .NET 9.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is Swagger (Swashbuckle) Being Removed?
&lt;/h2&gt;

&lt;p&gt;The ASP.NET Core team has decided to remove the built-in Swagger support (Swashbuckle) from .NET 9 for several reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance Issues&lt;/strong&gt;: The Swashbuckle project is no longer actively maintained by its community owner. Issues aren't being addressed or resolved, and there wasn't an official release for .NET 8.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evolution of ASP.NET Core&lt;/strong&gt;: Since the introduction of Swagger support in .NET 5, ASP.NET Core has evolved significantly. It now has built-in support for the metadata necessary to describe a web API, reducing the need for external tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on OpenAPI&lt;/strong&gt;: The team wants to make OpenAPI a more first-class citizen in ASP.NET Core. They plan to extend the capabilities of &lt;code&gt;Microsoft.AspNetCore.OpenApi&lt;/code&gt; to provide OpenAPI document generation without relying on external packages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alternative Tools&lt;/strong&gt;: Visual Studio now offers built-in support for .http files and the new Endpoints Explorer, providing alternative ways to explore, test, and debug APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community-Driven Innovation&lt;/strong&gt;: By removing the default dependency, the team encourages the use and development of various OpenAPI tools that might better suit specific project needs.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  An alternative to swagger : Scalar
&lt;/h2&gt;

&lt;p&gt;Scalar is interactive API documentation from OpenAPI/Swagger documents.&lt;/p&gt;

&lt;p&gt;You can get more information &lt;a href="https://github.com/scalar/scalar" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use it in Dotnet 9
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1 - installation
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet add package Scalar.AspNetCore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2 - example usage
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Scalar.AspNetCore&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WebApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsDevelopment&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapScalarApiReference&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// scalar/v1&lt;/span&gt;
    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapOpenApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"Hello world!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you run the application, you can access the API documentation at the &lt;code&gt;scalar/v1&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to add Bearer authentication scheme to Scalar ?
&lt;/h4&gt;

&lt;p&gt;Here is an example transformer for Bearer authentication:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;
 &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;sealed&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BearerSecuritySchemeTransformer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IAuthenticationSchemeProvider&lt;/span&gt; &lt;span class="n"&gt;authenticationSchemeProvider&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="n"&gt;IOpenApiDocumentTransformer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;TransformAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OpenApiDocument&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OpenApiDocumentTransformerContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CancellationToken&lt;/span&gt; &lt;span class="n"&gt;cancellationToken&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;authenticationSchemes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;authenticationSchemeProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAllSchemesAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;authenticationSchemes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;authScheme&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;authScheme&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// Add the security scheme at the document level&lt;/span&gt;
      &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;OpenApiSecurityScheme&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;OpenApiSecurityScheme&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SecuritySchemeType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Http&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="n"&gt;Scheme&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"bearer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// "bearer" refers to the header name here&lt;/span&gt;
              &lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ParameterLocation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="n"&gt;BearerFormat&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Json Web Token"&lt;/span&gt;
          &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
      &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Components&lt;/span&gt; &lt;span class="p"&gt;??=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;OpenApiComponents&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Components&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SecuritySchemes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

      &lt;span class="c1"&gt;// Apply it as a requirement for all operations&lt;/span&gt;
      &lt;span class="k"&gt;foreach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Paths&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SelectMany&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Operations&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Security&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;OpenApiSecurityRequirement&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;OpenApiSecurityScheme&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Reference&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;OpenApiReference&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
              &lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ReferenceType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SecurityScheme&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
          &lt;span class="p"&gt;}]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example usage&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddOpenApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;opt&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;opt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UseTransformer&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;BearerSecuritySchemeTransformer&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;src: &lt;a href="https://eminvergil.vercel.app/blog/scalar" rel="noopener noreferrer"&gt;https://eminvergil.vercel.app/blog/scalar&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 21 Jul 2024 15:21:51 +0000</pubDate>
      <link>https://forem.com/eminvergil/background-jobs-in-dotnet-244e</link>
      <guid>https://forem.com/eminvergil/background-jobs-in-dotnet-244e</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Tue, 23 Jan 2024 22:36:42 +0000</pubDate>
      <link>https://forem.com/eminvergil/my-experiences-with-dotnet-chiseled-images-2n1d</link>
      <guid>https://forem.com/eminvergil/my-experiences-with-dotnet-chiseled-images-2n1d</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>containers</category>
      <category>docker</category>
      <category>chiseled</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 05 Mar 2023 21:33:05 +0000</pubDate>
      <link>https://forem.com/eminvergil/how-to-create-a-streamable-data-endpoint-in-dotnet-for-progressive-loading--1gll</link>
      <guid>https://forem.com/eminvergil/how-to-create-a-streamable-data-endpoint-in-dotnet-for-progressive-loading--1gll</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>dotnetcore</category>
      <category>react</category>
      <category>streams</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 26 Feb 2023 18:09:22 +0000</pubDate>
      <link>https://forem.com/eminvergil/how-to-create-a-url-shorter-in-dotnet--3572</link>
      <guid>https://forem.com/eminvergil/how-to-create-a-url-shorter-in-dotnet--3572</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>algorithms</category>
      <category>discuss</category>
      <category>careeradvice</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 19 Feb 2023 15:16:00 +0000</pubDate>
      <link>https://forem.com/eminvergil/what-is-a-cloudflare-worker--m0f</link>
      <guid>https://forem.com/eminvergil/what-is-a-cloudflare-worker--m0f</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>cloudflare</category>
      <category>serverless</category>
      <category>javascript</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 08 Jan 2023 16:54:20 +0000</pubDate>
      <link>https://forem.com/eminvergil/what-is-the-difference-between-session-storage-and-local-storage--70m</link>
      <guid>https://forem.com/eminvergil/what-is-the-difference-between-session-storage-and-local-storage--70m</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>localstorage</category>
      <category>sessionstorage</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Mon, 12 Dec 2022 20:51:21 +0000</pubDate>
      <link>https://forem.com/eminvergil/how-to-create-a-service-to-fetch-reddit-rss-in-nodejs--3ngd</link>
      <guid>https://forem.com/eminvergil/how-to-create-a-service-to-fetch-reddit-rss-in-nodejs--3ngd</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sat, 10 Dec 2022 07:42:02 +0000</pubDate>
      <link>https://forem.com/eminvergil/async-vs-sync-in-programming-5736</link>
      <guid>https://forem.com/eminvergil/async-vs-sync-in-programming-5736</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>go</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Mon, 05 Dec 2022 20:10:03 +0000</pubDate>
      <link>https://forem.com/eminvergil/why-should-we-use-react-composition-to-avoid-props-drilling--2547</link>
      <guid>https://forem.com/eminvergil/why-should-we-use-react-composition-to-avoid-props-drilling--2547</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Sun, 06 Nov 2022 16:04:39 +0000</pubDate>
      <link>https://forem.com/eminvergil/what-is-haproxy--29fo</link>
      <guid>https://forem.com/eminvergil/what-is-haproxy--29fo</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
      <category>loadbalancer</category>
      <category>haproxy</category>
      <category>docker</category>
      <category>node</category>
    </item>
    <item>
      <title>-</title>
      <dc:creator>Emin Vergil</dc:creator>
      <pubDate>Fri, 12 Aug 2022 10:12:00 +0000</pubDate>
      <link>https://forem.com/eminvergil/what-is-single-responsibility-principle--bmi</link>
      <guid>https://forem.com/eminvergil/what-is-single-responsibility-principle--bmi</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
