<?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: Behnam Azimi</title>
    <description>The latest articles on DEV Community by Behnam Azimi (@behnam_azimi_9335d5b42517).</description>
    <link>https://dev.to/behnam_azimi_9335d5b42517</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%2F2187650%2F8e05cb2e-f283-41ad-ba96-587adf9b3074.jpg</url>
      <title>DEV Community: Behnam Azimi</title>
      <link>https://dev.to/behnam_azimi_9335d5b42517</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/behnam_azimi_9335d5b42517"/>
    <language>en</language>
    <item>
      <title>How the Electric Border Effect Actually Works</title>
      <dc:creator>Behnam Azimi</dc:creator>
      <pubDate>Tue, 06 Jan 2026 14:23:32 +0000</pubDate>
      <link>https://dev.to/behnam_azimi_9335d5b42517/how-the-electric-border-effect-actually-works-31k8</link>
      <guid>https://dev.to/behnam_azimi_9335d5b42517/how-the-electric-border-effect-actually-works-31k8</guid>
      <description>&lt;p&gt;There's this SVG filter trick that's been floating around, and honestly, it's one of those things that looks way more complicated than it actually is. Once you break it down, it's pretty clever.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegepofmykebpcxiqe6ab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fegepofmykebpcxiqe6ab.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks to &lt;a href="https://x.com/BalintFerenczy/status/1958095151966105971" rel="noopener noreferrer"&gt;@BalintFerenczy&lt;/a&gt; for this beautiful effect. Check out the &lt;a href="https://x.com/BalintFerenczy/status/1958095151966105971" rel="noopener noreferrer"&gt;original tweet&lt;/a&gt; and &lt;a href="https://codepen.io/BalintFerenczy/pen/KwdoyEN" rel="noopener noreferrer"&gt;the CodePen&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Idea
&lt;/h2&gt;

&lt;p&gt;The whole effect relies on something called a displacement map. Here's the gist: you take an image (or in our case, a border), and you use another image to push its pixels around. Wherever the "pusher" image is bright, pixels move one way. Where it's dark, they move the other way.&lt;/p&gt;

&lt;p&gt;But we don't want static distortion. We want it to look alive. Electric. So we animate the thing doing the pushing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turbulence: Your New Best Friend
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;feTurbulence&lt;/code&gt; is an SVG filter primitive that generates procedural noise. It's the same kind of math used to create realistic clouds, fire, and water in video games. Perlin noise, if you want to get technical.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;feTurbulence&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"turbulence"&lt;/span&gt; &lt;span class="na"&gt;baseFrequency=&lt;/span&gt;&lt;span class="s"&gt;"0.02"&lt;/span&gt; &lt;span class="na"&gt;numOctaves=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt; &lt;span class="na"&gt;result=&lt;/span&gt;&lt;span class="s"&gt;"noise1"&lt;/span&gt; &lt;span class="na"&gt;seed=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;baseFrequency&lt;/code&gt; controls how "zoomed in" the noise is. Lower values = bigger, smoother blobs. Higher values = tighter, more chaotic patterns. &lt;code&gt;numOctaves&lt;/code&gt; adds detail layers. More octaves = more complexity, but also more computation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Animation Trick
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. We generate four separate noise patterns and animate their positions using &lt;code&gt;feOffset&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;feOffset&lt;/span&gt; &lt;span class="na"&gt;in=&lt;/span&gt;&lt;span class="s"&gt;"noise1"&lt;/span&gt; &lt;span class="na"&gt;dx=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt; &lt;span class="na"&gt;dy=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt; &lt;span class="na"&gt;result=&lt;/span&gt;&lt;span class="s"&gt;"offsetNoise1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;animate&lt;/span&gt; &lt;span class="na"&gt;attributeName=&lt;/span&gt;&lt;span class="s"&gt;"dy"&lt;/span&gt; &lt;span class="na"&gt;values=&lt;/span&gt;&lt;span class="s"&gt;"700; 0"&lt;/span&gt; &lt;span class="na"&gt;dur=&lt;/span&gt;&lt;span class="s"&gt;"6s"&lt;/span&gt; &lt;span class="na"&gt;repeatCount=&lt;/span&gt;&lt;span class="s"&gt;"indefinite"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/feOffset&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two patterns scroll vertically (one up, one down). Two scroll horizontally. When you blend them together, you get this churning, roiling motion. It's not random flicker—it's structured chaos.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;feComposite&lt;/code&gt; and &lt;code&gt;feBlend&lt;/code&gt; operations combine these moving noise layers. Using &lt;code&gt;color-dodge&lt;/code&gt; as the blend mode makes the bright areas really pop, which intensifies the electric feel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying the Distortion
&lt;/h2&gt;

