<?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: Shashank Raj</title>
    <description>The latest articles on DEV Community by Shashank Raj (@shashank_raj).</description>
    <link>https://dev.to/shashank_raj</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%2F1930215%2Fb6a27b40-a0c6-460f-98e0-a3219c122bcf.png</url>
      <title>DEV Community: Shashank Raj</title>
      <link>https://dev.to/shashank_raj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shashank_raj"/>
    <language>en</language>
    <item>
      <title>I Turned My Google Sheets Hack Into a Real Tool. It Took Six Months and I Have No Regrets.</title>
      <dc:creator>Shashank Raj</dc:creator>
      <pubDate>Sun, 05 Apr 2026 15:55:13 +0000</pubDate>
      <link>https://dev.to/shashank_raj/i-turned-my-google-sheets-hack-into-a-real-tool-it-took-six-months-and-i-have-no-regrets-5cj3</link>
      <guid>https://dev.to/shashank_raj/i-turned-my-google-sheets-hack-into-a-real-tool-it-took-six-months-and-i-have-no-regrets-5cj3</guid>
      <description>&lt;p&gt;&lt;em&gt;A sequel to &lt;a href="https://dev.to/shashank_raj/the-daily-standup-slayer-how-this-lazy-manager-automated-everything-except-meetings-540"&gt;The Daily Standup Slayer&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Six months ago I wrote about automating my standups with a Google Sheet, a cron job, and the kind of infrastructure that makes real engineers wince. Nightly runs. A Docker container on EC2. Apps Script that worked until it didn't. The whole thing was duct tape at scale, and I was weirdly proud of it.&lt;/p&gt;

&lt;p&gt;Then my PM asked me to update the ticket &lt;em&gt;before&lt;/em&gt; the standup, not after.&lt;/p&gt;

&lt;p&gt;The sheet broke. The cron job silently failed for three days. And I found myself, at 11pm on a Wednesday, manually updating four Jira tickets while my Apps Script sat in production doing absolutely nothing, successfully.&lt;/p&gt;

&lt;p&gt;That was the night I decided to rewrite the whole thing properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  The New Problem (Same as the Old Problem, Just More Honest)
&lt;/h2&gt;

&lt;p&gt;The Google Sheet approach had one fatal flaw: it was still &lt;em&gt;me&lt;/em&gt; doing work. I was just doing it in a spreadsheet instead of a Jira UI. Every night. Before midnight. In a specific format. Because if the format was wrong, the script silently ate the row and nobody found out until the standup.&lt;/p&gt;

&lt;p&gt;What I actually wanted was: &lt;strong&gt;commit code, ticket updates itself, standup writes itself, I do nothing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not a dashboard. Not a different place to type. Nothing.&lt;/p&gt;

&lt;p&gt;The tooling for this apparently doesn't exist if you want it to work locally, with your own LLM, without sending every commit message to a SaaS vendor who charges per-seat.&lt;/p&gt;

&lt;p&gt;So, naturally, I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Actually Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.devtrack.cloud" rel="noopener noreferrer"&gt;DevTrack&lt;/a&gt;&lt;/strong&gt; is a Go daemon that watches your git repositories. When you commit, it fires. When a timer hits (configurable — mine is every 90 minutes), it fires. Each trigger gets routed over HTTP to a Python backend that runs NLP, calls an LLM, figures out what you were working on, and pushes an update to whatever PM tool you use.&lt;/p&gt;

&lt;p&gt;The binary is 5MB. The AI runs locally on Ollama if you want. The whole thing runs offline.&lt;/p&gt;

&lt;p&gt;Here's what the commit flow actually looks like now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git add backend/auth/session.py
&lt;span class="nv"&gt;$ &lt;/span&gt;devtrack git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"fix session expiry on token refresh"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens next, without me touching anything:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The commit message goes through an AI pass — not to rewrite it, just to enrich it with context (branch name, open PR, recent related commits)&lt;/li&gt;
&lt;li&gt;The NLP layer extracts that this touched auth, cross-references my open Azure work items&lt;/li&gt;
&lt;li&gt;A comment gets posted on the relevant ticket: &lt;em&gt;"Session expiry fix applied — token refresh flow updated in commit a3f91c"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The ticket moves from "In Progress" to "Review" because the branch name followed the pattern&lt;/li&gt;
&lt;li&gt;That evening's standup already has a bullet point waiting for me&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing from &lt;code&gt;devtrack git commit&lt;/code&gt; to ticket comment: about 4 seconds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers After Six Months
&lt;/h2&gt;

