Don't just say “hi”.

Don't

hihow are you?call?you there?

Do

Jordan Miller

Hi Ashwin, hope you're doing well. Can you please look into the Payouts v2 proposal and give me your feedback?

  1. Thursday, November 5th
  2. Jordan Miller, 4:12 PM: Thanks for the webhook retry fix, Harbor Bank is happy 🙏
  3. Today
  4. Jordan Miller, 10:02 AM: hi
  5. Ashwin, 10:03 AM: hello, what's up?
  6. 6 minutes later, you were away
  7. Jordan Miller, 10:09 AM: how are you?
  8. Ashwin, 10:10 AM: doing well, how's it going?
  9. 12 minutes later, still no question
  10. Jordan Miller, 10:22 AM: call?
  11. Ashwin, 10:23 AM: focusing on another task, let me know here
  12. 19 minutes later, I went back to work
  13. Jordan Miller, 10:42 AM: can you look into the Payouts v2 proposal and give feedback?
  14. 40 minutes and 6 messages before the actual ask

One message. One reply.

Same request, asked in one message. Reviewed and answered in 4 minutes instead of 40.

Just “hi”40 min6 messages before the actual ask
Hi + the question4 min2 messages, done
  1. Today
  2. Jordan Miller, 10:02 AM: Hi Ashwin, hope you're doing well. Can you please look into the Payouts v2 proposal and give me your feedback?
  3. 4 minutes later, I read the doc
  4. Ashwin, 10:06 AM: Reviewed, left 3 comments in the doc. Batching looks good, one question on the retry window.
  5. Asked, reviewed and answered in 4 minutes

Don't ask for “a sec”.

Don't

Got a sec?Quick questionAre you free?

Do

Tyler Brooks

Got a sec to send me the Figma link for the pricing page?

  1. Wednesday, November 4th
  2. Tyler Brooks, 1:20 PM: pricing page review moved to Monday
  3. Friday, November 6th
  4. Tyler Brooks (notification): got a sec?
  5. Tyler Brooks, 4:55 PM: got a sec?
  6. Ashwin, 4:56 PM: sure, what's up?
  7. 5 minutes later, you were still typing
  8. Tyler Brooks, 5:01 PM: can you send me the figma link for the pricing page
  9. Ashwin, 5:01 PM: figma.com/design/pricing-v3
  10. 6 minutes of dread, for a Figma link

Don't just ask for a call.

Don't

Call?hi bro call?Can we hop on a quick call?

Do

Marco Rossi

Hi Ashwin, I'd like to talk about the webhook retry change before we ship it. I'm free now and for the rest of the day, so call whenever it suits you.

  1. Today
  2. My phone, 10:31
  3. Marco Rossi (notification): hi bro call?
  4. Marco Rossi calls
  5. Marco: can you hear me?
  6. Me: yep
  7. Marco: you're on mute
  8. Me: I'm not on mute
  9. Marco: oh, it's me. ok
  10. Marco: can you see my screen?
  11. Me: I can see your Spotify
  12. Marco: one sec
  13. Marco: ok so basically, can we ship the webhook retry change today?
  14. Me: yes. ship it.
  15. My phone, 10:45
  16. Marco Rossi (notification): perfect, thanks! 🙌
  17. Tyler Brooks (notification): hai ashwin, call?
  18. Tyler Brooks calls
  19. 14 min 6 s for “yes”, and the next call is already ringing

Write it in one message.

Don't

soquick thingabout the deploynvmactually wait

Do

Tyler Brooks

