<?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: Jyoti Prajapati</title>
    <description>The latest articles on Forem by Jyoti Prajapati (@techsorter).</description>
    <link>https://forem.com/techsorter</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%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png</url>
      <title>Forem: Jyoti Prajapati</title>
      <link>https://forem.com/techsorter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/techsorter"/>
    <language>en</language>
    <item>
      <title>Why I Built an AI "Agent" to Handle My PR Reviews (And You Should Too)</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Tue, 03 Mar 2026 11:24:57 +0000</pubDate>
      <link>https://forem.com/techsorter/why-i-built-an-ai-agent-to-handle-my-pr-reviews-and-you-should-too-3jnm</link>
      <guid>https://forem.com/techsorter/why-i-built-an-ai-agent-to-handle-my-pr-reviews-and-you-should-too-3jnm</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Hook&lt;/strong&gt;&lt;br&gt;
In 2024, we were impressed when AI could write a function. In 2025, we got used to "Copilots." But in 2026, the real power lies in &lt;em&gt;&lt;strong&gt;Agentic Workflows&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I got tired of the "ping-pong" game of PR reviews—linting errors, missing tests, and architectural inconsistencies that a human shouldn't have to waste time pointing out. So, I stopped using AI as a chatbot and started using it as an &lt;strong&gt;&lt;em&gt;Agent&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Shift: Autocomplete vs. Agents&lt;/strong&gt;&lt;br&gt;
The biggest mistake devs make is treating an LLM like a search engine.&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%2Fm9pwm5u9nwp2w7j7udg5.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%2Fm9pwm5u9nwp2w7j7udg5.png" alt="Autocomplete vs. Agents" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autocomplete (Old):&lt;/strong&gt; You write function, AI suggests the rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agentic (2026):&lt;/strong&gt; You give a goal ("Review this PR for security vulns and run the test suite"), and the Agent decides which tools to call, executes them, and reports back.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. The "Agentic Loop" Workflow&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%2F2ts0qd5a7b17ndkzb7pe.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%2F2ts0qd5a7b17ndkzb7pe.png" alt="The " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My agent follows a 4-step loop:&lt;br&gt;
&lt;strong&gt;1. Analyze:&lt;/strong&gt; It reads the git diff.&lt;br&gt;
&lt;strong&gt;2. Reason:&lt;/strong&gt; It asks: "Do I need more context?" If yes, it calls a tool to read the &lt;em&gt;README.md&lt;/em&gt;.&lt;br&gt;
&lt;strong&gt;3. Execute:&lt;/strong&gt; It runs the local test suite. If tests fail, it doesn't just tell me - it &lt;em&gt;suggests the fix&lt;/em&gt; and re-runs the test.&lt;br&gt;
&lt;strong&gt;4. Finalize:&lt;/strong&gt; It posts a summary comment on GitHub with a "Ready for Human" badge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Secret Sauce: The System Prompt&lt;/strong&gt;&lt;br&gt;
To get high-quality reviews, you have to move past "Review this code." I use a persona-based prompt:&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%2F16h4vf9i55climf6d26i.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%2F16h4vf9i55climf6d26i.png" alt="The System Prompt" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt: Senior PR Architect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Goal&lt;/strong&gt;: Review the provided git diff for logical errors and security vulnerabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Constraint&lt;/strong&gt;: Do NOT comment on linting or formatting. Focus ONLY on logic and edge cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;: If 'Safe', provide a 3-bullet summary. If 'Unsafe', provide the exact line number and a fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The Result: 40% Less "Nitpicking"&lt;/strong&gt;&lt;br&gt;
Since deploying this internally, my total review time dropped from 24 hours to under 2 hours. Banality is gone; we only discuss high-level architecture now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Don't just code, Orchestrate.&lt;br&gt;
The "10x Engineer" of 2026 isn't the one who writes code the fastest. It's the one who builds the best agents to manage the "grunt work" of the SDLC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you worried about AI Agents having write-access to your repos, or is the productivity gain worth the risk? Let’s discuss below!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What you use?</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Thu, 12 Feb 2026 06:20:19 +0000</pubDate>
      <link>https://forem.com/techsorter/what-you-use-13f9</link>
      <guid>https://forem.com/techsorter/what-you-use-13f9</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/techsorter" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png" alt="techsorter"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/techsorter/bridging-the-gap-navigating-rtsp-vs-webrtc-in-cloud-video-pipelines-2m5d" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Bridging the Gap: Navigating RTSP vs. WebRTC in Cloud Video Pipelines&lt;/h2&gt;
      &lt;h3&gt;Jyoti Prajapati ・ Feb 11&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#architecture&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webrtc&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#kafka&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>architecture</category>
      <category>webrtc</category>
      <category>kafka</category>
      <category>devops</category>
    </item>
    <item>
      <title>Bridging the Gap: Navigating RTSP vs. WebRTC in Cloud Video Pipelines</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Wed, 11 Feb 2026 14:04:30 +0000</pubDate>
      <link>https://forem.com/techsorter/bridging-the-gap-navigating-rtsp-vs-webrtc-in-cloud-video-pipelines-2m5d</link>
      <guid>https://forem.com/techsorter/bridging-the-gap-navigating-rtsp-vs-webrtc-in-cloud-video-pipelines-2m5d</guid>
      <description>&lt;p&gt;In the world of cloud-based video streaming, not all "live" feeds are created equal. Depending on whether you're dealing with a legacy industrial sensor or a modern smart doorbell, the way video moves from the edge to the cloud varies wildly.&lt;/p&gt;

&lt;p&gt;As we scale cloud surveillance and monitoring, understanding the nuances between RTSP and &lt;strong&gt;WebRTC&lt;/strong&gt;— and how to normalize them - is the difference between a seamless user experience and a high-latency nightmare.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Landscape: Camera Types and Their Native Tongues
&lt;/h2&gt;

