<?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: janmejay swain</title>
    <description>The latest articles on DEV Community by janmejay swain (@janmejayswain7205).</description>
    <link>https://dev.to/janmejayswain7205</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%2F3467215%2F5c55a920-7e3a-479d-a326-ddd775fe78cb.png</url>
      <title>DEV Community: janmejay swain</title>
      <link>https://dev.to/janmejayswain7205</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/janmejayswain7205"/>
    <language>en</language>
    <item>
      <title>Fixing JWT Session Validation Issues with Redis</title>
      <dc:creator>janmejay swain</dc:creator>
      <pubDate>Mon, 01 Sep 2025 07:49:14 +0000</pubDate>
      <link>https://dev.to/janmejayswain7205/fixing-jwt-session-validation-issues-with-redis-nd2</link>
      <guid>https://dev.to/janmejayswain7205/fixing-jwt-session-validation-issues-with-redis-nd2</guid>
      <description>&lt;p&gt;When building secure APIs, &lt;strong&gt;JWT (JSON Web Token)&lt;/strong&gt; is one of the most popular authentication methods. It’s lightweight, stateless, and easy to integrate. But JWT has one common problem: &lt;strong&gt;once a token is issued, it remains valid until it expires&lt;/strong&gt;—even if the user logs out.&lt;/p&gt;

&lt;p&gt;This creates a security gap where someone with access to the token can still make requests until it naturally expires.&lt;/p&gt;

&lt;p&gt;Let’s explore how to fix this using Redis.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Token Still Valid After Logout
&lt;/h2&gt;

&lt;p&gt;JWT works without server-side session tracking. Once a token is signed, the server doesn’t store it—validation is done by checking the signature.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If a user logs out, the token doesn’t automatically become invalid.&lt;/li&gt;
&lt;li&gt;If an attacker steals or copies the token, they can use it until expiration.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Solution: Using Redis as a Blacklist
&lt;/h2&gt;

&lt;p&gt;To solve this, we can introduce a token blacklist mechanism with Redis.&lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;When the user logs out, store the token in Redis with an expiration time matching the JWT expiry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On every API request, check if the token exists in Redis.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;If yes → reject the request (Unauthorized or Illegal Access).&lt;/li&gt;
&lt;li&gt;If no → proceed with normal JWT validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This way, even if someone has a stolen token, it won’t work after the user logs out.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits of This Approach
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Immediate logout&lt;/strong&gt; → Users are logged out instantly, not just after JWT expiry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extra security&lt;/strong&gt; → Protects against token theft and replay attacks.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Scalable *&lt;/em&gt;→ Redis is fast and works well with distributed systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;JWT is powerful, but without proper logout handling, it can leave your application vulnerable. By integrating Redis as a blacklist, you can ensure better session control and stronger security for your applications.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Life as a Software Engineer Today: Balancing Work, Learning, and Life</title>
      <dc:creator>janmejay swain</dc:creator>
      <pubDate>Sun, 31 Aug 2025 05:39:37 +0000</pubDate>
      <link>https://dev.to/janmejayswain7205/life-as-a-software-engineer-today-balancing-work-learning-and-life-1nc4</link>
      <guid>https://dev.to/janmejayswain7205/life-as-a-software-engineer-today-balancing-work-learning-and-life-1nc4</guid>
      <description>&lt;p&gt;Being a software engineer in today’s world is both rewarding and demanding. With technology evolving at lightning speed, every developer faces the constant challenge of staying updated while managing work and personal life. Let’s dive into how work-life balance, learning curves, and career growth intersect in the life of a modern software engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ever-Changing Learning Curve
&lt;/h2&gt;

&lt;p&gt;Technology never stands still. New programming languages, frameworks, tools, and best practices emerge every year. For a software engineer, learning isn’t just part of the job—it &lt;strong&gt;is the job&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From mastering a new frontend framework to understanding cloud infrastructure, engineers often face steep learning curves. Continuous learning requires curiosity, persistence, and the ability to adapt. While it can feel overwhelming at times, embracing the learning process helps engineers stay relevant and grow in their careers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work-Life Balance in a Remote-First World
&lt;/h2&gt;

&lt;p&gt;Remote work and flexible hours have become standard in many tech companies. While this flexibility is a blessing, it also comes with challenges. Work can easily spill into personal time, and boundaries between “office hours” and downtime blur.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintaining work-life balance requires conscious effort:&lt;/li&gt;
&lt;li&gt;Set clear working hours and stick to them.&lt;/li&gt;
&lt;li&gt;Take short breaks to refresh your mind during long coding sessions.&lt;/li&gt;
&lt;li&gt;Prioritize tasks to avoid burnout while staying productive.&lt;/li&gt;
&lt;li&gt;Make time for hobbies, exercise, and family.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A healthy balance improves not only mental and physical health but also &lt;strong&gt;productivity and creativity at work&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Career Growth and Personal Development
&lt;/h2&gt;

