<?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: Rajkumar Thangavel</title>
    <description>The latest articles on DEV Community by Rajkumar Thangavel (@techieraj).</description>
    <link>https://dev.to/techieraj</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F679478%2F8efe7bc0-4956-49d9-9fb4-86a48f6bbf7d.jpeg</url>
      <title>DEV Community: Rajkumar Thangavel</title>
      <link>https://dev.to/techieraj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techieraj"/>
    <language>en</language>
    <item>
      <title>The API Didn’t Fail. Our Preparation Did.</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Sat, 29 Aug 2026 06:54:45 +0000</pubDate>
      <link>https://dev.to/techieraj/the-api-didnt-fail-our-preparation-did-kf7</link>
      <guid>https://dev.to/techieraj/the-api-didnt-fail-our-preparation-did-kf7</guid>
      <description>&lt;p&gt;I recently came across a situation that reminded me of one important lesson in development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t wait for SIT or UAT to discover what your API can handle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine an API that works perfectly during development and SIT with normal test data. Everything looks fine.&lt;/p&gt;

&lt;p&gt;Then, suddenly, during testing, someone sends a much larger response — maybe millions of records or a payload that crosses the expected limit — and the API can't handle it.&lt;/p&gt;

&lt;p&gt;Now it's a last-minute problem.&lt;/p&gt;

&lt;p&gt;That’s exactly why I believe API behaviour should be documented &lt;strong&gt;before&lt;/strong&gt; it reaches SIT.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expected response size and capacity&lt;/li&gt;
&lt;li&gt;Maximum supported load&lt;/li&gt;
&lt;li&gt;Timeout limits&lt;/li&gt;
&lt;li&gt;Failure scenarios&lt;/li&gt;
&lt;li&gt;Large-data behaviour&lt;/li&gt;
&lt;li&gt;Server/resource limitations&lt;/li&gt;
&lt;li&gt;Expected error responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These shouldn't be questions we discover during UAT.&lt;/p&gt;

&lt;p&gt;There’s another lesson I’ve learned from the same experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Once a feature reaches UAT, don't casually introduce new requirements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whether it's frontend or backend, a new requirement at that stage can affect existing functionality, testing, integrations, and timelines.&lt;/p&gt;

&lt;p&gt;If something genuinely new comes in, it should go through proper &lt;strong&gt;change management and impact analysis&lt;/strong&gt; rather than quietly becoming part of the current release.&lt;/p&gt;

&lt;p&gt;The more I work on projects, the more I realise:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good development isn't just about making the happy path work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's about asking &lt;em&gt;“What can go wrong?”&lt;/em&gt; &lt;strong&gt;before&lt;/strong&gt; the environment tells us.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#API&lt;/code&gt; &lt;code&gt;#BackendDevelopment&lt;/code&gt; &lt;code&gt;#SoftwareTesting&lt;/code&gt; &lt;code&gt;#SIT&lt;/code&gt; &lt;code&gt;#UAT&lt;/code&gt; &lt;code&gt;#QualityEngineering&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My AI Coding Assistant Was Quietly Stealing My Productivity 😅</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 28 Aug 2026 05:53:56 +0000</pubDate>
      <link>https://dev.to/techieraj/my-ai-coding-assistant-was-quietly-stealing-my-productivity-54o9</link>
      <guid>https://dev.to/techieraj/my-ai-coding-assistant-was-quietly-stealing-my-productivity-54o9</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjfsvnr9pzprn6u10ntda.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjfsvnr9pzprn6u10ntda.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently noticed something funny while working with AI coding assistants.&lt;/p&gt;

&lt;p&gt;I give AI a feature request, write a detailed prompt, and hit &lt;strong&gt;Enter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then AI starts doing its thing.&lt;/p&gt;

&lt;p&gt;Sometimes it takes 10–15 minutes to generate the code.&lt;/p&gt;

&lt;p&gt;So naturally, I'm not going to sit there staring at the screen for 15 minutes. 😄&lt;/p&gt;