&lt;p&gt;Different hardware is built for different environments. While enterprise cameras still rely on established standards, consumer-grade IoT devices are pushing toward web-native protocols.&lt;/p&gt;

&lt;h2&gt;
  
  
  Camera Protocol Mapping
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Standard/PTZ IP Camera&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Typical Protocol:&lt;/em&gt; RTSP&lt;br&gt;
&lt;em&gt;Ingestion Strategy:&lt;/em&gt; Direct ingestion via RTSP into the pipeline&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Video Doorbell&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Typical Protocol:&lt;/em&gt; WebRTC&lt;br&gt;
&lt;em&gt;Ingestion Strategy:&lt;/em&gt; Normalize via MediaMTX for storage/HLS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Mobile App Cameras&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Typical Protocol:&lt;/em&gt; WebRTC&lt;br&gt;
&lt;em&gt;Ingestion Strategy:&lt;/em&gt; Push stream to gateway for normalization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Thermal/AI Cameras&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Typical Protocol:&lt;/em&gt; RTSP&lt;br&gt;
&lt;em&gt;Ingestion Strategy:&lt;/em&gt; Standard RTSP ingestion for heavy analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Showdown: RTSP vs. WebRTC
&lt;/h2&gt;

&lt;p&gt;Choosing a protocol isn't just about what the camera supports; it’s about what your cloud architecture can handle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RTSP: The Reliable Workhorse&lt;/strong&gt;&lt;br&gt;
RTSP (Real-Time Streaming Protocol) is the "old guard." It is a pull-based protocol, meaning your cloud server requests the stream from the camera.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Universal support, incredibly simple to record (just capture the RTP packets), and rock-solid for wired environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;: Struggles with firewalls (requires NAT traversal or VPNs) and has a "baked-in" latency of 1–2 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  WebRTC: The Low-Latency Speedster
&lt;/h2&gt;

&lt;p&gt;WebRTC (Web Real-Time Communication) was designed for the modern web. It is &lt;strong&gt;push-based&lt;/strong&gt; and optimized for sub-second latency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;: Ultra-low latency (&amp;lt;500 ms), built-in encryption, and handles fluctuating Wi-Fi speeds beautifully thanks to adaptive bitrate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;: It’s "chatty." It doesn't have a simple URL you can just plug into a player. It requires a gateway (like MediaMTX) to convert it into a format suitable for long-term storage or HLS distribution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strategy: Building a Unified Cloud Pipeline
&lt;/h2&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%2Foi754gzudszw1ozt9ncm.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%2Foi754gzudszw1ozt9ncm.png" alt="Cloud Video Streaming Pipeline" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You shouldn't have to build two different clouds just because you have two different cameras. The goal is normalization.&lt;/p&gt;

&lt;p&gt;Whether the video starts as an RTSP pull or a WebRTC push, it should end up in a unified format for your users and your AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Recommended Workflow&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For RTSP Feeds:&lt;/strong&gt; Pull the stream directly into your cloud ingestor. Convert to HLS for multi-device live viewing and store the raw packets for VOD (Video on Demand).&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;For WebRTC Feeds:&lt;/strong&gt; Use a media server (like MediaMTX) as a gateway. This "normalizes" the WebRTC stream, transcoding or repackaging it into HLS or RTSP.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Analytics Layer:&lt;/strong&gt; Once normalized, feed the stream into your AI/ML pipeline for motion detection, object recognition, or thermal alerts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; If you are building for smart home devices or mobile apps, start with WebRTC. The ability to pierce through home firewalls without complex port forwarding is a game-changer for user setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conclusion&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
There is no "winner" in the RTSP vs. WebRTC debate—only the right tool for the job. RTSP remains the king of stable, wired surveillance, while WebRTC is the undisputed champion of interactive, low-latency smart devices. By using a normalization gateway in your pipeline, you can support both without doubling your engineering effort.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Comment below if You find this Interesting. In the Next I will show you can setup the MediaMTX for the RTSP and WebRTC Stream.&lt;/em&gt; &lt;/p&gt;

</description>
      <category>architecture</category>
      <category>webrtc</category>
      <category>kafka</category>
      <category>devops</category>
    </item>
    <item>
      <title>Weekend plans</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Fri, 06 Feb 2026 13:53:47 +0000</pubDate>
      <link>https://forem.com/techsorter/weekend-plans-iln</link>
      <guid>https://forem.com/techsorter/weekend-plans-iln</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/techsorter" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png" alt="techsorter"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/techsorter/monday-morning-is-a-trap-my-10-minute-sunday-reset-for-a-frictionless-week-49pk" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Monday Morning is a Trap. My 10-Minute “Sunday Reset” for a Frictionless Week ☕&lt;/h2&gt;
      &lt;h3&gt;Jyoti Prajapati ・ Feb 6&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tooling&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>productivity</category>
      <category>tooling</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>Monday Morning is a Trap. My 10-Minute “Sunday Reset” for a Frictionless Week ☕</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Fri, 06 Feb 2026 13:52:31 +0000</pubDate>
      <link>https://forem.com/techsorter/monday-morning-is-a-trap-my-10-minute-sunday-reset-for-a-frictionless-week-49pk</link>
      <guid>https://forem.com/techsorter/monday-morning-is-a-trap-my-10-minute-sunday-reset-for-a-frictionless-week-49pk</guid>
      <description>&lt;p&gt;It’s Friday. You’re likely staring at a messy IDE, a terminal with 12 dead tabs, and a brain that is 90% in "Weekend Mode."&lt;/p&gt;