&lt;p&gt;Finally, &lt;code&gt;feDisplacementMap&lt;/code&gt; takes our original border and warps it according to the combined noise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;feDisplacementMap&lt;/span&gt; &lt;span class="na"&gt;in=&lt;/span&gt;&lt;span class="s"&gt;"SourceGraphic"&lt;/span&gt; &lt;span class="na"&gt;in2=&lt;/span&gt;&lt;span class="s"&gt;"combinedNoise"&lt;/span&gt; &lt;span class="na"&gt;scale=&lt;/span&gt;&lt;span class="s"&gt;"30"&lt;/span&gt; &lt;span class="na"&gt;xChannelSelector=&lt;/span&gt;&lt;span class="s"&gt;"R"&lt;/span&gt; &lt;span class="na"&gt;yChannelSelector=&lt;/span&gt;&lt;span class="s"&gt;"B"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;scale&lt;/code&gt; value determines how aggressive the distortion is. 30 gives us a nice visible wobble without going overboard. The channel selectors (&lt;code&gt;R&lt;/code&gt; for X displacement, &lt;code&gt;B&lt;/code&gt; for Y) just pick which color channels from the noise control which direction of movement.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Glow Stack
&lt;/h2&gt;

&lt;p&gt;The electric border alone would look flat. The glow layers sell the effect.&lt;/p&gt;

&lt;p&gt;We've got the main distorted border, then two additional borders on top with increasing blur:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.glow-layer-1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.glow-layer-2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4px&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;These aren't distorted—they're static. But layered over the animated border, they create a soft halo that makes the whole thing feel luminous.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Overlays
&lt;/h2&gt;

&lt;p&gt;Two gradient overlays with &lt;code&gt;mix-blend-mode: overlay&lt;/code&gt; add highlights. They're scaled up slightly and heavily blurred, so they spill outside the card boundaries. This creates that "light is escaping" vibe.&lt;/p&gt;

&lt;p&gt;The background glow (&lt;code&gt;filter: blur(32px)&lt;/code&gt;) sits behind everything at low opacity, casting a subtle colored shadow onto the dark background. It grounds the effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Works
&lt;/h2&gt;

&lt;p&gt;The human eye is drawn to movement and contrast. This effect has both. The border never sits still, and the glow creates strong contrast against the dark background.&lt;/p&gt;

&lt;p&gt;And because the distortion is based on continuous noise rather than random jitter, it feels organic. Natural, almost. Like actual electricity arcing along a wire, not a GIF on loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Note
&lt;/h2&gt;

&lt;p&gt;This effect is GPU-accelerated in modern browsers, but it's not free. Four turbulence generators running simultaneously, blended together, feeding a displacement map—that's real work. On older devices or if you're running many of these, you might notice some heat.&lt;/p&gt;