Is tomorrow's deploy still on? No rush, answer in the morning.

  1. Today
  2. Tyler Brooks, 6:02 PM: heading out, see you tomorrow 👋
  3. My phone, 11:47
  4. Tyler Brooks (notification): so
  5. Tyler Brooks (notification): quick thing
  6. Tyler Brooks (notification): about the deploy tomorrow
  7. Tyler Brooks (notification): nvm
  8. Tyler Brooks (notification): actually no
  9. Tyler Brooks (notification): wait
  10. Tyler Brooks (notification): ok can you call me
  11. 9 hours later, I slept, eventually
  12. My phone, 8:58
  13. Tyler Brooks, 11:47 PM: so
  14. Tyler Brooks, 11:47 PM: quick thing
  15. Tyler Brooks, 11:47 PM: about the deploy tomorrow
  16. Tyler Brooks, 11:47 PM: nvm
  17. Tyler Brooks, 11:47 PM: actually no
  18. Tyler Brooks, 11:47 PM: wait
  19. Tyler Brooks, 11:47 PM: ok can you call me
  20. 9 hours later, I slept, eventually
  21. Ashwin, 8:58 AM: morning! what about the deploy?
  22. Tyler Brooks, 9:03 AM: oh nvm, figured it out 👍
  23. 7 buzzes near midnight, 0 information

Reply in the thread.

Hover the question, click “Reply in thread”, answer there. Each question keeps its own conversation, and the channel stays readable.

Don't, as new messages in the channel

yes, seeing 502swhich one are you answering?so is sandbox down or not?

Do, inside the thread

Thread#payments-help
Tyler Brooks

webhooks to Harbor Bank failing since 9 AM UTC?

2 replies

Jordan Miller

Seeing 502s from their endpoint since 9:02 AM UTC. Checking with their team.

Tyler Brooks

Thanks. I'll tell the customer, update here when you hear back?

  1. Today
  2. Tyler Brooks, 10:12 AM: webhooks to Harbor Bank failing since 9 AM UTC?
  3. Greg Hollis, 10:13 AM: is the sandbox down?
  4. Jordan Miller, 10:14 AM: yes, seeing 502s
  5. Marco Rossi, 10:14 AM: sandbox is fine for me
  6. Tyler Brooks, 10:15 AM: which one are you answering?
  7. Jordan Miller, 10:15 AM: the webhooks
  8. Greg Hollis, 10:16 AM: so is sandbox down or not?
  9. 2 conversations, 1 channel, 0 threads

Ask in the channel, not my DMs.

Don't

hey, how do I get prod access?who do I ask for replica creds?

Do

Jordan Miller

How do I get read access to the prod replica? Answer in a thread so the next person can find it.

  1. Today
  2. Jordan Miller, 11:05 AM: hey, how do I get read access to the prod replica?
  3. Ashwin, 11:09 AM: Request the replica-readonly role in the access portal, pick “payments-prod”, and add your manager as approver. Takes about 10 minutes.
  4. Jordan Miller, 11:10 AM: perfect, thanks!
  5. Tyler Brooks (notification): how do I get access to the prod read replica?
  6. Greg Hollis (notification): quick one, who gives out prod replica access?
  7. Marco Rossi (notification): hey, how did you get read access to prod?
  8. Same answer, four DMs, zero search results

Don't paste your AI's essay.

Don't

600 words from your agent, pasted as-is.
I hope this message finds you well — and that your week is off to a great start!

Do

Jordan Miller