&lt;p&gt;The standard hustle-culture advice? "Start a weekend project! Build a SaaS! Grind LeetCode!"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My Senior-level advice? Don't.&lt;/strong&gt; In 2026, the &lt;em&gt;gap&lt;/em&gt; between a "&lt;em&gt;Burnt Out"&lt;/em&gt; developer and a "&lt;em&gt;High-Performer&lt;/em&gt;" isn't about how many hours they spend coding on &lt;em&gt;Saturday&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;It’s about how much cognitive friction they remove before Monday morning. I call this the Sunday Reset. It takes 10 minutes, and it saves me 10 hours of "&lt;strong&gt;Monday Fog&lt;/strong&gt;."&lt;/p&gt;

&lt;p&gt;Here are the &lt;strong&gt;&lt;em&gt;4 specific resets&lt;/em&gt;&lt;/strong&gt; I do to make sure Monday morning feels like a downhill sprint.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Agent Health-Check (Cursor + Roo Code) 🤖
&lt;/h2&gt;

&lt;p&gt;By Friday, your AI Agent has probably "learned" a bunch of temporary hacks you used to fix bugs during the week. If you don't reset its context, it will keep suggesting those same hacks on Monday, even for new features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Reset:&lt;/strong&gt; Clear your "Composer" or Chat history. Update your &lt;em&gt;.cursorrules&lt;/em&gt; (or global instructions). If you discovered a specific architectural pattern that worked this week, hard-code it into your agent's instructions now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Payoff:&lt;/strong&gt; On Monday, you aren't fighting your AI; you're working with an assistant that actually remembers your current "Best Practices."&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Senior Tip:&lt;/strong&gt; Treat your AI Agent like a Junior Dev. If you don't give it a clear brief after a weekend break, it will hallucinate.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Latency Purge (Ghostty Terminal) 👻
&lt;/h2&gt;

&lt;p&gt;We spend 8 hours a day in the CLI. If your terminal has even 20ms of input lag, you are draining your mental battery without realizing it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Reset:&lt;/strong&gt; Kill all those "&lt;em&gt;ghost&lt;/em&gt;" processes from Friday. I’ve switched entirely to &lt;em&gt;Ghostty&lt;/em&gt; (the GPU-accelerated terminal) because it’s the only thing that keeps up with 2026-level workflows. Reset your tabs. Close your SSH sessions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Payoff:&lt;/strong&gt; A fresh, snappy terminal. It sounds small, but "zero-latency" typing is the fastest way to get back into the &lt;strong&gt;Flow State&lt;/strong&gt; after 48 hours away.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. The "Local First" Fallback (Ollama + DeepSeek) 🏠
&lt;/h2&gt;

