<?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: mamareza</title>
    <description>The latest articles on DEV Community by mamareza (@mamareza_fd48d1a86e1b7187).</description>
    <link>https://dev.to/mamareza_fd48d1a86e1b7187</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%2F4198206%2F6bff5c4b-8dc2-4937-8778-568ccd5de8f3.png</url>
      <title>DEV Community: mamareza</title>
      <link>https://dev.to/mamareza_fd48d1a86e1b7187</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mamareza_fd48d1a86e1b7187"/>
    <language>en</language>
    <item>
      <title>I got tired of doing timezone math in Google Meet, so I built an open-source, zero-permission Chrome extension</title>
      <dc:creator>mamareza</dc:creator>
      <pubDate>Wed, 21 Oct 2026 11:29:05 +0000</pubDate>
      <link>https://dev.to/mamareza_fd48d1a86e1b7187/i-got-tired-of-doing-timezone-math-in-google-meet-so-i-built-an-open-source-zero-permission-3dka</link>
      <guid>https://dev.to/mamareza_fd48d1a86e1b7187/i-got-tired-of-doing-timezone-math-in-google-meet-so-i-built-an-open-source-zero-permission-3dka</guid>
      <description>&lt;p&gt;If you work on an asynchronous, globally distributed engineering team, you know this exact feeling:&lt;/p&gt;

&lt;p&gt;You're 25 minutes into a Google Meet call with teammates in Tokyo, London, New York, and Mumbai. Discussion runs long, and someone suggests:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Let's push this architecture review by another 45 minutes, or maybe reschedule for tomorrow morning."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Immediately, everyone freezes and starts doing mental gymnastics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Wait, what time is it for Alex right now?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Is 8:00 AM my time 11:30 PM for Priya?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are we asking Yuki to review a pull request at 2:00 in the morning?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Timezones are painful enough on calendars, but during live video calls, calculating them on the fly breaks conversational flow.&lt;/p&gt;

&lt;p&gt;To solve this, I built &lt;strong&gt;&lt;a href="https://github.com/mamarezza/meet-clocks" rel="noopener noreferrer"&gt;Meet Clocks&lt;/a&gt;&lt;/strong&gt; — a lightweight, open-source Chrome extension that brings ambient timezone awareness and meeting planning directly into Google Meet.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ What it Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 🕒 Stationary Video Tile Badges
&lt;/h3&gt;

&lt;p&gt;Instead of opening world clock tabs or checking widgets on your phone, frosted-glass clock pills pin neatly to each participant's video tile in Google Meet.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsk4e3de1uj8cac5n6gxo.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%2Fsk4e3de1uj8cac5n6gxo.png" alt="Meet Clocks Video Tile Badges" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays local time, timezone offset (&lt;code&gt;+3h&lt;/code&gt;, &lt;code&gt;−13h&lt;/code&gt;), and day shifts (&lt;code&gt;yesterday&lt;/code&gt; / &lt;code&gt;tomorrow&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Badges automatically detect free space in tile corners and fade smoothly on hover so they never cover Google Meet's native microphone/camera buttons or attendee names.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. ☀️ Daylight &amp;amp; Sleep Status Dots
&lt;/h3&gt;

&lt;p&gt;A glanceable visual indicator next to each person's badge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;☀️ Working Hours (09:00 – 18:00)&lt;/strong&gt;: Green dot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌙 Off-Hours (18:00 – 22:30 / 06:30 – 09:00)&lt;/strong&gt;: Amber dot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💤 Night / Sleep (22:30 – 06:30)&lt;/strong&gt;: Red sleep warning so you never schedule late-night calls by accident.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. ✨ 30-Minute Overlap Scrubber (Golden Hours Finder)
&lt;/h3&gt;