&lt;p&gt;I move to another task.&lt;/p&gt;

&lt;p&gt;Then AI suddenly asks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Allow access?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Meanwhile, I'm happily working on something completely different.&lt;/p&gt;

&lt;p&gt;I come back later, click &lt;strong&gt;Allow&lt;/strong&gt;, and go back to my other work again.&lt;/p&gt;

&lt;p&gt;Sometimes the AI finishes the task while I'm away.&lt;/p&gt;

&lt;p&gt;And sometimes... I completely forget that I even gave it a task. 😂&lt;/p&gt;

&lt;p&gt;But there's another problem too.&lt;/p&gt;

&lt;p&gt;If I decide to stay and watch the AI work, I'm basically doing this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI:&lt;/strong&gt; &lt;em&gt;Generating code...&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; 👀&lt;br&gt;
&lt;strong&gt;AI:&lt;/strong&gt; &lt;em&gt;Still generating...&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; 👀&lt;br&gt;
&lt;strong&gt;My productivity:&lt;/strong&gt; 📉&lt;/p&gt;

&lt;p&gt;That's when I started using a simple trick:&lt;/p&gt;

&lt;h3&gt;
  
  
  I set a timer.
&lt;/h3&gt;

&lt;p&gt;I give the AI the prompt → start a timer → move to another task.&lt;/p&gt;

&lt;p&gt;When the timer goes off, I come back and check:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did the AI finish?&lt;br&gt;
Is it waiting for permission?&lt;br&gt;
Did something fail?&lt;br&gt;
Is the output ready for review?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If it's still working, I set another timer and continue with my other work.&lt;/p&gt;

&lt;p&gt;This small habit has helped me avoid both extremes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Waiting for AI = wasted time.&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Forgetting about AI = wasted opportunity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI should work &lt;strong&gt;alongside&lt;/strong&gt; my workflow, not become the workflow.&lt;/p&gt;

&lt;p&gt;Sometimes, the best productivity feature isn't another AI tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's a simple timer. ⏱️😄&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#AI&lt;/code&gt; &lt;code&gt;#AICoding&lt;/code&gt; &lt;code&gt;#CodeAssistant&lt;/code&gt; &lt;code&gt;#DeveloperProductivity&lt;/code&gt; &lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#Productivity&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#AITools&lt;/code&gt; &lt;code&gt;#CodingWithAI&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Before You Touch a Project, Understand Its Environment Flow</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 28 Aug 2026 05:50:52 +0000</pubDate>
      <link>https://dev.to/techieraj/before-you-touch-a-project-understand-its-environment-flow-53h</link>
      <guid>https://dev.to/techieraj/before-you-touch-a-project-understand-its-environment-flow-53h</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1v9dmdn03eozsniyiwhi.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1v9dmdn03eozsniyiwhi.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing I always try to understand when I join a new project is &lt;strong&gt;how the environments are connected&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A typical setup has three important environments:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEV → UAT → MAIN (Production)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DEV is the playground for developers. Features are developed, tested, and validated here, usually through feature branches.&lt;/p&gt;

&lt;p&gt;Once the feature is ready, it moves to &lt;strong&gt;UAT&lt;/strong&gt; for proper validation.&lt;/p&gt;

&lt;p&gt;UAT should closely mirror Production. It shouldn't be treated as another playground because any instability there can directly affect release validation.&lt;/p&gt;

&lt;p&gt;Finally, after UAT testing and approval, the changes move to &lt;strong&gt;MAIN&lt;/strong&gt;, which is connected to the live application used by real users.&lt;/p&gt;

&lt;p&gt;The flow is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Develop → Test → Validate → Release&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But understanding this flow before starting development is important.&lt;/p&gt;

&lt;p&gt;Because one wrong assumption about branches or environments can create unnecessary conflicts, broken UAT deployments, or even production issues.&lt;/p&gt;