&lt;p&gt;Monday mornings are notorious for "Service Outages." If your productivity depends entirely on a *&lt;em&gt;cloud API *&lt;/em&gt;(OpenAI/Anthropic) and they go down, your morning is wasted.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Reset:&lt;/strong&gt; Ensure your local &lt;strong&gt;Ollama&lt;/strong&gt; instance is running and has the latest weights for a lightweight, high-performance model (like &lt;em&gt;Llama 3.3 or DeepSeek-V3&lt;/em&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Payoff:&lt;/strong&gt; If the internet is spotty or the cloud is lagging on Monday, you have a private, instant "Brain" on your local machine. No excuses.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The "One-Command" Environment (Nix / Devenv) ❄️
&lt;/h2&gt;

&lt;p&gt;Nothing kills Monday momentum faster than: "Wait, why is my Node version wrong?" or "The database container won't start."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Reset:&lt;/strong&gt; Run &lt;em&gt;devenv up&lt;/em&gt; or your Nix shell command once on Sunday evening. Just once. Make sure the environment mounts and the dependencies are cached.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Payoff:&lt;/strong&gt; When you &lt;em&gt;cd&lt;/em&gt; into your project on Monday, you aren't a "System Administrator." You're a Developer.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The 10-Minute Challenge&lt;/em&gt;&lt;/strong&gt;&lt;br&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%2F8tz2kq9nt15frpavsc8p.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%2F8tz2kq9nt15frpavsc8p.jpg" alt="Sunday Reset" width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
This weekend, don't build a new app. Sharpen your tools instead.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prune&lt;/strong&gt; your AI instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Purge&lt;/strong&gt; your terminal processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync&lt;/strong&gt; your local LLMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test&lt;/strong&gt; your dev environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monday morning you won't be "&lt;strong&gt;booting up&lt;/strong&gt;." You'll be executing.&lt;/p&gt;

&lt;p&gt;What’s one "&lt;strong&gt;tiny friction&lt;/strong&gt;" in your workflow that’s been bugging you all week? Let’s solve it in the &lt;strong&gt;comments&lt;/strong&gt;. 👇&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tooling</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>Blog #4 How the word "Bank" knows what it means: Self-Attention explained intuitively</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Tue, 27 Jan 2026 13:43:47 +0000</pubDate>
      <link>https://forem.com/techsorter/transformer-series-blog-4-how-the-word-bank-knows-what-it-means-self-attention-explained-1dmc</link>
      <guid>https://forem.com/techsorter/transformer-series-blog-4-how-the-word-bank-knows-what-it-means-self-attention-explained-1dmc</guid>
      <description>&lt;p&gt;Welcome back to the &lt;strong&gt;Transformer Series&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Blog #3&lt;/strong&gt;, we gave our Transformer a sense of "Time" using Positional Encoding. It now knows the order of words. But even with order, words are still fundamentally lonely.&lt;/p&gt;

&lt;p&gt;If I just say the word "&lt;strong&gt;Bank&lt;/strong&gt;," what comes to mind?&lt;/p&gt;

&lt;p&gt;A place to store your money? 🏦&lt;/p&gt;

&lt;p&gt;The edge of a river? 🛶&lt;/p&gt;

&lt;p&gt;As a human, you don't even think about this ambiguity. You instantly look at the surrounding words to decide:&lt;/p&gt;

&lt;p&gt;"I went to the &lt;strong&gt;bank&lt;/strong&gt; to &lt;strong&gt;deposit a check&lt;/strong&gt;." (&lt;em&gt;Money context&lt;/em&gt;) "I sat on the &lt;strong&gt;bank&lt;/strong&gt; and &lt;strong&gt;watched the river flow&lt;/strong&gt;." (&lt;em&gt;Nature context&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;Before Transformers, older models struggled with this. They often treated the word "Bank" the same way regardless of the sentence.&lt;/p&gt;

&lt;p&gt;The Transformer solves this with &lt;em&gt;Self-Attention&lt;/em&gt;. It’s the mechanism that allows the word "Bank" to "look around" at the other words in the sentence and update its own meaning based on who it is hanging out with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Context Crisis: Why we needed a revolution
&lt;/h2&gt;

&lt;p&gt;In the early days of NLP, we had a "memory" problem.&lt;/p&gt;

&lt;p&gt;Models like &lt;strong&gt;RNNs&lt;/strong&gt; (Recurrent Neural Networks) and &lt;strong&gt;LSTMs&lt;/strong&gt; were like readers who had a very short attention span. They &lt;strong&gt;read&lt;/strong&gt; from &lt;strong&gt;left to right&lt;/strong&gt;, one word at a time. By the time they reached the end of a long sentence, the "state" of the first few words had started to fade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imagine reading this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"The &lt;strong&gt;cat&lt;/strong&gt;, which was chased by the neighbor's massive, loud, and energetic dog that always escapes its yard, &lt;strong&gt;ran&lt;/strong&gt; up the tree."&lt;/p&gt;

&lt;p&gt;An RNN might struggle to remember that "ran" refers to the "cat" and not the "dog" because so much "noise" happened in between.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-Attention changed everything&lt;/strong&gt;. It said: "Stop reading in order. Let every word look at every other word, all at once."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Deep Dive:  How the "Search Engine" Math Works&lt;/strong&gt;&lt;br&gt;
To make this happen, we don't just use one vector per word. We use three. &lt;br&gt;
For every input word, we generate a &lt;strong&gt;Query (Q), a Key (K), and a Value (V)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These aren't magic; they are created by multiplying our input embedding by three weight matrices ($W^Q, W^K, W^V$) that the model learns during training.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Query (Q)&lt;/strong&gt;: The "Ask"Think of this as the word's "Personal Interest Profile." The word "&lt;strong&gt;Bank&lt;/strong&gt;" sends out a Query: "I am looking for anything related to finance or geography."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Key (K):&lt;/strong&gt; The "&lt;strong&gt;Label&lt;/strong&gt;" Every word in the sentence has a Key. It’s like a metadata tag. The word "&lt;strong&gt;Deposit&lt;/strong&gt;" has a Key that says: "I am a financial action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Score: The "Compatibility Test&lt;/strong&gt;&lt;br&gt;
We take the &lt;strong&gt;Query&lt;/strong&gt; of "Bank" and the &lt;strong&gt;Key&lt;/strong&gt; of "Deposit" and do a &lt;strong&gt;Dot Product&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If they are highly related, the number is huge.&lt;/li&gt;
&lt;li&gt;If they are unrelated (like "Bank" and "The"), the number is near zero.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Score = Q.K^T
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;4. The Softmax: The "Attention Filter"&lt;/strong&gt;&lt;br&gt;
We take all those scores and pass them through a &lt;strong&gt;Softmax&lt;/strong&gt; function. This turns the scores into probabilities that add up to 100%.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deposit&lt;/strong&gt;: 0.85&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The&lt;/strong&gt;: 0.02&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check&lt;/strong&gt;: 0.13
This tells the model: "When processing 'Bank', spend 85% of your energy looking at 'Deposit'."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. The Value (V): The "Payload"&lt;/strong&gt;&lt;br&gt;
Finally, we multiply our percentages by the Value vectors. The Value is the actual information the word carries. We sum them up, and &lt;strong&gt;BAM&lt;/strong&gt; — we have a new, "Context-Aware" version of the word "Bank."&lt;/p&gt;

&lt;p&gt;Below is one more example for Q, K, and V:&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%2Fu6vtcn2tbio1i0kmc81y.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%2Fu6vtcn2tbio1i0kmc81y.png" alt="Q, K, V concept" width="785" height="912"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "Scaling" Secret: Why we divide by &lt;strong&gt;sqrt(d_k)&lt;/strong&gt; You’ll often see this in the official formula:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attention (Q, K, V) = softmax((QK^T)\sqrt(d_k))V
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Technical "Senior" Tip:&lt;/strong&gt; Why the division?&lt;br&gt;
As the dimensionality (d_k) of our vectors grows, the dot product QK^T can grow very large in magnitude. When these values are huge, the softmax function gets pushed into regions where the gradient is extremely small (the "vanishing gradient" problem). By scaling down by sqrt(d_k), we keep the math stable and ensure the model can actually learn.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Code: A Raw Implementation&lt;/strong&gt;&lt;br&gt;
As a developer, you don't really understand it until you see the shapes. Here is how you would write this in PyTorch (without the abstractions):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import torch
import torch.nn.functional as F

def basic_self_attention(q, k, v):
    # q, k, v are of shape [batch_size, seq_len, d_k]
    d_k = q.size(-1)

    # 1. Compute scores (Matrix multiplication)
    # [batch, seq_len, seq_len]
    scores = torch.matmul(q, k.transpose(-2, -1)) 

    # 2. Scale
    scores = scores / torch.sqrt(torch.tensor(d_k, dtype=torch.float32))

    # 3. Apply Softmax to get weights
    weights = F.softmax(scores, dim=-1)

    # 4. Multiply by Values
    # [batch, seq_len, d_k]
    output = torch.matmul(weights, v)

    return output, weights
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why This Architecture Won&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Total Parallelization:&lt;/strong&gt;  Unlike RNNs, which have to wait for word 1 to finish before starting word 2, Self-Attention calculates the entire sentence's relationships simultaneously. This is why we can train massive models like GPT-4 on thousands of GPUs.&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Global Reach:&lt;/strong&gt; A word at the very beginning of a 1,000-word document can "attend" to a word at the very end in a single calculation. No memory loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Self-Attention is the "Brain" of the Transformer. It's the mechanism that turns a sequence of isolated words into a cohesive, contextual map of meaning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Queries ask the questions.&lt;/li&gt;
&lt;li&gt;Keys provide the answers.&lt;/li&gt;
&lt;li&gt;Values provide the content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next up in &lt;strong&gt;Blog #5&lt;/strong&gt;: What's better than one "Attention" spotlight? Eight of them. We’re diving into &lt;strong&gt;Multi-Head Attention&lt;/strong&gt; and why "splitting your focus" is the secret to high performance.&lt;/p&gt;

&lt;p&gt;Happy Reading &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Found this deep dive useful? Bookmark it for your next interview, and let me know in the comments: What was the specific 'aha' moment for you when learning about Q, K, and V?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Mon, 26 Jan 2026 03:28:41 +0000</pubDate>
      <link>https://forem.com/techsorter/-393p</link>
      <guid>https://forem.com/techsorter/-393p</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/techsorter" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png" alt="techsorter"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/techsorter/blog-1-neural-network-fundamentals-you-must-understand-before-transformers-1953" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Transformer Series - Blog #1: Neural Network Fundamentals You Must Understand Before Transformers&lt;/h2&gt;
      &lt;h3&gt;Jyoti Prajapati ・ Jan 15&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Transformers end to end series from Zero</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Mon, 26 Jan 2026 03:28:19 +0000</pubDate>
      <link>https://forem.com/techsorter/transformers-end-to-end-series-from-zero-343l</link>
      <guid>https://forem.com/techsorter/transformers-end-to-end-series-from-zero-343l</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/techsorter" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png" alt="techsorter"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/techsorter/blog-1-neural-network-fundamentals-you-must-understand-before-transformers-1953" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Transformer Series - Blog #1: Neural Network Fundamentals You Must Understand Before Transformers&lt;/h2&gt;
      &lt;h3&gt;Jyoti Prajapati ・ Jan 15&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#machinelearning&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Great Savior for VS Code Devs</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Thu, 22 Jan 2026 12:22:15 +0000</pubDate>
      <link>https://forem.com/techsorter/great-savior-for-vs-code-devs-5ekn</link>
      <guid>https://forem.com/techsorter/great-savior-for-vs-code-devs-5ekn</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/techsorter" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3638274%2F4c1a0480-8ca4-48c7-b8c6-949ba8eb966c.png" alt="techsorter"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/techsorter/5-vs-code-extensions-i-cant-live-without-in-2026-3cnf" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;5 VS Code Extensions I Can't Live Without in 2026 🚀&lt;/h2&gt;
      &lt;h3&gt;Jyoti Prajapati ・ Jan 22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#vscode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tooling&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>5 VS Code Extensions I Can't Live Without in 2026 🚀</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Thu, 22 Jan 2026 12:19:08 +0000</pubDate>
      <link>https://forem.com/techsorter/5-vs-code-extensions-i-cant-live-without-in-2026-3cnf</link>
      <guid>https://forem.com/techsorter/5-vs-code-extensions-i-cant-live-without-in-2026-3cnf</guid>
      <description>&lt;p&gt;Let’s be honest.&lt;/p&gt;

&lt;p&gt;We all have that one folder in our brain (and our VS Code sidebar) full of extensions we installed three years ago and completely forgot about.&lt;/p&gt;

&lt;p&gt;But as a Senior Developer, I don't want more tools. I want better tools. I want extensions that stay out of my way until I need them, and then save me 30 minutes of debugging in 30 seconds.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;2026&lt;/strong&gt;, our &lt;strong&gt;workflows&lt;/strong&gt; are &lt;strong&gt;faster and more AI-driven&lt;/strong&gt; than ever. Here are the &lt;strong&gt;5 VS Code extensions&lt;/strong&gt; that have earned a permanent spot in my &lt;strong&gt;setup this year&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Error Lens 🔍
&lt;/h2&gt;

&lt;p&gt;If you install only one extension from this list, make it this one.&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%2Fun85w3zueryviw7ty5ph.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%2Fun85w3zueryviw7ty5ph.png" alt="VS Code Error Lens" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By default, &lt;strong&gt;VS Code&lt;/strong&gt; puts a tiny red squiggly line under your errors. You have to hover over it, wait for the popup, and read the tiny text. &lt;strong&gt;Error Lens&lt;/strong&gt; takes that &lt;strong&gt;error message and prints it right next to the line of code&lt;/strong&gt; in your editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why I love it&lt;/em&gt;&lt;/strong&gt;: It makes bugs impossible to ignore. It forces you to fix syntax errors immediately, rather than letting them pile up until compile time.&lt;/p&gt;

&lt;p&gt;Pro Tip: It also works great with &lt;strong&gt;linters (ESLint)&lt;/strong&gt;, so you see "&lt;strong&gt;Missing semicolon&lt;/strong&gt;" instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. GitLens — Git Supercharged ⚡
&lt;/h2&gt;

&lt;p&gt;Okay, this is a classic, but in 2026, it is non-negotiable for professional work.&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%2Fdxe3ifqy3xq9jg4k07oa.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%2Fdxe3ifqy3xq9jg4k07oa.png" alt="VS Code GitLens — Git Supercharged" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitLens gives you "X-Ray vision" into your code. The killer feature? &lt;strong&gt;Current Line Blame&lt;/strong&gt;. As soon as you click a line of code, it shows you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who wrote it.&lt;/li&gt;
&lt;li&gt;When they wrote it.&lt;/li&gt;
&lt;li&gt;The commit message associated with it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why I love it:&lt;/em&gt;&lt;/strong&gt; It stops me from asking "Who wrote this garbage?" only to realize... it was me, 6 months ago. 😅&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Pretty TypeScript Errors 💅
&lt;/h2&gt;

&lt;p&gt;If you work with TypeScript, you know the pain. You make a mistake, and VS Code throws a generic error that looks like a wall of unreadable JSON text.&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%2Fqz9fqde0pj1eikx84qj3.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%2Fqz9fqde0pj1eikx84qj3.png" alt="VS Code Pretty TypeScript Errors" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pretty TypeScript Errors &lt;strong&gt;formats&lt;/strong&gt; those &lt;strong&gt;complex type errors&lt;/strong&gt; into &lt;strong&gt;human-readable&lt;/strong&gt;, syntax-highlighted blocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Why I love it:&lt;/em&gt;&lt;/strong&gt; It turns Type 'String' is not assignable to type '{ id: number; name: string; }' into a clear visual breakdown. It saves so much mental energy when debugging complex generic types.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Console Ninja 🥷
&lt;/h2&gt;

&lt;p&gt;How many times have you written console.log(data), switched to your browser, opened DevTools, refreshed the page, and filtered the console?&lt;/p&gt;

&lt;p&gt;Console Ninja &lt;strong&gt;displays&lt;/strong&gt; your &lt;strong&gt;console.log&lt;/strong&gt; output &lt;strong&gt;right inside your VS Code editor&lt;/strong&gt;, next to the log statement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Why I love it: _&lt;/strong&gt;It keeps me in the "Flow State." I don't have to context-switch to the browser just to check if a variable is null.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Todo Tree 🌳
&lt;/h2&gt;

&lt;p&gt;As a Senior Dev, I often leave notes for myself (or my team) like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;// TODO: Refactor this later&lt;/li&gt;
&lt;li&gt;// FIXME: This crashes on empty input&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Todo Tree scans&lt;/strong&gt; your &lt;strong&gt;entire workspace&lt;/strong&gt; for these tags and &lt;strong&gt;puts them into a neat explorer tree&lt;/strong&gt; in your sidebar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Why I love it: _&lt;/strong&gt;It prevents "Technical Debt" from becoming "Technical Mystery." Before I push a PR, I check the tree to make sure I didn't leave any critical FIXME items behind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honorable Mention: The AI Assistant 🤖
&lt;/h2&gt;

&lt;p&gt;Whether you use &lt;strong&gt;GitHub Copilot or Codeium&lt;/strong&gt;, having an AI pair programmer is standard in 2026. I use it mostly for writing unit tests and generating boilerplate documentation. It’s not magic, but it’s a massive time-saver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s in your extensions.json?&lt;/strong&gt;&lt;br&gt;
These are my "Big 5," but I’m always looking to optimize. &lt;strong&gt;&lt;em&gt;What is the one VS Code extension you absolutely cannot code without?&lt;/em&gt;&lt;/strong&gt; Drop it in the comments below! 👇&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Coding!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Transformer Series - Blog #3 Positional Encoding - How Transformers Understand "Time" Without a Clock ⏳</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Wed, 21 Jan 2026 13:55:02 +0000</pubDate>
      <link>https://forem.com/techsorter/transformer-series-3-positional-encoding-how-transformers-understand-time-without-a-clock-10jp</link>
      <guid>https://forem.com/techsorter/transformer-series-3-positional-encoding-how-transformers-understand-time-without-a-clock-10jp</guid>
      <description>&lt;p&gt;Welcome back to the Transformer Series! 👋&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Blog #2&lt;/strong&gt;, we turned words into numbers (Embeddings). We took the word "King" and turned it into a vector of numbers that captures its meaning.&lt;/p&gt;

&lt;p&gt;But we have a massive problem.&lt;/p&gt;

&lt;p&gt;Transformers are designed to be fast. Unlike their predecessors (RNNs), which read a sentence one word at a time (left-to-right), Transformers gulp down the entire sentence in one go.&lt;/p&gt;

&lt;p&gt;This &lt;strong&gt;Parallel Processing&lt;/strong&gt; is great for speed, but terrible for context.&lt;/p&gt;

&lt;p&gt;If you feed the sentence "The dog bit the man" into a Transformer without help, it sees the exact same input as "The man bit the dog." It’s just a bag of words floating in space. It knows who is involved, but it has no idea who did what because it has lost the concept of &lt;strong&gt;Order&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today, we are going to fix that using one of the smartest tricks in Deep Learning: &lt;strong&gt;Positional Encoding&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: The "Shuffled Book"
&lt;/h2&gt;

&lt;p&gt;Imagine I hand you a book, but I’ve torn out all the pages and shuffled them. You can still read the individual sentences and understand the topics (Embeddings), but you can’t follow the story (Sequence).&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%2Fa1su7w2p571qcm1opair.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%2Fa1su7w2p571qcm1opair.png" alt="Positional Encoding" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RNNs (Old School):&lt;/strong&gt; They read page 1, then page 2, then page 3. They know the order implicitly because they process things sequentially.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transformers (New School):&lt;/strong&gt; They look at all the pages at the exact same time.&lt;/p&gt;

&lt;p&gt;To fix this, we need to write the page number on every single page before we throw them into the pile. That is exactly what Positional Encoding is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attempt #1: The Naive Approach (Integers)&lt;/strong&gt; ❌&lt;br&gt;
Why don't we just add a simple number to each word?&lt;/p&gt;

&lt;p&gt;"The" = 1&lt;/p&gt;

&lt;p&gt;"Dog" = 2&lt;/p&gt;

&lt;p&gt;"Bit" = 3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Issue:&lt;/strong&gt; If your sentence is 5 words long, the last number is 5. If your sentence is 500 words long, the last number is 500. Neural Networks hate unbounded numbers. They work best when numbers are small and normalized (usually between -1 and 1). If we feed in a huge number like 500, it will blow up the gradients and ruin the training.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attempt #2: Fractions? ❌&lt;/strong&gt;&lt;br&gt;
Okay, let's normalize it.&lt;/p&gt;

&lt;p&gt;First word = 0&lt;/p&gt;

&lt;p&gt;Last word = 1&lt;/p&gt;

&lt;p&gt;Everything else is a fraction in between.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Issue:&lt;/strong&gt; In a short sentence (5 words), the "step" between words is 0.2. In a long sentence (100 words), the "step" between words is 0.01. The meaning of the position changes depending on the sentence length. We need a method where the "distance" between position 5 and 6 is consistent, regardless of how long the text is.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Solution: The "Wiggly" Timestamps (Sine &amp;amp; Cosine)
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;authors&lt;/strong&gt; of the Transformer paper (&lt;strong&gt;Attention Is All You Need&lt;/strong&gt;) came up with a brilliant solution using &lt;strong&gt;waves&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of adding a single number (like "3") to the word, they add a &lt;strong&gt;whole vector&lt;/strong&gt; of values derived from Sine and Cosine waves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Analogy: The Multi-Hand Clock&lt;/strong&gt;&lt;br&gt;
Imagine a clock with many hands.&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%2Fz9b6ws8f758keurztd47.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%2Fz9b6ws8f758keurztd47.png" alt="Positional Encoding - The Multi-Hand Clock" width="800" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Second hand moves very fast (High frequency).&lt;/li&gt;
&lt;li&gt;The Minute hand moves slower.&lt;/li&gt;
&lt;li&gt;The Hour hand moves very slow (Low frequency).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you look at the position of all the hands together, you get a unique "fingerprint" for that specific time.&lt;/p&gt;

&lt;p&gt;Positional Encodings work the same way.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For the first dimension of the vector, we use a wave that wiggles very fast.&lt;/li&gt;
&lt;li&gt;For the last dimension, we use a wave that wiggles very slowly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining these, every single position (Index 1, Index 2, Index 100) &lt;strong&gt;gets a unique pattern of numbers&lt;/strong&gt; that stays consistent between 0 and 1.&lt;/p&gt;

&lt;p&gt;The Visual "Addition"We don't append this info; we actually add it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Final Input = Word Embedding (Meaning) + Positional Encoding (Order)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model learns that "Meaning" comes from the inherent value, and "Order" comes from these specific wave patterns added on top.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show Me The Code (PyTorch)&lt;/strong&gt;&lt;br&gt;
You don't need to implement the math manually (PyTorch handles it), but here is what it looks like conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import torch
import math

def create_positional_encoding(max_len, d_model):
    pe = torch.zeros(max_len, d_model)
    position = torch.arange(0, max_len).unsqueeze(1)

    # The "Wiggle" Factor
    div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))

    # Apply Sine to even indices, Cosine to odd indices
    pe[:, 0::2] = torch.sin(position * div_term)
    pe[:, 1::2] = torch.cos(position * div_term)

    return pe