&lt;p&gt;I've been running this on my own projects since October. Here's what the logs actually say:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;~23 minutes saved per day&lt;/strong&gt; on ticket updates, standup prep, and EOD reports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;94% of work items updated automatically&lt;/strong&gt; — the 6% that missed were commits on branches I'd explicitly told it to ignore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standup is pre-written 4 out of 5 days&lt;/strong&gt; — I edit it, I don't write it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero nights&lt;/strong&gt; of 11pm manual Jira sessions since January&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is the one that still surprises me. Not because the automation is perfect — it isn't — but because the bar for "good enough to post" is so much lower than I thought. A ticket comment that says &lt;em&gt;"touched auth layer, see commit a3f91c"&lt;/em&gt; is genuinely more useful than the nothing that was there before.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Part I'm Still Not Proud Of
&lt;/h2&gt;

&lt;p&gt;Setting up Ollama for the first time is a pain. If you've never done it, you'll spend 45 minutes figuring out which model to pull, why the first model you tried is too slow, and what &lt;code&gt;nomic-embed-text&lt;/code&gt; is and why you apparently need it.&lt;/p&gt;

&lt;p&gt;The documentation exists but it's scattered, and I'm only now admitting that this is my fault not Ollama's.&lt;/p&gt;

&lt;p&gt;Also, the &lt;code&gt;.env&lt;/code&gt; setup has 12 required variables. I know. I needed them all for different things and at some point the config grew teeth. There's a sample file, but I know what it looks like to someone encountering it for the first time. I'm working on a &lt;code&gt;devtrack setup&lt;/code&gt; wizard that holds your hand through the first run.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Part That Still Feels Like Magic
&lt;/h2&gt;

&lt;p&gt;The personalization feature. I spent a month building a pipeline that reads your Teams messages, extracts how you communicate, and makes the AI generate updates &lt;em&gt;in your voice&lt;/em&gt;. The standup bullets sound like me — short sentences, no filler words, specific rather than vague.&lt;/p&gt;

&lt;p&gt;My manager asked me last month if I'd started writing better status updates.&lt;/p&gt;

&lt;p&gt;I said yes.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Actually Shipping Today
&lt;/h2&gt;

&lt;p&gt;DevTrack v1.0 went out this morning. Multi-platform binaries on GitHub Releases — macOS arm64/amd64, Linux arm64/amd64. Fully local, no account, no API key required if you use Ollama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The features I actually use every day:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git commit interception with AI enhancement&lt;/li&gt;
&lt;li&gt;Azure DevOps, GitHub, and Jira PM sync&lt;/li&gt;
&lt;li&gt;Ticket alerter (no more tab-switching to check if something was assigned to me)&lt;/li&gt;
&lt;li&gt;EOD report generator that pulls from the day's commit history&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git-sage&lt;/code&gt; — an agentic git tool for the messy stuff (rebases, conflict resolution, squash flows)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The features I built but use less often: GitLab integration, the Telegram bot for remote prompts, the Teams learning pipeline. They work, they're just not part of my daily loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Pitch
&lt;/h2&gt;

&lt;p&gt;If you spend more than 15 minutes a day updating tickets or writing standup notes by hand, DevTrack will probably save you time. If your team uses Azure DevOps or GitHub, it'll save you more.&lt;/p&gt;

&lt;p&gt;If you want it to run entirely on your machine, on a local model, with no data leaving your laptop — it does that. That was actually the point.&lt;/p&gt;

&lt;p&gt;If you want a 60-second demo: &lt;code&gt;git commit&lt;/code&gt;, watch a ticket comment appear. That's the whole thing.&lt;/p&gt;

&lt;p&gt;The code is at &lt;a href="https://github.com/sraj0501/automation_tools" rel="noopener noreferrer"&gt;github.com/sraj0501/automation_tools&lt;/a&gt;. The Google Sheet is retired. The cron job is gone. Apps Script never knew what hit it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Next post&lt;/strong&gt;: &lt;em&gt;I'm building a local-first admin console for the server mode, and a two-month experiment starts Monday where an AI agent does all my commits while I watch and write about what happens. Should be either enlightening or a disaster. Probably both.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>startup</category>
      <category>tfhdailystandup</category>
    </item>
    <item>
      <title>Finding Balance in AI-Powered Creation</title>
      <dc:creator>Shashank Raj</dc:creator>
      <pubDate>Fri, 06 Feb 2026 20:07:20 +0000</pubDate>
      <link>https://dev.to/shashank_raj/finding-balance-in-ai-powered-creation-1572</link>
      <guid>https://dev.to/shashank_raj/finding-balance-in-ai-powered-creation-1572</guid>
      <description>&lt;p&gt;We live in an era where incredible resources are at our fingertips. The idea of having an AI as a teacher, mentor, or even a rigorous critic feels almost unbelievable. I’ve been experiencing this firsthand with a project deeply personal to me – a solution designed to solve a particular challenge I’d been wrestling with. I poured nearly a year into it, meticulously architecting every layer, confident that I'd created something truly bespoke.&lt;/p&gt;