&lt;p&gt;My advice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before writing your first line of code in a new project, understand where your code goes, how it gets promoted, and which environment represents what.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Knowing the environment flow is just as important as knowing the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#Git&lt;/code&gt; &lt;code&gt;#GitWorkflow&lt;/code&gt; &lt;code&gt;#DevOps&lt;/code&gt; &lt;code&gt;#UAT&lt;/code&gt; &lt;code&gt;#Production&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#SoftwareEngineering&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Formal vs Informal Testing: Both Matter More Than We Think</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 28 Aug 2026 05:49:49 +0000</pubDate>
      <link>https://dev.to/techieraj/formal-vs-informal-testing-both-matter-more-than-we-think-4p86</link>
      <guid>https://dev.to/techieraj/formal-vs-informal-testing-both-matter-more-than-we-think-4p86</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmorczh52ziyb4p3ggf3f.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmorczh52ziyb4p3ggf3f.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently, I noticed our testing team discussing &lt;strong&gt;formal testing vs informal testing&lt;/strong&gt;, and it made me think about something I've experienced quite often as a developer.&lt;/p&gt;

&lt;p&gt;The difference is actually pretty simple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Formal testing&lt;/strong&gt; is structured and planned.&lt;br&gt;
There are defined test cases, expected results, test data, execution steps, and documented outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Informal testing&lt;/strong&gt; is more exploratory.&lt;/p&gt;

&lt;p&gt;You don't necessarily follow a predefined test case. You try different inputs, unusual scenarios, edge cases, and sometimes simply ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What happens if I do this?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both are important.&lt;/p&gt;

&lt;p&gt;Formal testing helps us make sure the application behaves according to the requirements.&lt;/p&gt;

&lt;p&gt;Informal testing helps us discover the things we &lt;strong&gt;didn't think about while writing the requirements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And this is where I think developers have an important responsibility.&lt;/p&gt;

&lt;p&gt;Before handing a feature over to the testing team, &lt;strong&gt;developers should do both.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't just verify:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Does my code work?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also try:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How can I break my code?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check the happy path.&lt;br&gt;
Try invalid inputs.&lt;br&gt;
Try unexpected combinations.&lt;br&gt;
Try boundary conditions.&lt;br&gt;
Think about what a real user might do — even if it wasn't mentioned in the requirement.&lt;/p&gt;

&lt;p&gt;Because the testing team shouldn't be the &lt;strong&gt;first people to discover that our feature is broken.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They should be the people who &lt;strong&gt;validate and challenge the confidence we've already built as developers.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#SoftwareTesting&lt;/code&gt; &lt;code&gt;#Testing&lt;/code&gt; &lt;code&gt;#QualityEngineering&lt;/code&gt; &lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#QualityAssurance&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt; &lt;code&gt;#CleanCode&lt;/code&gt; &lt;code&gt;#ShiftLeftTesting&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI Makes Development Faster. But It Can Also Create More Dead Code.</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 28 Aug 2026 05:48:08 +0000</pubDate>
      <link>https://dev.to/techieraj/ai-makes-development-faster-but-it-can-also-create-more-dead-code-d66</link>
      <guid>https://dev.to/techieraj/ai-makes-development-faster-but-it-can-also-create-more-dead-code-d66</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7cvf01wru4xdr4ck7ig.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7cvf01wru4xdr4ck7ig.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing I've started noticing while developing with AI code assistants is that &lt;strong&gt;faster development can sometimes hide a new problem — dead code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A requirement comes in.&lt;/p&gt;

&lt;p&gt;I use an AI coding assistant, generate the implementation, test it, and move on.&lt;/p&gt;

&lt;p&gt;Then the requirement changes.&lt;/p&gt;

&lt;p&gt;Instead of completely revisiting the previous implementation, we often modify the existing code to fit the new requirement. And that's where things can get messy.&lt;/p&gt;

&lt;p&gt;Old functions, conditions, components, variables, and logic may no longer be needed — but they quietly stay in the codebase.&lt;/p&gt;

&lt;p&gt;The same thing can happen with &lt;strong&gt;test cases&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A requirement changes, but the old test cases remain. They may still pass, but they're no longer relevant to the current behaviour.&lt;/p&gt;