# This creates a unique "timestamp" vector for every word position!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why This is Genius ?&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%2F1awq7rrc5s8tiqi5nnk0.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%2F1awq7rrc5s8tiqi5nnk0.png" alt="Why This is Genius" width="250" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic&lt;/strong&gt;: The position of the 5th word is always the same mathematical pattern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible&lt;/strong&gt;: Because it uses waves, the model can actually learn to handle sequences longer than the ones it was trained on (it can just "continue the wave").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distance Awareness&lt;/strong&gt;: The math allows the model to easily calculate the distance between words (e.g., Word A is 3 steps away from Word B) just by comparing their wave patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transformers process words in &lt;strong&gt;parallel&lt;/strong&gt;, so they lose order.&lt;/li&gt;
&lt;li&gt;We fix this by &lt;strong&gt;adding&lt;/strong&gt; a Positional Vector to the Word Embedding.&lt;/li&gt;
&lt;li&gt;We use &lt;strong&gt;Sine and Cosine waves&lt;/strong&gt; to create these vectors so they are unique, bounded, and consistent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that our Transformer knows what the words mean (Embeddings) and where they are (Positional Encoding), it is finally ready to start understanding the relationships between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next up in Blog #4&lt;/strong&gt;: The superstar of the show. &lt;strong&gt;Self-Attention&lt;/strong&gt;. (Or: How the word "Bank" knows if it's a river bank or a money bank).&lt;/p&gt;