Random logouts: our refresh window is 60s and one failed refresh logs people out. PR #482 widens it to 5 min and adds a retry. Can you review it today?

  1. Today
  2. Lena Fischer, 2:40 PM: Anyone looked at the random logouts yet? Support has 14 tickets.
  3. Jordan Miller, 3:12 PM: And the window is sourced from refresh_window: 60s in auth.yaml. Now, I noticed that right away, and I think that's part of why I got stuck on it — anchoring is a real risk when the first suspicious thing you see is also the thing you're most familiar with — so I tried to deliberately step back. A narrow window isn't wrong by itself. The window is only a problem if combined with the error handling. The return ErrSessionExpired on any refresh error means a single delayed or dropped response is terminal. There's no retry, no backoff, nothing distinguishing a transient timeout from a genuinely revoked token. Which brings up latency. On /refresh, p95 moves from roughly 80ms during off-peak to around 1.4 seconds during the afternoon window — but overlap isn't causation, and I can't tell from the telemetry whether the latency is causing the logouts. Clock skew is the one I almost dismissed — roughly 1.8 seconds between the two application nodes. Redis I spent a fair amount of time on — memory is comfortable, CPU is fine — but I want to be clear I haven't closed it. The load balancer's sticky-session config is the one gap I'd flag most clearly — a known unknown, not a clean negative. Proposed mitigation, provisionally: widen the refresh window to five minutes, add a single retry with backoff, and gate the whole thing behind a feature flag. I'd characterize this as risk-reducing rather than a verified fix. Open questions I still can't answer: whether Tuesday's deployment touched the auth path — I have a partial diff — and whether the behavior reproduces outside peak windows. The proposed change is up as PR #482 if you want to look at the diff. I'd honestly treat everything above as a working theory rather than a diagnosis — happy to revise scope as these open questions resolve.
  4. AI summary: Logouts likely come from a 60s refresh window with no retry on failure. PR #482 proposes a fix and needs a review.
  5. 304 words, 10 em-dashes, and the ask is in the last paragraph

Always say the time zone.

Don't

at 7amby EODlet's sync at 9tomorrow

Do

Marco Rossi

Impact 7:00–9:15 AM UTC (12:30–2:45 PM in Bengaluru). Root cause: expired cert on the settlement gateway.

Converting times? pismozones.ashwingopalsamy.in

  1. Today
  2. Marco Rossi, 2:50 PM: Impact started at 7am, mitigated by 9:15. Root cause was an expired cert on the settlement gateway.
  3. Tyler Brooks, 2:51 PM (in thread): 7am where?
  4. Greg Hollis, 2:52 PM (in thread): is that BRT?
  5. Lena Fischer, 2:52 PM (in thread): UTC?
  6. Jordan Miller, 2:53 PM (in thread): Jakarta 7am or Bengaluru 7am?
  7. Tyler Brooks, 2:55 PM (in thread): a customer in Austin says it started at 1
  8. Lena Fischer, 2:56 PM (in thread): can you post it in UTC
  9. 6 replies to work out one time

Read the status before you ping.

Don't

hiurgent??

Do

Tyler Brooks

Payouts stuck for Harbor Bank since 10 AM UTC. Ashwin's out, his status says to ask here.

  1. Monday, November 9th
  2. Tyler Brooks, 9:14 AM: hi
  3. Tyler Brooks, 9:14 AM: urgent
  4. Tyler Brooks, 9:15 AM: payouts stuck for Harbor Bank
  5. 47 minutes later, I was in the sea
  6. Tyler Brooks, 10:02 AM: ?
  7. Tyler Brooks, 10:30 AM: ??
  8. Tyler Brooks, 11:05 AM: nvm, Lena sorted it
  9. 3 days later, still on the beach
  10. Thursday, November 12th
  11. Ashwin, 9:30 AM: back now, anything still open?
  12. 6 messages to someone whose status named a backup

Raise a ticket, not a favour.

Don't

can you quickly pull this?while you're in there…can you just change it in prod?

Do

Greg Hollis

Request: failed payouts for Harbor Bank, Nov 1–7, as CSV. Needed by 2 PM ET today.

  1. Today
  2. My status: Sprint: ledger migration
  3. Greg Hollis, 11:05 AM: hey ashwin, can you quickly pull last week's failed payouts for Harbor Bank? need it for a call at 2
  4. 6 minutes later, I was mid-migration
  5. Greg Hollis, 11:11 AM: also can you update their webhook URL in prod?
  6. Greg Hollis, 11:14 AM: and add merchant 48219 while you're in there 🙏
  7. Ashwin, 11:15 AM: can you raise these in #payments-requests? the form takes a minute
  8. Greg Hollis, 11:16 AM: ok
  9. 3 favours tried to jump the sprint. The board said triage.

Don't chase updates. Read them.

Don't

any update?ETA?RCA by EOD?is it fixed?

Do

Tyler Brooks