&lt;p&gt;A software engineer’s career isn’t just about coding—it’s also about problem-solving, collaboration, and communication. Engineers who invest in personal development—learning soft skills, mentoring others, and exploring different domains—tend to have more sustainable and fulfilling careers.&lt;/p&gt;

&lt;p&gt;Remember, growth is incremental. Small, consistent learning—whether it’s reading a technical blog, experimenting with a new library, or contributing to open-source—adds up over time and keeps your skills sharp.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Life as a software engineer today is a careful balancing act. Between continuous learning, demanding projects, and personal commitments, it’s easy to feel stretched. But by embracing curiosity, setting boundaries, and focusing on holistic growth, software engineers can thrive both professionally and personally.&lt;/p&gt;

&lt;p&gt;The journey is challenging, but it’s also incredibly rewarding. After all, in a field that constantly evolves, staying adaptable and maintaining balance is the ultimate skill.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🔐 Understanding Checksums in Data Transmission with a Real-World API Example</title>
      <dc:creator>janmejay swain</dc:creator>
      <pubDate>Sat, 30 Aug 2025 17:42:36 +0000</pubDate>
      <link>https://dev.to/janmejayswain7205/understanding-checksums-in-data-transmission-with-a-real-world-api-example-1ff8</link>
      <guid>https://dev.to/janmejayswain7205/understanding-checksums-in-data-transmission-with-a-real-world-api-example-1ff8</guid>
      <description>&lt;h2&gt;
  
  
  📌 Introduction
&lt;/h2&gt;

&lt;p&gt;In today’s world of fast-moving data—whether it’s a &lt;strong&gt;file download, a payment API call, or a network packet—ensuring&lt;/strong&gt; that the information you send is the same as what the receiver gets is critical.&lt;/p&gt;

&lt;p&gt;Data can get corrupted during transmission due to &lt;strong&gt;network glitches, software bugs, or even malicious tampering.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So how do we guarantee data integrity? 👉 The answer is Checksums.&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%2Fwl7x3i373w0f15cn1a2s.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%2Fwl7x3i373w0f15cn1a2s.png" alt="Simple Image of How Checksum Works" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ What is a Checksum?&lt;/strong&gt;&lt;br&gt;
A checksum is a unique value (a “&lt;strong&gt;digital fingerprint&lt;/strong&gt;”) generated from a block of data using an algorithm such as &lt;strong&gt;MD5, SHA-256, or CRC32&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the data remains unchanged → The checksum stays the same.&lt;/li&gt;
&lt;li&gt;If the data changes (even by one character/bit) → The checksum value changes drastically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This property makes checksums extremely useful in detecting corruption or tampering.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔑 Common Checksum Algorithms
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MD5 (Message Digest 5):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Produces a 128-bit hash.&lt;/li&gt;
&lt;li&gt;Fast, widely used, but not cryptographically secure anymore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;SHA Family (SHA-1, SHA-256, SHA-512):&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stronger cryptographic security.&lt;/li&gt;
&lt;li&gt;SHA-256 is widely used in API calls, SSL, digital signatures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;CRC32 (Cyclic Redundancy Check): *&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used in networking &amp;amp; file storage.&lt;/li&gt;
&lt;li&gt;Very fast, but weaker than SHA/MD5.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🌍 Real-World Example: API Payment Transaction
&lt;/h2&gt;

&lt;p&gt;Let’s say we are sending a payment request from our application to a bank’s API.&lt;/p&gt;

&lt;p&gt;Imagine you are working on a payment API call that transmits transaction details from your application to a bank server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 Step 1: Original Request&lt;/strong&gt;&lt;br&gt;
Our app sends Request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ 
  "amount": 1000, 
  "accountNo": "12345678" 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🔹 Without Checksum&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You send: { "amount": 1000, "accountNo": "12345678" }&lt;/li&gt;