&lt;p&gt;Stay tuned! 🚀&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>nlp</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Review Code Without Being a Jerk</title>
      <dc:creator>Jyoti Prajapati</dc:creator>
      <pubDate>Wed, 21 Jan 2026 11:46:06 +0000</pubDate>
      <link>https://forem.com/techsorter/how-to-review-code-without-being-a-jerk-15oi</link>
      <guid>https://forem.com/techsorter/how-to-review-code-without-being-a-jerk-15oi</guid>
      <description>&lt;p&gt;I still remember my first Pull Request at my first "real" dev job.&lt;/p&gt;

&lt;p&gt;I had spent three days wrestling with a complex API integration. I felt like a wizard. I pushed the code, opened the PR, and leaned back in my chair, waiting for the applause.&lt;/p&gt;

&lt;p&gt;20 minutes later, the notification pinged. "&lt;strong&gt;Changes Requested&lt;/strong&gt;."&lt;/p&gt;

&lt;p&gt;I opened it up to find 42 comments. The very first one read:&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;Why did you do it this way? This makes no sense.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;My impostor syndrome kicked down the door and started setting fires in my brain. I didn't feel mentored; I felt attacked.&lt;/p&gt;

&lt;p&gt;Now that I’m a Senior Developer, I realize that the reviewer probably wasn't trying to be mean. They were likely just busy, tired, or lacking soft skills. But the result was the same: &lt;strong&gt;my morale tanked, and I became terrified of submitting code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Code reviews are the primary way we share knowledge, but they are also a minefield for miscommunication. Here is how to give high-quality feedback without becoming the villain of the story.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Critique the Code, Not the Coder
&lt;/h2&gt;

