<?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>DEV Community: Andrei Merlescu</title>
    <description>The latest articles on DEV Community by Andrei Merlescu (@andreimerlescu).</description>
    <link>https://dev.to/andreimerlescu</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%2F3590418%2F76311803-accb-4a70-b7db-f264cc031394.jpeg</url>
      <title>DEV Community: Andrei Merlescu</title>
      <link>https://dev.to/andreimerlescu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andreimerlescu"/>
    <language>en</language>
    <item>
      <title>Gin+Go Waiting Room Package Released</title>
      <dc:creator>Andrei Merlescu</dc:creator>
      <pubDate>Tue, 14 Apr 2026 01:25:04 +0000</pubDate>
      <link>https://dev.to/andreimerlescu/gingo-waiting-room-package-released-41me</link>
      <guid>https://dev.to/andreimerlescu/gingo-waiting-room-package-released-41me</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Drop-in waiting room middleware for &lt;a href="https://github.com/gin-gonic/gin" rel="noopener noreferrer"&gt;gin&lt;/a&gt;&lt;br&gt;
web applications. Built on &lt;a href="https://github.com/andreimerlescu/sema" rel="noopener noreferrer"&gt;sema&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The &lt;a href="https://github.com/andreimerlescu/room" rel="noopener noreferrer"&gt;room&lt;/a&gt; package was created immediately after I updated the &lt;a href="https://github.com/andreimerlescu/sema" rel="noopener noreferrer"&gt;sema&lt;/a&gt; package on GitHub. I wanted to implement the new &lt;a href="https://github.com/andreimerlescu/sema" rel="noopener noreferrer"&gt;sema&lt;/a&gt; package directly by consuming it a real world manner that could bring tangible value to other developers, thus the &lt;a href="https://github.com/andreimerlescu/room" rel="noopener noreferrer"&gt;room&lt;/a&gt; package was created.&lt;/p&gt;

&lt;p&gt;I've been a &lt;a href="https://github.com/andreimerlescu" rel="noopener noreferrer"&gt;professional Go developer&lt;/a&gt; for 6 years now and have enterprise production software running in over 3 Fortune® 100 Companies™. Not only is Go an incredible capable and powerful programming language, it is naturally very easy to engage with AI systems in order to build utilities like &lt;em&gt;room&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Quite literally yesterday I finished up with &lt;em&gt;sema&lt;/em&gt; and I immediately began consuming it by building out &lt;strong&gt;room&lt;/strong&gt;. The first room that I could come up with was the &lt;em&gt;Waiting Room&lt;/em&gt; which is the concept of rate limiting with a presentation layer. Except, I wanted to take the presentation layer to the next level, and so I introduced the concept of promotions within a FIFO - &lt;em&gt;&lt;strong&gt;F&lt;/strong&gt;irst &lt;strong&gt;I&lt;/strong&gt;n &lt;strong&gt;F&lt;/strong&gt;irst &lt;strong&gt;O&lt;/strong&gt;ut&lt;/em&gt; queue that cleverly keeps track of fast tracking for up to a defined amount. The demo has it at 90 minutes; but an application under extreme load - where a premium user may end up getting show the waiting room multiple times - gets the best of the promote world in that they jump to the front of the line for the entire duration of their promotional window. The &lt;a href="https://github.com/andreimerlescu/room/blob/main/sample/basic-web-app/test.sh" rel="noopener noreferrer"&gt;test.sh&lt;/a&gt; in the &lt;strong&gt;sample/basic-web-app&lt;/strong&gt; consumer of the &lt;code&gt;room&lt;/code&gt; demonstrates this functionality in less than 30 seconds. &lt;/p&gt;

&lt;p&gt;Sometimes high traffic events come into an application and your business cannot justify spending tens of thousands of dollars on infrastructure that may or may not be serving paying customers. If you're launching a CD and you allow pre-orders on your website at 9AM and you have a flood of traffic coming into the site, the ability to buy your way to the front of the line gives you the capability to give yourself preference in commercial settings and get to the front of the line. Even if the website isn't selling something explicit, what the &lt;code&gt;room&lt;/code&gt; allows you to implement is something like this: &lt;em&gt;this $5 pass is good for 90 minutes and during our launch you'll breeze through every page in our service regardless of capacity limitations that we experience&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Why is this valuable? Not everything on the internet is operating with an infinite budget to spend on cloud hosting. That's where my software comes into play. I'm a 21+ year DevOps architect that has delivered dozens of products internally to Big Tech my entire career and released over 100+ open source packages, including dozens in Go. When you can one-shot a Go website using Gin and Claude, you may not want to pay for auto-scaling bot traffic that costs you $50,000 per month. Instead, you can put the waiting room on, and then voila, you can run for $100/mo and then give customers who buy the pass a store credit for their checkout.&lt;/p&gt;

&lt;p&gt;It's a way to give priority to the human over the bot in the event that the bot isn't providing some kind of commercial benefit to the website they are connecting to in the first place. &lt;/p&gt;

&lt;p&gt;The &lt;code&gt;room&lt;/code&gt; package implements &lt;code&gt;sema&lt;/code&gt; in a way that demonstrates how &lt;em&gt;that&lt;/em&gt; package can be implemented in a real world scenario. The &lt;code&gt;room&lt;/code&gt; package can be implemented in real world scenarios as well, including &lt;em&gt;your website&lt;/em&gt; that uses Gin+Go to serve content. &lt;/p&gt;

&lt;p&gt;The package is Apache 2.0 and is released Open Source on &lt;a href="https://github.com/andreimerlescu/room" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>devops</category>
      <category>go</category>
      <category>security</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