&lt;p&gt;AI makes this easier to overlook because we can generate and modify code so quickly.&lt;/p&gt;

&lt;p&gt;So I've started treating requirement changes differently:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When a requirement changes, don't just ask AI to modify the existing code. Ask it to identify and remove everything that became obsolete.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And when the requirement is updated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review the existing implementation.&lt;/li&gt;
&lt;li&gt;Remove unused code.&lt;/li&gt;
&lt;li&gt;Review related test cases.&lt;/li&gt;
&lt;li&gt;Remove obsolete tests.&lt;/li&gt;
&lt;li&gt;Add tests for the new behaviour.&lt;/li&gt;
&lt;li&gt;Run the full relevant test suite.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI can help us write code faster.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;we still need to be responsible for what stays in the codebase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal shouldn't be to generate more code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is to maintain only the code we actually need.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#AICoding&lt;/code&gt; &lt;code&gt;#CodeAssistant&lt;/code&gt; &lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#CleanCode&lt;/code&gt; &lt;code&gt;#DeadCode&lt;/code&gt; &lt;code&gt;#Testing&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#AI&lt;/code&gt; &lt;code&gt;#CodeQuality&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What Veeva Quality Taught Me About Good Documentation</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 28 Aug 2026 05:39:10 +0000</pubDate>
      <link>https://dev.to/techieraj/what-veeva-quality-taught-me-about-good-documentation-4ajj</link>
      <guid>https://dev.to/techieraj/what-veeva-quality-taught-me-about-good-documentation-4ajj</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7hbr4hi8tsrykdutrytu.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7hbr4hi8tsrykdutrytu.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently, while working with &lt;strong&gt;Veeva Quality&lt;/strong&gt;, I realised that documentation is a lot more than just writing down information.&lt;/p&gt;

&lt;p&gt;In the beginning, I thought the process would be straightforward — create the document, add the required details, review it, and move on.&lt;/p&gt;

&lt;p&gt;But real-time work taught me something different.&lt;/p&gt;

&lt;p&gt;When you're dealing with quality-related documentation, &lt;strong&gt;every small detail matters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You need to understand how information should be structured, how documents should be reviewed and maintained, and even how images, diagrams, and other visual elements should be interpreted and documented correctly.&lt;/p&gt;

&lt;p&gt;That made me realise that documentation is actually a skill of its own.&lt;/p&gt;

&lt;p&gt;It's not just:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Write something and save it.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's about making information &lt;strong&gt;clear, accurate, traceable, and easy for someone else to understand later.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My experience with Veeva Quality has made me want to learn more about proper documentation practices — especially how to structure technical information, handle visual content, and create documentation that can actually stand on its own.&lt;/p&gt;

&lt;p&gt;Sometimes, the best lessons don't come from a course.&lt;/p&gt;

&lt;p&gt;They come from working on something real and realising:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Oh… I need to get better at this.”&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;h1&gt;
  
  
  Veeva #VeevaQuality #Documentation #QualityManagement #TechnicalDocumentation #DeveloperExperience #SoftwareDevelopment #LearningFromExperience
&lt;/h1&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3ketweorg4vwbls915g.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv3ketweorg4vwbls915g.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>veeva</category>
      <category>softwareengineering</category>
      <category>documentation</category>
    </item>
    <item>
      <title>The API Didn’t Fail. Our Preparation Did.</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Mon, 24 Aug 2026 03:30:00 +0000</pubDate>
      <link>https://dev.to/techieraj/the-api-didnt-fail-our-preparation-did-4eba</link>
      <guid>https://dev.to/techieraj/the-api-didnt-fail-our-preparation-did-4eba</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0o71mctw9tgv8dw6a3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7h0o71mctw9tgv8dw6a3.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
I recently came across a situation that reminded me of one important lesson in development:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t wait for SIT or UAT to discover what your API can handle.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine an API that works perfectly during development and SIT with normal test data. Everything looks fine.&lt;/p&gt;