&lt;p&gt;This is the Golden Rule. When you use the word "You," it feels personal. When you talk about the code, it’s objective.&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%2Fwi3a2v5clzftwkkfreln.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%2Fwi3a2v5clzftwkkfreln.png" alt="Critique the Code, Not the Coder" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Jerk" Way&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;"You forgot to close the database connection here."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Senior Way:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"It looks like the database connection might remain open here. We should probably close it to prevent leaks."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it works:&lt;/strong&gt; It shifts the dynamic from Me vs. You to Us vs. The Bug. We are on the same team, trying to defeat the spaghetti code together.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Ask Questions, Don't Bark Commands
&lt;/h2&gt;

&lt;p&gt;Commands shut down conversation. Questions open a dialogue. As a senior, your goal isn't just to fix the code; it's to teach the junior how to think.&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%2Fih23d1hgho1wipxar3hc.jpeg" 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%2Fih23d1hgho1wipxar3hc.jpeg" alt="Ask Questions, Don't Bark Commands" width="288" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "Jerk" Way&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;"Rename this variable to isUserActive."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Senior Way&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;"This variable name flag is a bit ambiguous. What do you think about naming it isUserActive to make it clearer for the next person reading this?"&lt;/p&gt;

&lt;p&gt;Sometimes, the developer actually has a reason for doing it their way. By asking a question, you give them the chance to explain (and sometimes, they might actually be right!).&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Magical Power of "Nitpick"
&lt;/h2&gt;