&lt;li&gt;Due to a network glitch or by data manipulation, the data received at the bank becomes: { "amount": 1000000, "accountNo": "12345678" }&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 The transaction will be processed incorrectly (₹1000000 instead of ₹1000).❌&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 With Checksum&lt;/strong&gt;&lt;br&gt;
We generate a checksum using a secret key (only known to sender &amp;amp; receiver).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checksum Logic →&lt;/strong&gt; Defines how the checksum is created (the rule/sequence). The logic behind generating a checksum is &lt;strong&gt;decided during development by the governing authority or system architects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checksum Key → **The secret ingredient (like AES key) that makes the checksum secure and unique.It adds an **extra layer of security&lt;/strong&gt; to the checksum process. Without knowing the checksum key, they &lt;strong&gt;cannot generate the correct checksum.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In our case checksum logic we used the algorithm SHA-512 for hashing, and below logic : &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;checksum= amount &amp;amp; accountNo &amp;amp; checksumSecretKey&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For our case:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;checksumSecretKey : abc897645&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1000&amp;amp;12345678&amp;amp;abc897645
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generated checksum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c26ba3faf94d7fa2cbc9e4ba7c8007863e3640fe2e19259711ef6921a928336a
8b1c96da9830205cd7d7a18ac78f8200493c1aa3ce37f6f49f4d80a13e79408e
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Final API Request&lt;/strong&gt;&lt;br&gt;
We attach the checksum to the payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ 
  "amount": 1000, 
  "accountNo": "12345678", 
  "checksum": "c26ba3faf94d7fa2cbc9e4ba7c8007863e3640fe2e19259711ef6921a928336a8b1c96da9830205cd7d7a18ac78f8200493c1aa3ce37f6f49f4d80a13e79408e" 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the bank or receiver receives the request: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It recalculates the checksum using the same logic.&lt;/li&gt;
&lt;li&gt;If the checksum matches → ✅ Data is intact.&lt;/li&gt;
&lt;li&gt;If not → ❌ Reject the request. &lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚨 Example of Data Tampering
&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%2Fijg5epzjnpftyle196rz.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%2Fijg5epzjnpftyle196rz.png" alt="Example Image of Data Tampering Detection by using of Checksum" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Suppose an attacker tries to manipulate the request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ 
  "amount": 1000000, 
  "accountNo": "12345678", 
  "checksum": "c26ba3faf94d7fa2cbc9e4ba7c8007863e3640fe2e19259711ef6921a928336a8b1c96da9830205cd7d7a18ac78f8200493c1aa3ce37f6f49f4d80a13e79408e" 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, amount changed from &lt;strong&gt;1000 → 1,000,000&lt;/strong&gt;. But notice: The checksum attached is still the one generated for the original request (1000).&lt;/p&gt;

&lt;p&gt;👉 The bank recalculates checksum with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1000000&amp;amp;12345678&amp;amp;abc897645

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

&lt;/div&gt;



&lt;p&gt;This produces a &lt;strong&gt;completely different checksum:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;32c8e052cfeebb707fc4bd444c8de4f7115f40eaaee6d07e3312d02352400375
ed91c92a678b99f4418c7700536e92705a8556721ea6eaa277f64aa90b6bb045
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the checksum doesn’t match the one provided → The API &lt;strong&gt;rejects the transaction 🚫&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;✔️ This prevents fraud, corruption, or manipulation.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Where Checksums Are Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File Downloads&lt;/strong&gt; → Verifying ISO/software installers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APIs&lt;/strong&gt; → Payment gateways, telecom, healthcare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Networking&lt;/strong&gt; → TCP/UDP/IP packet integrity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Databases &amp;amp; Storage&lt;/strong&gt; → Detecting corruption in data blocks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏁 Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Checksum = Digital Watchdog of Data Integrity&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Even a single-bit change can be caught instantly.&lt;/li&gt;
&lt;li&gt;Always pair your API payload with a checksum (or stronger, HMAC).&lt;/li&gt;
&lt;li&gt;Protects not only against &lt;strong&gt;accidental corruption but also intentional tampering&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;✍️ Closing Thought&lt;/strong&gt;&lt;br&gt;
In the digital world, &lt;strong&gt;a single flipped bit can cause financial loss, broken systems, or even security breaches&lt;/strong&gt;. Checksums act as the silent guardians of data pipelines, ensuring accuracy and trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 Pro Tip for Engineers:&lt;/strong&gt; If you’re working in &lt;strong&gt;fintech, telecom, or healthcare&lt;/strong&gt;, never skip checksum or hashing in your API design. A few extra lines of code can prevent millions in damage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👉 What do you think?&lt;/strong&gt; Have you ever faced a situation where a checksum saved your system—or where its absence caused issues?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Continuous Feedback with Digma: How to Enhance Your Development in IntelliJ IDEA</title>
      <dc:creator>janmejay swain</dc:creator>
      <pubDate>Sat, 30 Aug 2025 13:53:04 +0000</pubDate>
      <link>https://dev.to/janmejayswain7205/continuous-feedback-with-digma-how-to-enhance-your-development-in-intellij-idea-17gn</link>
      <guid>https://dev.to/janmejayswain7205/continuous-feedback-with-digma-how-to-enhance-your-development-in-intellij-idea-17gn</guid>
      <description>&lt;p&gt;In today's fast-paced software development world, continuous feedback is crucial for building efficient, reliable, and scalable applications. Digma, a plugin for IntelliJ IDEA, takes this concept to the next level by providing real-time insights into your code’s performance, helping developers spot issues, bottlenecks, and regressions without leaving the IDE. Here's a simple guide to understanding and implementing Digma in your workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Digma?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Digma is a &lt;strong&gt;continuous feedback&lt;/strong&gt; platform that integrates seamlessly into IntelliJ IDEA. It analyzes your application’s runtime data to highlight performance bottlenecks, slow queries, and other issues that may impact scalability or efficiency. It is especially useful for working with &lt;strong&gt;legacy codebases&lt;/strong&gt; or complex systems, providing real-time feedback to developers as they code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some key benefits include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identifying bottlenecks and query issues during development.&lt;/li&gt;