&lt;p&gt;Initially, I welcomed the assistance of AI. It felt like a superpower, accelerating the process and refining details. The results looked impressive, almost flawlessly operational. &lt;/p&gt;

&lt;p&gt;But as the project’s scope broadened, a subtle unease began to creep in. It started with minor tweaks, then suggestions for entirely new features. Slowly, insidiously, the project began to evolve beyond my initial vision. The unique fingerprint of my original intent, the core 'why' that fueled its creation, began to blur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There was a point where I felt a disconcerting sense of distance&lt;/strong&gt;. It wasn’t a complete disconnect, but more akin to observing something I’d helped create, but no longer fully controlled. The intricate framework I'd built started to feel like a complex machine – impressive, certainly, but increasingly opaque. It evoked a feeling of being on the periphery, a spectator to a development I had initiated. &lt;br&gt;
&lt;em&gt;I found myself hesitating to use it&lt;/em&gt;, reluctant to share it, feeling a pang of almost parental protectiveness towards something that had, in a way, surpassed its origin.&lt;/p&gt;

&lt;p&gt;There’s a deeply ingrained societal expectation – a pressure, perhaps – to demonstrate resilience, to avoid acknowledging any form of setback. The thought crossed my mind: "Real men don't accept defeat." But then I realized that wasn't a badge of honor; it was a limitation. A refusal to admit that I might have taken a wrong turn, or allowed a tool to guide me too far afield. &lt;/p&gt;

&lt;p&gt;The turning point wasn’t a dramatic epiphany, but a gradual shift in perspective. I realized I’d been allowing AI to dictate &lt;em&gt;how&lt;/em&gt; the project evolved, rather than guiding &lt;em&gt;where&lt;/em&gt; it should go. The mistake wasn't in using AI; it was in relinquishing the driver’s seat. I needed to repurpose it – not as an autopilot, but as a sophisticated navigation system. A source of insights, a generator of possibilities, but ultimately under &lt;em&gt;my&lt;/em&gt; direction.&lt;/p&gt;

&lt;p&gt;It’s humbling to reflect on how far we’ve come. I vividly remember the late nights spent fighting for access to a command line interpreter, just to run a simple Python script. Now, the challenges are of a different order, and AI offers an incredible array of capabilities. But the fundamental principle remains: true innovation comes from combining technology with human intention, and maintaining a sense of ownership over the creative process. It’s a lesson I’ll carry forward, ensuring that the next iteration reflects not just technical prowess, but the heart and soul of the original vision.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>vibecoding</category>
      <category>ownership</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Beyond the Illusion: Are AI Models Learning to Reason by Knowing Their Limits?</title>
      <dc:creator>Shashank Raj</dc:creator>
      <pubDate>Fri, 13 Jun 2025 14:29:10 +0000</pubDate>
      <link>https://dev.to/shashank_raj/beyond-the-illusion-are-ai-models-learning-to-reason-by-knowing-their-limits-1noa</link>
      <guid>https://dev.to/shashank_raj/beyond-the-illusion-are-ai-models-learning-to-reason-by-knowing-their-limits-1noa</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction: The Debate About AI Reasoning&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%2Fhv3s0h0hh2j1q76mmt55.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%2Fhv3s0h0hh2j1q76mmt55.jpg" alt="Image description" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apple's recent paper "&lt;strong&gt;The Illusion of Thinking&lt;/strong&gt;" argues that AI models can't truly reason—they're just sophisticated pattern-matching machines without real understanding. But there's an interesting counter-trend emerging.&lt;/p&gt;