&lt;p&gt;For a single hero card? Totally fine. For a hundred items in a list? Maybe reconsider.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Original effect by &lt;a href="https://x.com/BalintFerenczy/status/1958095151966105971" rel="noopener noreferrer"&gt;@BalintFerenczy&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Oh, Nice Repo!</title>
      <dc:creator>Behnam Azimi</dc:creator>
      <pubDate>Mon, 08 Dec 2025 08:25:08 +0000</pubDate>
      <link>https://dev.to/behnam_azimi_9335d5b42517/oh-nice-repo-3bgp</link>
      <guid>https://dev.to/behnam_azimi_9335d5b42517/oh-nice-repo-3bgp</guid>
      <description>&lt;p&gt;Finding &lt;strong&gt;new&lt;/strong&gt; and exciting libraries on GitHub can be noisy. The standard "Trending" tab is great, but it often shows old repositories that just happened to get a random spike in activity today.&lt;/p&gt;

&lt;p&gt;I wanted more control. I wanted to see projects that were created &lt;em&gt;recently&lt;/em&gt; (like in the last week) but are already gaining traction.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;OhNiceRepo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;This is a simple web app that connects to the GitHub API to help you discover rising stars. Instead of a generic list, it lets you filter specifically by &lt;strong&gt;language&lt;/strong&gt; &lt;strong&gt;creation date&lt;/strong&gt; and &lt;strong&gt;star count&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, you can search for &lt;strong&gt;"TypeScript repositories created in the last 7 days with at least 100 stars."&lt;/strong&gt; This filters out the ancient libraries and leaves you with the fresh, trending gems that are actually new.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;The project is fully open source. If you want to find some new libraries to play with, or if you just want to see how the code handles the GitHub API, check it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://ohnicerepo.pages.dev/" rel="noopener noreferrer"&gt;https://ohnicerepo.pages.dev/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/behnamazimi/ohnicerepo" rel="noopener noreferrer"&gt;https://github.com/behnamazimi/ohnicerepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please show your support and drop a star on the GitHub repo! Your star counts a ton, and hey, maybe it'll help &lt;strong&gt;OhNiceRepo&lt;/strong&gt; itself get featured in someone else's list of &lt;em&gt;nice&lt;/em&gt; repos! ⭐&lt;/p&gt;

&lt;p&gt;Happy discovering! 👩‍💻&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>There is a Better Way to Discover Trending GitHub Repos 🚀</title>
      <dc:creator>Behnam Azimi</dc:creator>
      <pubDate>Sat, 06 Dec 2025 07:58:53 +0000</pubDate>
      <link>https://dev.to/behnam_azimi_9335d5b42517/there-is-a-better-way-to-discover-trending-github-repos-3285</link>
      <guid>https://dev.to/behnam_azimi_9335d5b42517/there-is-a-better-way-to-discover-trending-github-repos-3285</guid>
      <description>&lt;p&gt;Finding &lt;strong&gt;new&lt;/strong&gt; and exciting libraries on GitHub can be noisy. The standard "Trending" tab is great, but it often shows old repositories that just happened to get a random spike in activity today.&lt;/p&gt;

&lt;p&gt;I wanted more control. I wanted to see projects that were created &lt;em&gt;recently&lt;/em&gt; (like in the last week) but are already gaining traction.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;OhNiceRepo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;This is a simple web app that connects to the GitHub API to help you discover rising stars. Instead of a generic list, it lets you filter specifically by &lt;strong&gt;language&lt;/strong&gt; &lt;strong&gt;creation date&lt;/strong&gt; and &lt;strong&gt;star count&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, you can search for &lt;strong&gt;"TypeScript repositories created in the last 7 days with at least 100 stars."&lt;/strong&gt; This filters out the ancient libraries and leaves you with the fresh, trending gems that are actually new.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;The project is fully open source. If you want to find some new libraries to play with, or if you just want to see how the code handles the GitHub API, check it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://ohnicerepo.pages.dev/" rel="noopener noreferrer"&gt;https://ohnicerepo.pages.dev/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/behnamazimi/ohnicerepo" rel="noopener noreferrer"&gt;https://github.com/behnamazimi/ohnicerepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please show your support and drop a star on the GitHub repo! Your star counts a ton, and hey, maybe it'll help &lt;strong&gt;OhNiceRepo&lt;/strong&gt; itself get featured in someone else's list of &lt;em&gt;nice&lt;/em&gt; repos! ⭐&lt;/p&gt;