&lt;li&gt;Providing insights into how your code performs across environments (e.g., development, staging, production).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitOps integration&lt;/strong&gt; for easier pull request reviews and feedback loops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How Digma Works:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Once installed, Digma continuously profiles your code execution using data from tools like OpenTelemetry. This allows it to detect problems in real-time, helping you address performance issues early in the development cycle. You get feedback directly in your IDE, improving both the speed and quality of your code fixes. &lt;/p&gt;

&lt;h2&gt;
  
  
  How to Set Up Digma in IntelliJ IDEA?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Installation Guide:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Install the Digma Plugin:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open IntelliJ IDEA and navigate to &lt;strong&gt;File &amp;gt; Settings &amp;gt; Plugins&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;"Digma Continuous Feedback"&lt;/strong&gt; in the marketplace and click &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&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%2Fkrjhov9aenbm7z4no5mo.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%2Fkrjhov9aenbm7z4no5mo.png" alt="navigate to " width="800" height="427"&gt;&lt;/a&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%2Fv6e4hvbyjhroky425z49.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%2Fv6e4hvbyjhroky425z49.png" alt="&amp;gt; Plugins&amp;gt;serach 'Digma Contineous Feedback'&amp;gt;install" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;*&lt;em&gt;Configure the Plugin:
*&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Once installed, open the Digma panel from the bottom toolbar of IntelliJ.&lt;/li&gt;
&lt;li&gt;Follow the setup instructions to integrate Digma with your project. No code changes are needed, as Digma works with &lt;strong&gt;existing logs and telemetry&lt;/strong&gt; from your application.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.** Start Coding:**&lt;/p&gt;

&lt;p&gt;As you work, Digma will automatically provide feedback, highlighting areas of concern such as slow-running functions, scaling issues, or risky code. This allows you to address these problems in real 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%2F6rbxp6di7unih4okgcb5.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%2F6rbxp6di7unih4okgcb5.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Analyze the Data:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Digma helps you identify slow queries, bottlenecks, and performance baselines. You can quickly understand what is slowing down your code and make the necessary optimizations.&lt;/li&gt;
&lt;/ul&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%2Fap31ykxjzje67xilx14f.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%2Fap31ykxjzje67xilx14f.png" alt="Analyzing Data through DIgma" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Fixing a Bottleneck in Your Code
&lt;/h2&gt;

&lt;p&gt;Imagine you’re working on a large project and your team notices performance slowdowns during testing. With Digma, you would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the application locally.&lt;/li&gt;
&lt;li&gt;Receive feedback in the IDE that points to a specific function causing the slowdown.&lt;/li&gt;
&lt;li&gt;Review the detailed data provided by Digma on execution times and query performance, make necessary adjustments, and immediately see the impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The image above illustrates an example of a bottleneck issue.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why Use Digma?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time insights:&lt;/strong&gt; Digma acts as a runtime mentor, providing continuous feedback.&lt;/li&gt;
&lt;li&gt;Efficiency: Reduces time spent hunting for performance issues, allowing for faster iterations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy systems:&lt;/strong&gt; Great for untangling complex, older codebases by providing detailed analytics on forgotten or poorly documented code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using Digma, you can streamline your development process, making it easier to write clean, efficient, and performant code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts :&lt;/strong&gt;&lt;br&gt;
Digma’s continuous feedback empowers developers to improve their code quality proactively. Whether you’re working on a new project or maintaining a legacy system, this plugin provides the critical insights you need to build better software.&lt;/p&gt;

&lt;p&gt;If you haven't tried it yet, Digma is &lt;strong&gt;free for local development&lt;/strong&gt;—so go ahead and integrate it into your IntelliJ setup today!&lt;/p&gt;

&lt;p&gt;Sources : &lt;a href="https://docs.digma.ai/digma-developer-guide" rel="noopener noreferrer"&gt;Digma Developer Guide&lt;/a&gt; , &lt;a href="https://www.udemy.com/course/continuous-feedback/" rel="noopener noreferrer"&gt;Step up your coding with Continuous Feedback&lt;/a&gt; course By &lt;a href="https://www.linkedin.com/in/ronidover/" rel="noopener noreferrer"&gt;Roni Dover&lt;/a&gt; &lt;/p&gt;

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