&lt;p&gt;Newer AI models like Claude and Copilot are behaving differently than older ones. When faced with complex tasks, &lt;strong&gt;they increasingly suggest using external tools&lt;/strong&gt; or ask for clarification instead of just giving potentially wrong answers. This shift suggests something important about how AI is evolving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning from Human Behavior&lt;/strong&gt;&lt;br&gt;
Consider this scenario: You need to sort 1,000 books in one hour. Initially, you might try to go faster, working carelessly. But a smart person would eventually recognize the impossible deadline and either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Show only what they completed and admit they ran out of time&lt;/li&gt;
&lt;li&gt;Suggest a better approach or ask for more time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mirrors what we're seeing in AI. Older models might "hallucinate" or give incomplete answers when hitting their limits. Newer models are more like the smart human—they recognize their constraints and suggest better ways to solve the problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What AI Models Can't Do Well&lt;/strong&gt;&lt;br&gt;
Current AI models have several key limitations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limited Understanding&lt;/strong&gt;: They process patterns in text but don't truly "understand" meaning like humans do. They often miss context, sarcasm, or common sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outdated Knowledge&lt;/strong&gt;: They only know what was in their training data and can't access current information or learn new facts during conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Problems&lt;/strong&gt;: Each conversation starts fresh—they don't remember previous chats unless reminded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context Limits&lt;/strong&gt;: They can only process a limited amount of text at once, like having a small working memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hallucinations&lt;/strong&gt;: When they don't know something, they often confidently make up plausible-sounding but false information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bias Issues&lt;/strong&gt;: They can reflect and amplify biases present in their training data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution: AI + Tools = Better Performance&lt;/strong&gt;&lt;br&gt;
The breakthrough isn't making AI models smarter internally—it's connecting them to external tools. This approach addresses their core limitations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge Tools&lt;/strong&gt;: Web search and document retrieval give AI access to current and specialized information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Tools&lt;/strong&gt;: External storage systems help AI remember previous conversations and build on past work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculation Tools&lt;/strong&gt;: Specialized programs handle complex math, data analysis, and logical operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action Tools&lt;/strong&gt;: APIs let AI interact with other software, databases, and services.&lt;/p&gt;

&lt;p&gt;When an AI suggests "use a search engine for current information" or "let's break this into smaller steps," it's demonstrating strategic thinking about problem-solving, even if it's engineered rather than conscious.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building Specialized AI Solutions&lt;/strong&gt;&lt;br&gt;
To create effective AI tools for specific tasks (like analyzing log files), follow this approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Define Clear Boundaries&lt;/strong&gt;: Specify exactly what the AI should and shouldn't do&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose the Right Base Model&lt;/strong&gt;: Pick an AI model suited for your domain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add Specialized Tools&lt;/strong&gt;: Connect databases, APIs, and processing tools relevant to your task&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create Smart Coordination&lt;/strong&gt;: Build a system that knows when to use which tool&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Include Feedback Loops&lt;/strong&gt;: Monitor performance and continuously improve&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This modular approach works better than trying to build one perfect AI that does everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What This Means for the Future&lt;/strong&gt;&lt;br&gt;
This evolution doesn't necessarily mean we're close to Artificial General Intelligence (AGI)—AI that matches human intelligence across all domains. However, it represents something valuable: practical intelligence.&lt;/p&gt;

&lt;p&gt;AI systems are becoming better at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recognizing their own limitations&lt;/li&gt;
&lt;li&gt;Communicating these limitations clearly&lt;/li&gt;
&lt;li&gt;Suggesting effective alternatives&lt;/li&gt;
&lt;li&gt;Coordinating multiple tools to solve complex problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This "know what you don't know" approach makes AI more trustworthy and useful in real-world applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We're entering an era of pragmatic AI—systems that may not think like humans internally, but can solve problems effectively by knowing their limits and using the right tools. This represents a shift from trying to build one super-intelligent AI to creating intelligent ecosystems of specialized components working together.&lt;/p&gt;

&lt;p&gt;The future of AI may be less about creating artificial consciousness and more about building smart, tool-using systems that can tackle complex real-world challenges through strategic coordination and clear communication about their capabilities.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>The Daily Standup Slayer: How This Lazy Manager Automated Everything (Except Meetings)</title>
      <dc:creator>Shashank Raj</dc:creator>
      <pubDate>Fri, 27 Sep 2024 16:46:42 +0000</pubDate>
      <link>https://dev.to/shashank_raj/the-daily-standup-slayer-how-this-lazy-manager-automated-everything-except-meetings-540</link>
      <guid>https://dev.to/shashank_raj/the-daily-standup-slayer-how-this-lazy-manager-automated-everything-except-meetings-540</guid>
      <description>&lt;p&gt;Let's face it, meetings are the beige walls of the productivity world. You know, endless loops of "what could have been" and "should have been" while everyone wrestles over a shrinking timeframe. Articles debunking their usefulness pile up like unread emails, but the charm of a good standup seems unshakeable for some (cough management cough).&lt;/p&gt;

&lt;p&gt;So, here I was, a DevOps and system reliability magician, leading a team of Gen-Z developers who wouldn't fill a single tracker, let alone the holy trinity of email updates, fancy project management tools, and good ol' Excel. &lt;/p&gt;