&lt;p&gt;Then, suddenly, during testing, someone sends a much larger response — maybe millions of records or a payload that crosses the expected limit — and the API can't handle it.&lt;/p&gt;

&lt;p&gt;Now it's a last-minute problem.&lt;/p&gt;

&lt;p&gt;That’s exactly why I believe API behaviour should be documented &lt;strong&gt;before&lt;/strong&gt; it reaches SIT.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expected response size and capacity&lt;/li&gt;
&lt;li&gt;Maximum supported load&lt;/li&gt;
&lt;li&gt;Timeout limits&lt;/li&gt;
&lt;li&gt;Failure scenarios&lt;/li&gt;
&lt;li&gt;Large-data behaviour&lt;/li&gt;
&lt;li&gt;Server/resource limitations&lt;/li&gt;
&lt;li&gt;Expected error responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These shouldn't be questions we discover during UAT.&lt;/p&gt;

&lt;p&gt;There’s another lesson I’ve learned from the same experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Once a feature reaches UAT, don't casually introduce new requirements.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whether it's frontend or backend, a new requirement at that stage can affect existing functionality, testing, integrations, and timelines.&lt;/p&gt;

&lt;p&gt;If something genuinely new comes in, it should go through proper &lt;strong&gt;change management and impact analysis&lt;/strong&gt; rather than quietly becoming part of the current release.&lt;/p&gt;

&lt;p&gt;The more I work on projects, the more I realise:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good development isn't just about making the happy path work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's about asking &lt;em&gt;“What can go wrong?”&lt;/em&gt; &lt;strong&gt;before&lt;/strong&gt; the environment tells us.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#API&lt;/code&gt; &lt;code&gt;#BackendDevelopment&lt;/code&gt; &lt;code&gt;#SoftwareTesting&lt;/code&gt; &lt;code&gt;#SIT&lt;/code&gt; &lt;code&gt;#UAT&lt;/code&gt; &lt;code&gt;#QualityEngineering&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>performance</category>
      <category>testing</category>
    </item>
    <item>
      <title>The Underrated Microsoft Loop Workflow I Use for Project Knowledge</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Sat, 22 Aug 2026 13:45:00 +0000</pubDate>
      <link>https://dev.to/techieraj/the-underrated-microsoft-loop-workflow-i-use-for-project-knowledge-4gbj</link>
      <guid>https://dev.to/techieraj/the-underrated-microsoft-loop-workflow-i-use-for-project-knowledge-4gbj</guid>
      <description>&lt;p&gt;In my previous posts, I shared how I use Microsoft To Do for daily tasks and OneNote as my work journal.&lt;/p&gt;

&lt;p&gt;Another underrated tool I use is Microsoft Loop.&lt;/p&gt;

&lt;p&gt;I mainly use Loop as a project knowledge hub.&lt;/p&gt;

&lt;p&gt;For each project module, I create a separate page and document things like:&lt;/p&gt;

&lt;p&gt;What the module does&lt;/p&gt;

&lt;p&gt;Its purpose and functionality&lt;/p&gt;

&lt;p&gt;Important workflows&lt;/p&gt;

&lt;p&gt;Supporting documentation&lt;/p&gt;

&lt;p&gt;Useful tables and references&lt;/p&gt;

&lt;p&gt;The formatting flexibility is one thing I really like about Loop. I can bring headings, tables, links, notes, and other content together on a single page without making it feel like a messy document.&lt;/p&gt;

&lt;p&gt;It becomes especially useful when I'm preparing project documentation.&lt;/p&gt;

&lt;p&gt;I also use Loop as a central place for important links.&lt;/p&gt;

&lt;p&gt;Instead of keeping everything as browser bookmarks, I maintain a page with links I frequently need — leave applications, mandatory learning, project resources, client documents, shared Excel files, and other frequently used resources.&lt;/p&gt;

&lt;p&gt;So when I need something later, I know exactly where to look. I also create separate pages for different project modules and keep their relevant information together.&lt;/p&gt;

&lt;p&gt;But there is one important lesson I've learned while using multiple productivity tools:&lt;/p&gt;