&lt;p&gt;Nothing destroys the soul quite like a reviewer holding a PR hostage because of indentation or a missing trailing comma.&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%2Fux8987e4f4dmkmcjrg7s.jpeg" 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%2Fux8987e4f4dmkmcjrg7s.jpeg" alt="The Magical Power of Nitpick" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
If a comment is purely subjective (preference) or minor style, label it.&lt;/p&gt;

&lt;p&gt;[Nitpick]&lt;/p&gt;

&lt;p&gt;[Optional]&lt;/p&gt;

&lt;p&gt;[Suggestion]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"[Nitpick] I usually prefer using a ternary operator here for brevity, but this if/else works too. Feel free to leave it."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This tells the developer&lt;/strong&gt;: "Your logic is solid, you can merge this, but here is a tip for next time." It removes the anxiety of "I have to fix everything before I am worthy."&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Don't Be a Ghost 👻
&lt;/h2&gt;

&lt;p&gt;We’ve all seen the reviewer who leaves a comment like:&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;This isn't efficient.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;...and then disappears into the void.&lt;/p&gt;

&lt;p&gt;If you are going to call something out, explain why. Provide a link to documentation, a StackOverflow thread, or a quick snippet of how it could be better.&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%2Fcunieg5t6vcdtglaezh4.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%2Fcunieg5t6vcdtglaezh4.png" alt="Don't Be a Ghost" width="727" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Senior Way:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Using .map inside a .filter here creates a O(n^2) complexity. Since this dataset can get huge, this might slow down the UI. Check out [this article on Big O notation]—we might want to use a Set here instead."&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Praise is Mandatory (Seriously) 🏆
&lt;/h2&gt;

&lt;p&gt;This is the secret weapon of great Tech Leads.&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%2Fqwd422sybcwty4txewx3.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%2Fqwd422sybcwty4txewx3.png" alt="Praise is Mandatory" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are pointing out 10 mistakes, find at least &lt;strong&gt;one thing&lt;/strong&gt; they did well. Did they write a clean test? Did they handle a weird edge case gracefully? Tell them!&lt;/p&gt;

&lt;p&gt;"Nice catch on that null check! I would have totally missed that."&lt;/p&gt;

&lt;p&gt;Positive reinforcement makes people want to write better code. Constant criticism makes people want to write safe code (which is often boring and stagnant).&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The "Step Away From The Keyboard" Rule
&lt;/h2&gt;

&lt;p&gt;If you find yourself typing a comment that is longer than a paragraph, or if you and the author are going back and forth on a comment thread more than three times...&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%2Fa84exiuisfbijov26vgd.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%2Fa84exiuisfbijov26vgd.png" alt="**Image description**" width="483" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pick up the phone. Hop on a Slack Huddle. Walk over to their desk.&lt;/p&gt;

&lt;p&gt;Text lacks tone. What you think is a "direct explanation" might read as "passive-aggressive shouting." A 3-minute voice conversation can resolve what 3 hours of comment-warfare cannot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary: Be the Senior You Needed&lt;/strong&gt;&lt;br&gt;
Code review isn't about proving you are the smartest person in the room. It's about ensuring the team ships value safely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be kind.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be specific.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be a mentor.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your teammates will learn more from a helpful guide than a gatekeeper.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy coding!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you found this helpful, drop a ❤️ and let me know in the comments: What's the worst (or best) code review comment you've ever received?&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>productivity</category>
      <category>codereview</category>
    </item>
  </channel>
</rss>