&lt;p&gt;Happy discovering! 👩‍💻&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>There is a Better Way to Discover Trending GitHub Repos 🚀</title>
      <dc:creator>Behnam Azimi</dc:creator>
      <pubDate>Fri, 05 Dec 2025 17:58:30 +0000</pubDate>
      <link>https://dev.to/behnam_azimi_9335d5b42517/i-built-a-better-way-to-discover-trending-github-repos-3oeg</link>
      <guid>https://dev.to/behnam_azimi_9335d5b42517/i-built-a-better-way-to-discover-trending-github-repos-3oeg</guid>
      <description>&lt;p&gt;Finding &lt;strong&gt;new&lt;/strong&gt; and exciting libraries on GitHub can be noisy. The standard "Trending" tab is great, but it often shows old repositories that just happened to get a random spike in activity today.&lt;/p&gt;

&lt;p&gt;I wanted more control. I wanted to see projects that were created &lt;em&gt;recently&lt;/em&gt; (like in the last week) but are already gaining traction.&lt;/p&gt;

&lt;p&gt;So, I built &lt;strong&gt;OhNiceRepo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzwh5zpesaebjzublite.jpg" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;This is a simple web app that connects to the GitHub API to help you discover rising stars. Instead of a generic list, it lets you filter specifically by &lt;strong&gt;language&lt;/strong&gt; &lt;strong&gt;creation date&lt;/strong&gt; and &lt;strong&gt;star count&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, you can search for &lt;strong&gt;"TypeScript repositories created in the last 7 days with at least 100 stars."&lt;/strong&gt; This filters out the ancient libraries and leaves you with the fresh, trending gems that are actually new.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;The project is fully open source. If you want to find some new libraries to play with, or if you just want to see how the code handles the GitHub API, check it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://ohnicerepo.pages.dev/" rel="noopener noreferrer"&gt;https://ohnicerepo.pages.dev/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/behnamazimi/ohnicerepo" rel="noopener noreferrer"&gt;https://github.com/behnamazimi/ohnicerepo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please show your support and drop a star on the GitHub repo! Your star counts a ton, and hey, maybe it'll help &lt;strong&gt;OhNiceRepo&lt;/strong&gt; itself get featured in someone else's list of &lt;em&gt;nice&lt;/em&gt; repos! ⭐&lt;/p&gt;

&lt;p&gt;Happy discovering! 👩‍💻&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>news</category>
    </item>
    <item>
      <title>Stop Saying "This Pull Request is Too Big"</title>
      <dc:creator>Behnam Azimi</dc:creator>
      <pubDate>Mon, 09 Jun 2025 07:56:47 +0000</pubDate>
      <link>https://dev.to/behnam_azimi_9335d5b42517/stop-saying-this-pull-request-is-too-big-noe</link>
      <guid>https://dev.to/behnam_azimi_9335d5b42517/stop-saying-this-pull-request-is-too-big-noe</guid>
      <description>&lt;p&gt;"Could you make this PR (MR) smaller?", that’s either me leaving the comment (again) or just thinking it silently because I’m too drained to say it for the hundredth time!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb4b0u2zxe7dksakfgf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcb4b0u2zxe7dksakfgf5.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes I have to keep repeating this same feedback like a broken record. Not because I love being that person (trust me, I don’t!) but because everybody knows those large pull/merge requests are a real pain in the ass. They’re more likely to break things, hard to review, and they’re just not fun to deal with.&lt;/p&gt;

&lt;p&gt;The truth is, just telling people "keep it small" is not working. I mean, what’s “small” anyway? 🤔&lt;/p&gt;