&lt;p&gt;Don't duplicate the same information everywhere.&lt;/p&gt;

&lt;p&gt;If the same content exists in To Do, OneNote, Loop, emails, and another document, maintaining all of them can become a productivity problem of its own.&lt;/p&gt;

&lt;p&gt;The goal of productivity tools is to reduce mental overhead, not create another task to manage.&lt;/p&gt;

&lt;p&gt;So my approach is simple:&lt;/p&gt;

&lt;p&gt;To Do → Tasks&lt;/p&gt;

&lt;p&gt;OneNote → Daily learning &amp;amp; work journal&lt;/p&gt;

&lt;p&gt;Loop → Project knowledge, documentation &amp;amp; resources&lt;/p&gt;

&lt;p&gt;Give each tool a clear responsibility, and don't make one tool do everything.&lt;/p&gt;

&lt;p&gt;Sometimes, the best productivity system isn't about using more tools.&lt;/p&gt;

&lt;p&gt;It's about knowing exactly what each tool is for.&lt;/p&gt;

&lt;p&gt;Tags&lt;/p&gt;

&lt;h1&gt;
  
  
  MicrosoftLoop #Productivity #DeveloperProductivity #SoftwareDevelopment #KnowledgeManagement #ProjectDocumentation #DeveloperExperience #ProductivityTools #Microsoft365
&lt;/h1&gt;

</description>
      <category>documentation</category>
      <category>microsoft</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The First “Can You Work This Weekend?” Is Never Just One Weekend 😅</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Fri, 21 Aug 2026 13:45:00 +0000</pubDate>
      <link>https://dev.to/techieraj/the-first-can-you-work-this-weekend-is-never-just-one-weekend-4jc7</link>
      <guid>https://dev.to/techieraj/the-first-can-you-work-this-weekend-is-never-just-one-weekend-4jc7</guid>
      <description>&lt;p&gt;I learned this one the hard way.&lt;/p&gt;

&lt;p&gt;When a project gets hectic, the first request usually sounds very innocent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just this weekend. Can you help us out?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The first time, the Project Manager asks nicely. You understand the situation, agree, and spend your Saturday/Sunday working.&lt;/p&gt;

&lt;p&gt;Then the next week comes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“This weekend also, we may need some support.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You agree again.&lt;/p&gt;

&lt;p&gt;And suddenly, the following week, the conversation changes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“The team will be working this weekend.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wait… &lt;strong&gt;WHO agreed to that? 😂&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At some point, your one-time exception quietly becomes the team's new expectation.&lt;/p&gt;

&lt;p&gt;Even if someone says, &lt;em&gt;“We'll give you a comp-off,”&lt;/em&gt; the real issue is not the comp-off.&lt;/p&gt;

&lt;p&gt;It's the &lt;strong&gt;precedent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once people know you're always available on weekends, weekend availability slowly becomes part of your unofficial job description.&lt;/p&gt;

&lt;p&gt;So I've started looking at it differently:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Saturday and Sunday are already booked.&lt;/strong&gt;&lt;br&gt;
Booked with &lt;em&gt;“personal commitments.”&lt;/em&gt; 😄&lt;/p&gt;

&lt;p&gt;Of course, genuine emergencies happen, and sometimes we may need to step up as a team.&lt;/p&gt;

&lt;p&gt;But making weekend work a regular habit just because we said &lt;strong&gt;“yes” once&lt;/strong&gt; is something we should be careful about.&lt;/p&gt;

&lt;p&gt;Because sometimes the most expensive &lt;strong&gt;“Sure, I'll help this weekend”&lt;/strong&gt; is the one you keep saying every week.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#WorkLifeBalance&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#WorkplaceCulture&lt;/code&gt; &lt;code&gt;#CareerAdvice&lt;/code&gt; &lt;code&gt;#ProfessionalBoundaries&lt;/code&gt; &lt;code&gt;#DeveloperLife&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt; &lt;code&gt;#Productivity&lt;/code&gt;&lt;/p&gt;

