DEV Community

Nithin
Nithin

Posted on

Stop Lying in Daily Standups

Daily standups are a theater. Every developer knows it. You stare at Slack, try to remember what you did, lie a little, and type something vague like “worked on the dashboard bug.” Rinse. Repeat.

I stopped doing that. Now my commits tell the truth. I wrote a Shell script. It reads my Git logs, filters by my email, and generates my standup notes. That’s it. No Jira. No Notion. No retrospection gymnastics. Just Git, Terminal, and Copilot.

And yes, it saves me time. But more importantly, it eliminates human memory from the equation. Memory lies. Commits don’t.

The Stack (If You Care)

  • VSCode (because Emacs is dead)
  • Git (the only real source of truth)
  • GitHub Copilot (to type what I don’t want to)
  • Google Sheets (don’t ask)
  • Slack (optional, unfortunately)

How It Works

  1. I write code.
  2. I commit often, with Copilot writing the messages.
  3. At the end of the day, I run a script.
  4. The script reads recent commits based on time of day.
  5. The output becomes my standup report.
  6. I paste it where the team expects me to.

That’s it. No plugin. No integration. Just plain text.

The Script That Does My Job

#!/bin/bash

REPO1_PATH="/path/to/project-one"
REPO2_PATH="/path/to/project-two"
AUTHOR="your.email@example.com"

if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    alias date="date --date"
fi

HOUR=$(date +%H)
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    if [ "$HOUR" -lt 12 ]; then
        START_DATE=$(date -d "yesterday" "+%Y-%m-%d")
    else
        START_DATE=$(date "+%Y-%m-%d")
    fi
    DAY_OF_WEEK=$(date -d "$START_DATE" "+%u")
else
    if [ "$HOUR" -lt 12 ]; then
        START_DATE=$(date -v -1d "+%Y-%m-%d")
    else
        START_DATE=$(date "+%Y-%m-%d")
    fi
    DAY_OF_WEEK=$(date -j -f "%Y-%m-%d" "$START_DATE" "+%u")
fi

if [ "$DAY_OF_WEEK" -eq 6 ] || [ "$DAY_OF_WEEK" -eq 7 ]; then
    START_DATE=$(date -v -Fri "+%Y-%m-%d")
fi

START="${START_DATE}T00:00:00"
END="${START_DATE}T23:59:59"

echo "What we did on ${START_DATE}"
echo "==========================================="

{
    git -C "$REPO1_PATH" log --author="$AUTHOR" --since="$START" --until="$END"         --pretty=format:"- %s" --abbrev-commit --no-merges
    git -C "$REPO2_PATH" log --author="$AUTHOR" --since="$START" --until="$END"         --pretty=format:"- %s" --abbrev-commit --no-merges
} | sort | uniq

echo "==========================================="
echo "End of Update"
Enter fullscreen mode Exit fullscreen mode

Output That Doesn’t Embarrass Me

What we did on 2025-07-23
===========================================
- Refactor: Adjust padding in Combined OI screen
- Add: Support for toggle between chart and table views
- Fix: Crash on missing data in open interest API
- Chore: Remove unused debug logs from dashboard
- Update: Improve spacing in TopBanner layout
===========================================
End of Update
Enter fullscreen mode Exit fullscreen mode

Google Sheets: My Personal Logbook

Each row is a day. Each cell is a commit log. Meetings, code reviews, discussions—those get manually added. I don’t mind. It’s five lines. I don’t write novels.

Performance Reviews Without Anxiety

When the cycle begins, I open the sheet. I trim the log into a focused summary—no digging, just filtering.

It’s unemotional. And it’s honest. Try doing that with Jira.

For Teams

Want your team to stop pretending they were “looking into a few things”?

Let them run the same script with their email. Keep it local. Keep it personal. If you want, post it in a shared thread. But don’t centralize it. Autonomy matters.

Want to Try?

  1. Save the script as update_scrum.sh
  2. Run chmod +x update_scrum.sh
  3. Replace the paths and author email
  4. Run it: ./update_scrum.sh
  5. Pipe output to file (optional): ./update_scrum.sh > daily_log_2025-07-23.md

Final Thought

Most standups are lies. This one isn’t.

Write code. Commit often. Let Git speak for you.

Top comments (0)