&lt;p&gt;Along this process I realized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What’s small for a docs update might be huge for an auth system change
&lt;/li&gt;
&lt;li&gt;It can vary per person, what I think is a medium PR might be a small one for someone else
&lt;/li&gt;
&lt;li&gt;Different codebases need different size definitions&lt;/li&gt;
&lt;li&gt;Without actual and automated agreements, we’re just throwing words around
&lt;/li&gt;
&lt;li&gt;Nobody wants to be the "size police"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Size Matter Though?
&lt;/h2&gt;

&lt;p&gt;Because big PRs create problems. They slow teams down, make bugs harder to find, and increase risk.&lt;/p&gt;

&lt;p&gt;Think about reviewing code like proofreading a document. Would you rather:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review 10 pages, one chapter at a time
&lt;/li&gt;
&lt;li&gt;Or get handed a 100-page document with "just a few changes"?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yeah, I thought so.&lt;/p&gt;

&lt;p&gt;When PRs are smaller:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your teammates actually review them (and faster too!) instead of rubber-stamping approvals
&lt;/li&gt;
&lt;li&gt;The feedback is way better because reviewers aren’t exhausted
&lt;/li&gt;
&lt;li&gt;It’s easier to spot potential issues
&lt;/li&gt;
&lt;li&gt;If something goes wrong, it’s quicker to fix&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So I Built Something to Help 🛠️
&lt;/h2&gt;

&lt;p&gt;After dealing with this over and over, I decided to build a tool to help teams actually define and measure what "too big" means for their pull/merge requests.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/behnamazimi/pr-sizewise" rel="noopener noreferrer"&gt;&lt;strong&gt;pr-sizewise&lt;/strong&gt;&lt;/a&gt;, a CLI tool that measures and reports pull request sizes for GitHub and GitLab, helping teams maintain manageable code changes. I know there are a few existing tools for this already, but this one has its own uniqueness. (And it was an interesting idea to keep yourself busy on a rainy weekend! ⛈️)&lt;/p&gt;

&lt;p&gt;With SizeWise:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;You define what "big" means&lt;/strong&gt;, by setting your own limits for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of lines changed
&lt;/li&gt;
&lt;li&gt;Number of files modified
&lt;/li&gt;
&lt;li&gt;Directories affected
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Supports both GitHub and GitLab&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Smooth setup and configuration&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To get the full value out of it, not just installing it as an automation tool that gets forgotten in a few months, I recommend these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get your team together and define thresholds that feels right&lt;/li&gt;
&lt;li&gt;Start with bigger limits (you can always tighten them later)
&lt;/li&gt;
&lt;li&gt;Share some wins when people make nice, small PRs
&lt;/li&gt;
&lt;li&gt;Figure out what to do when someone really needs to make a big change (it happens!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes you need bigger PRs, like when you're updating all your dependencies or doing a major refactor. That’s okay! Just give your team a heads-up, break it down into reviewable chunks if you can, and add extra context to help reviewers. It's way safer to ship a large PR like this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give SizeWise a Try
&lt;/h2&gt;

&lt;p&gt;I’d love to hear how this works for your team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What size limits make sense for you?
&lt;/li&gt;
&lt;li&gt;How do you handle different types of changes?
&lt;/li&gt;
&lt;li&gt;What would make this even more useful?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you see it as a useful tool, a quick star on GitHub would mean a lot!&lt;/p&gt;

&lt;p&gt;⭐️ &lt;a href="https://github.com/behnamazimi/pr-sizewise" rel="noopener noreferrer"&gt;https://github.com/behnamazimi/pr-sizewise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, it’s not about being strict. It’s about making life easier for everyone.&lt;/p&gt;

&lt;p&gt;Because at the end of the day, we all just want to ship good code without the drama. 🚀&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>dx</category>
      <category>cli</category>
      <category>githubactions</category>
    </item>
  </channel>
</rss>