&lt;p&gt;When planning a follow-up call, click &lt;strong&gt;Plan&lt;/strong&gt; in the meeting dock to reveal a 24-hour overlap ribbon with 30-minute intervals:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgomgmw6b3w4ia1ntamx.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%2Ftgomgmw6b3w4ia1ntamx.png" alt="Meet Clocks Golden Hour Planner" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you drag the slider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All participants' clocks scrub synchronously in 30-minute intervals.&lt;/li&gt;
&lt;li&gt;The planner automatically flags &lt;strong&gt;&lt;code&gt;✨ Golden Hour&lt;/code&gt;&lt;/strong&gt; when all participants are in their waking/working window, or displays warnings like &lt;strong&gt;&lt;code&gt;⚠️ Yuki Asleep&lt;/code&gt;&lt;/strong&gt; when someone is offline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also test this right now without installing anything via the &lt;strong&gt;&lt;a href="https://meet-clocks-relay.mamarezzza.workers.dev/" rel="noopener noreferrer"&gt;Interactive 4-Person Web Playground&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 💬 1-Click Chat Proposal
&lt;/h3&gt;

&lt;p&gt;Click &lt;strong&gt;Share&lt;/strong&gt; to format and paste a clean summary into Google Meet's in-call chat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Meeting Timezones:
• Alex: 09:00 AM (New York) ☀️
• Sarah: 10:00 PM (Tokyo) 🌙
• Dev: 06:30 PM (Mumbai) ☀️
— via Meet Clocks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ Under the Hood: Engineering &amp;amp; Privacy
&lt;/h2&gt;

&lt;p&gt;When building browser extensions for workplace communication tools, &lt;strong&gt;privacy and performance&lt;/strong&gt; must come first.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 1. Zero-Trust Permission Architecture
&lt;/h3&gt;

&lt;p&gt;Most meeting extensions ask for extensive permissions like &lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt;, web request interceptors, or browser history access. &lt;/p&gt;

&lt;p&gt;Meet Clocks is engineered with minimal footprint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Only 1 Permission Requested&lt;/strong&gt;: &lt;code&gt;"storage"&lt;/code&gt; — strictly used to save your local 12h/24h format preference in &lt;code&gt;chrome.storage.local&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoped Content Script&lt;/strong&gt;: Only runs on &lt;code&gt;https://meet.google.com/*&lt;/code&gt;. It cannot read bookmarks, browsing history, or other open tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Media Access&lt;/strong&gt;: No access to camera, microphone, or meeting speech transcripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌐 2. Ephemeral In-Call Presence
&lt;/h3&gt;

&lt;p&gt;For teammates who both have the extension installed, times sync ephemerally through a lightweight, open-source Cloudflare Worker relay. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No user accounts, passwords, or persistent profiles.&lt;/li&gt;
&lt;li&gt;Room tokens are hashed with SHA-256.&lt;/li&gt;
&lt;li&gt;All presence data self-destructs 30 minutes after your meeting ends.&lt;/li&gt;
&lt;li&gt;If you don't want to sync, you can add names and timezones manually offline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧩 3. Collision-Free DOM Observation
&lt;/h3&gt;

&lt;p&gt;Google Meet's video layout is highly dynamic — tiles resize, reorder, and split into pagination grids as participants join or share screens. &lt;/p&gt;

&lt;p&gt;Rather than thrashing the DOM with frequent re-renders, Meet Clocks uses a throttled &lt;code&gt;MutationObserver&lt;/code&gt; combined with bounding-rect collision checks to anchor badges firmly in available negative space without jitter.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Try It Out (100% Free &amp;amp; Open Source)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;Chrome Web Store&lt;/strong&gt;: &lt;a href="https://chromewebstore.google.com/detail/meet-clocks/nkpkjejmekdhmihncalpkafacneeljka" rel="noopener noreferrer"&gt;Install Meet Clocks (Free)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎮 &lt;strong&gt;Live Interactive Web Playground&lt;/strong&gt;: &lt;a href="https://meet-clocks-relay.mamarezzza.workers.dev/" rel="noopener noreferrer"&gt;Try the 4-Person Scrubber in your browser&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/mamarezza/meet-clocks" rel="noopener noreferrer"&gt;mamarezza/meet-clocks&lt;/a&gt; (MIT Licensed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you find it helpful for your distributed team, PRs, feedback, and GitHub stars ⭐ are very welcome!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