Customer impact: Harbor Bank has 312 payouts pending, cutoff 4 PM UTC. No reply needed.

  1. Today
  2. Lena Fischer, 7:32 PM: Investigating delayed payouts for some EU merchants. Next update 2:30 PM UTC.
  3. Tyler Brooks, 7:34 PM: any update?
  4. Marco Rossi, 7:36 PM: rolled payouts-worker back to v412
  5. Tyler Brooks, 7:37 PM: any update??
  6. Tyler Brooks, 7:40 PM: customer is asking, any ETA?
  7. Tyler Brooks (notification): can you do this quickly? their CFO is on a call
  8. Jordan Miller, 7:42 PM: queue draining, 40% through
  9. Tyler Brooks, 7:45 PM: ETA?
  10. Tyler Brooks, 7:50 PM: can we get the RCA by EOD?
  11. 10 minutes later, the team kept fixing it
  12. Lena Fischer, 8:00 PM: Mitigated. Payouts are flowing. Next update 3:00 PM UTC. RCA within five business days, per the incident process.
  13. Tyler Brooks, 8:01 PM: is it fixed?
  14. 7 pings from one person during a 28-minute incident

Say when, not just 👀.

Don't

👀nvm, figured it out

Do

Marco Rossi

👀 Looking now. Will approve by 3 PM UTC.

  1. Monday, November 2nd
  2. Ashwin, 9:12 AM: Can you approve the refund-limit PR? It blocks Thursday's release.
  3. 1 day later, still 👀
  4. 2 days later, still 👀
  5. Thursday, November 5th
  6. Ashwin, 9:02 AM: any update on this? release is today
  7. Marco Rossi, 9:31 AM: oh! thought I'd approved it. on it now
  8. 3 days of “he's seen it”

Keep secrets out of chat.

Don't

card 4242 4242 4242 4242 declined, why?here's the key: sk_live_…prod password is…

Do

Jordan Miller

Payment pay_8Hk2Qm declined twice. Can you check why?

  1. Today
  2. Jordan Miller, 4:05 PM: customer's card 4242 4242 4242 4242 declined twice, why?
  3. The message was hidden because it may contain a card number.
  4. Ashwin, 4:06 PM: can you send the payment ID instead?
  5. Jordan Miller, 4:07 PM: pay_8Hk2Qm
  6. One card number, now in the audit log. Compliance knows your name.

Six replies to agree on what “7am” meant.

“7am”, according to whom?
A long AI-written investigation: refresh window, ErrSessionExpired, p95 latency, clock skew, Redis, sticky sessions, a provisional mitigation, open questions and PR #482.

Before you send.

Paste your message. A bot with good intentions and no tact reviews it before I have to. Press Enter to send it anyway and see how I reply.

Try one:
Ashwin
MessagesFiles
Aa

Copy-paste kit.

For the next “hi”, the next “any update?”, and the next deadline someone sets on your holiday.

Replies

To a “hi”

Ashwin

Hey! Happy to help. What's the question? (comms.ashwingopalsamy.in/hi)

To a favour in a DM

Ashwin

Happy to help. Can you raise it in #payments-requests so it gets prioritised? Your assistant can draft it from one line.

To “any update?”

Ashwin

Latest update is pinned in #inc-payouts-delayed. The next one lands at 2:30 PM UTC, as promised in the last one.

An incident update

Lena Fischer

Status: Investigating · Impact: delayed payouts for some EU merchants · Next update: 2:30 PM UTC · Questions in this thread, please

Statuses

Ashwin Gopalsamy
Staff software engineer · Bengaluru
💬No need to say hi first, just ask · comms.ashwingopalsamy.in/hi
🌴Out until Nov 12 · payouts → @lena · fires → #payments-oncall · “hi” → no
🪔Diwali, Bengaluru office closed · back Monday · fires → #payments-oncall
🎧Heads-down until 2:00 PM UTC · ask the question, I'll answer after
🌍Working 1:30–10:00 PM UTC · async-friendly · questions welcome, hellos optional