</description>
      <category>workplace</category>
      <category>management</category>
    </item>
    <item>
      <title>The Simple Project Onboarding Habit That Saves Me Time Later</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Thu, 20 Aug 2026 02:30:00 +0000</pubDate>
      <link>https://dev.to/techieraj/the-simple-project-onboarding-habit-that-saves-me-time-later-2976</link>
      <guid>https://dev.to/techieraj/the-simple-project-onboarding-habit-that-saves-me-time-later-2976</guid>
      <description>&lt;p&gt;Whenever I join a new project, the first few days are usually about understanding the project, meeting the team, and getting familiar with the setup.&lt;/p&gt;

&lt;p&gt;Recently, I started doing one more thing during onboarding.&lt;/p&gt;

&lt;p&gt;I create a &lt;strong&gt;project resource sheet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I keep track of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project manager and key stakeholders&lt;/li&gt;
&lt;li&gt;Team members and their roles&lt;/li&gt;
&lt;li&gt;Client-side dependencies&lt;/li&gt;
&lt;li&gt;Areas of expertise and skills&lt;/li&gt;
&lt;li&gt;Official work contact details&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It sounds simple, but I've found it surprisingly useful.&lt;/p&gt;

&lt;p&gt;A few weeks later, if I suddenly need to contact someone about a specific issue, I don't have to search through old emails, chats, or meeting notes.&lt;/p&gt;

&lt;p&gt;I can quickly check:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who owns this area?&lt;br&gt;
Who has the right skill?&lt;br&gt;
Who should I contact?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It also helps during stand-ups, retrospectives, and task discussions.&lt;/p&gt;

&lt;p&gt;For example, if a task suddenly needs some backend knowledge and I know a frontend developer on the team also has strong backend experience, I can suggest that person instead of randomly looking for someone.&lt;/p&gt;

&lt;p&gt;I recently started practicing this in a real project, and it has already made communication much easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowing your project is not just about knowing the codebase.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's also about knowing &lt;strong&gt;the people behind it.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;A small but important note:&lt;/strong&gt; This sheet can contain sensitive work-related information. It should be created and maintained only using your &lt;strong&gt;official work account/work-approved storage&lt;/strong&gt;. Avoid keeping employee IDs, phone numbers, or other work contact details in a personal account or personal spreadsheet, as that may violate company security and data-handling policies.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;#SoftwareDevelopment&lt;/code&gt; &lt;code&gt;#DeveloperExperience&lt;/code&gt; &lt;code&gt;#ProjectManagement&lt;/code&gt; &lt;code&gt;#Teamwork&lt;/code&gt; &lt;code&gt;#DeveloperProductivity&lt;/code&gt; &lt;code&gt;#Agile&lt;/code&gt; &lt;code&gt;#ProjectOnboarding&lt;/code&gt; &lt;code&gt;#WorkplaceProductivity&lt;/code&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>workplace</category>
      <category>taskmanagement</category>
      <category>todoapp</category>
    </item>
    <item>
      <title>The Last-Minute Merge Problem</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Mon, 17 Aug 2026 05:22:59 +0000</pubDate>
      <link>https://dev.to/techieraj/the-last-minute-merge-problem-b8a</link>
      <guid>https://dev.to/techieraj/the-last-minute-merge-problem-b8a</guid>
      <description>&lt;p&gt;One thing I recently faced in my team reminded me how painful &lt;strong&gt;last-minute merges&lt;/strong&gt; can be.&lt;/p&gt;

&lt;p&gt;We were getting ready for a release. Different team members were working on different branches, and when everything came together, we started seeing conflicts in the main branch.&lt;/p&gt;

&lt;p&gt;What made it worse was that some conflicts had already been fixed, but a few changes were still floating around in different branches. So we had to bring people together, figure out who changed what, resolve the conflicts, and make sure nothing important was accidentally missed.&lt;/p&gt;