&lt;p&gt;We were deadlocked. &lt;/p&gt;

&lt;p&gt;Management craved updates everywhere, the devs rebelled against everything, and my job search was going nowhere fast.&lt;br&gt;
Enter automation, the hero in this data-driven odyssey. What if the devs filled one glorious sheet and we used that sheet to conquer all? Talk about killing multiple birds with a few well-aimed scripts!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Building a Fortress of Simplicity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, a template. Think Bunk Beds: easy to understand, enough room for (almost) everything, and compatible with most project management tools on the market. Google Sheets became my weapon of choice, thanks to their fantastic Python API documentation. &lt;/p&gt;

&lt;p&gt;(&lt;a href="https://developers.google.com/sheets/api/quickstart/python" rel="noopener noreferrer"&gt;https://developers.google.com/sheets/api/quickstart/python&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Operation "Fill the Darn Sheet" (Good Luck!)&lt;/strong&gt;&lt;br&gt;
Next, convincing the devs to actually fill this daily. Let's just say my negotiation skills were put to the test. Think Jedi mind tricks, minus the lightsabers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Let the Automation Take Flight&lt;/strong&gt;&lt;br&gt;
Now, the fun part! Imagine a "set it and forget it" solution, a tireless workhorse that runs once and keeps chugging along. Here's the Pythonic breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grab the Credentials&lt;/strong&gt;: We need to authenticate with Google's servers, but hey, only once (thanks, refresh tokens!). This generates a magical "token.json" file, which holds the key to our automated kingdom.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Download:&lt;/strong&gt; Using the Python API, we dive into Google Sheets and extract the glorious data. Pandas, our data wrangling champion, helps us filter for the latest updates.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transformation Time&lt;/strong&gt;: We shape that data into a format that Jira, Youtrack, or your PM tool of choice understands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dissemination is Key&lt;/strong&gt;: The transformed data gets transformed into a json/ csv structure of your chosen project management tool and a friendly email with the latest updates gets sent out to a designated distribution list (think "no-reply" for your sanity).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This json / csv file can be copied directly to Youtrack / Jira, one field at a time, because CTRL+C and CTRL+V is the greatest human invention of all time for us mere programmers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Few Caveats for the Cautious:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remember, the free tier of the Google Sheets API has limitations. Think data on a diet – small and lightweight for optimal processing. &lt;/p&gt;

&lt;p&gt;To avoid polling the entire sheet every time, I employed a Google Apps Script to sort the data by date. Knowing my developers wouldn't write essays in the update section (bless their Gen-Z brevity), I limited the data grab to a mere 20 rows.&lt;/p&gt;

&lt;p&gt;We're talking about targeted data extraction, people, not an epic download marathon!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Shenanigans&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the Python API, I snatched 10 rows of data from the Google Sheet (defined in an environment variable, because who wants hardcoded stuff?). Then, a Google account with the same project was set up to access Gmail (the email hero!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/gmail/api/guides/sending#python" rel="noopener noreferrer"&gt;https://developers.google.com/gmail/api/guides/sending#python&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I whipped up some Docker magic to streamline deployment. The code, nestled snugly in a Docker container, landed on an AWS development instance, where a cron job awaited its cue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Grand Automation Symphony&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the grand finale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;End of Day&lt;/strong&gt;: Developers and I (reluctantly) fill out the glorious template.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;11 PM&lt;/strong&gt;: The Google Sheets Apps Script springs into action, sorting the entire sheet by date (may require a silent prayer to the tech gods).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;12:30 AM&lt;/strong&gt;: A cron job fires on the EC2 instance, launching a Docker container with the Python code.&lt;br&gt;
The Code Does Its Thing: Reads the Google Sheet, transforms the data, injects it into the PM tool, sends the update email, and then… sleeps soundly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wake up to the sweet symphony of the updates, or the lack thereof: &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;The Inevitable Hiccups (and Dreams of Grandeur)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's be honest, the Apps Script can be a bit flaky sometimes, forcing me to resort to manual sorting (a developer's burden, I know). &lt;/p&gt;

&lt;p&gt;Plus, I built a template for Jira integration, but full automation remains a future quest.&lt;/p&gt;

&lt;p&gt;Maybe one day, I'll conquer API integrations with major PM tools, build a product, secure VC funding, and sell it to Atlassian. &lt;/p&gt;

&lt;p&gt;But hey, this is the Lazy Manager's Guide, for now. &lt;/p&gt;

</description>
      <category>python</category>
      <category>management</category>
      <category>automation</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