&lt;p&gt;And all of this happened &lt;strong&gt;right before the release&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That experience made one thing very clear to me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merge conflicts are much easier to solve early than at the last minute.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple habit can make a big difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know who is working on what.&lt;/li&gt;
&lt;li&gt;Keep the team coordinated when changes overlap.&lt;/li&gt;
&lt;li&gt;Merge and validate changes regularly.&lt;/li&gt;
&lt;li&gt;Don't wait until release day to discover integration problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem isn't really the conflict itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem is discovering the conflict when there is no time left to deal with it properly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Something I'm definitely taking forward from this experience.&lt;/p&gt;

&lt;h1&gt;
  
  
  SoftwareDevelopment #Git #GitHub #GitWorkflow #VersionControl #Teamwork #DeveloperExperience #Agile #DevOps #CodeReview
&lt;/h1&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>From Typing Prompts to Talking to AI — A Small Tool That Changed My Workflow 🎙️🤖</title>
      <dc:creator>Rajkumar Thangavel</dc:creator>
      <pubDate>Sun, 16 Aug 2026 12:27:51 +0000</pubDate>
      <link>https://dev.to/techieraj/from-typing-prompts-to-talking-to-ai-a-small-tool-that-changed-my-workflow-1bpj</link>
      <guid>https://dev.to/techieraj/from-typing-prompts-to-talking-to-ai-a-small-tool-that-changed-my-workflow-1bpj</guid>
      <description>&lt;p&gt;&lt;strong&gt;From Typing Prompts to Talking to AI — A Small Tool That Changed My Workflow 🎙️🤖&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One thing I’ve noticed since AI became a regular part of my development workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The way I interact with AI has completely changed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Earlier, I would carefully type a prompt, edit it, add context, fix the wording, and then send it.&lt;/p&gt;

&lt;p&gt;Now, I often just &lt;strong&gt;talk to AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I explain the problem the way I would explain it to another developer — naturally, with context, examples, corrections, and all the small details that come to my mind.&lt;/p&gt;

&lt;p&gt;But typing all of that manually can still take time.&lt;/p&gt;

&lt;p&gt;That’s where I recently started using &lt;strong&gt;Handy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Handy is a free, open-source speech-to-text application that runs locally on your computer. It uses speech recognition models such as &lt;strong&gt;OpenAI Whisper&lt;/strong&gt; to convert what you say into text. It can also detect the language automatically, which makes it especially useful when switching between languages while speaking.&lt;/p&gt;

&lt;p&gt;My workflow now looks something like this:&lt;/p&gt;

&lt;p&gt;🎙️ &lt;strong&gt;Speak naturally&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
↓&lt;br&gt;&lt;br&gt;
🧠 &lt;strong&gt;Whisper understands the speech&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
↓&lt;br&gt;&lt;br&gt;
📝 &lt;strong&gt;Speech → structured text&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
↓&lt;br&gt;&lt;br&gt;
🤖 &lt;strong&gt;Send it to AI&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
↓&lt;br&gt;&lt;br&gt;
💡 &lt;strong&gt;Get the solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Another thing I really like about Handy is that it is &lt;strong&gt;open source and extensible&lt;/strong&gt;. You can choose the speech model that fits your requirements, and Whisper is one of the models I personally recommend trying.&lt;/p&gt;

&lt;p&gt;For developers who use AI heavily, I think this kind of workflow can save a surprising amount of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interesting part of AI isn't just that it can write code for us.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's that it is also changing &lt;strong&gt;how we communicate with computers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We started with:&lt;/p&gt;

&lt;p&gt;⌨️ &lt;strong&gt;Typing commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Typing prompts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;🎙️ &lt;strong&gt;Talking naturally to AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I think we're only getting started.&lt;/p&gt;

&lt;p&gt;If you're someone who uses AI regularly for coding, writing, research, or documentation, &lt;strong&gt;give voice-based AI interaction a try.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It might change the way you work.&lt;/p&gt;

&lt;h1&gt;
  
  
  AI #OpenSource #Whisper #Handy #AICoding #DeveloperProductivity #VoiceAI #SoftwareDevelopment #ArtificialIntelligence
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
