WeSearch

Our Attention Span Is Now Shorter Than a Goldfish's. So I Built a Chrome Extension

·4 min read · 0 reactions · 0 comments · 0 views
Our Attention Span Is Now Shorter Than a Goldfish's. So I Built a Chrome Extension

Every Site Blocker Uses a Static List. So I Built One That Doesn't. Every site blocker on...

Original article
DEV Community
Read full at DEV Community →
Full article excerpt tap to expand

try { if(localStorage) { let currentUser = localStorage.getItem('current_user'); if (currentUser) { currentUser = JSON.parse(currentUser); if (currentUser.id === 3369047) { document.getElementById('article-show-container').classList.add('current-user-is-article-author'); } } } } catch (e) { console.error(e); } Snowball Posted on Apr 28 Our Attention Span Is Now Shorter Than a Goldfish's. So I Built a Chrome Extension #javascript #productivity #showdev #sideprojects Every Site Blocker Uses a Static List. So I Built One That Doesn't. Every site blocker on the Chrome Web Store works the same way: you create a blocklist upfront, and it blocks those sites. I tried several — they all hit the same wall. So I built Dynamic Site Blocker, a session-based blocker that asks you "Block or Allow?" the first time you visit each site during a session. No pre-made lists. No configuration. Just a decision in the moment. 👉 Chrome Web Store 👉 GitHub The Problem: Distraction Is Structural Getting sidetracked during work — opening a random site during an idle moment like waiting for an AI response, then losing 10-20 minutes — is something most developers have experienced. This isn't a willpower problem. It's an environment problem. Research by Gloria Mark at UC Irvine shows that the average time a person focuses on a single screen dropped from 150 seconds in 2004 to 47 seconds in 2024 (Mark, 2023). On top of that, it takes an average of 23 minutes and 15 seconds to get back to a task after an interruption (Mark et al., CHI 2008). Trying not to get distracted is unrealistic. Building an environment that makes distraction harder is the practical approach. The Static List Dilemma Existing blockers — StayFocusd, BlockSite, Cold Turkey, LeechBlock, you name it — all rely on static lists. You decide what to block before you start working. This creates a fundamental dilemma: ❌ Too strict → blocks what you need. YouTube has tech talks. Twitter has industry news. What counts as "distraction" changes with every task. ❌ Too loose → useless. You can't predict where you'll end up. A link from Hacker News leads to a blog post, and 20 minutes vanish. If it's not on the list, the blocker can't help. ❌ Per-task presets → management overhead. Creating and maintaining presets for different work contexts becomes a task in itself. The problem wasn't which sites to block. The problem was deciding upfront at all. The Solution: Decide on the Spot Dynamic Site Blocker takes a different approach: 1. Start a session — Click "Start Session" from the extension popup. 2. Decide per site — The first time you visit any domain during the session, a Block/Allow overlay appears. That's it — just one question: "Do you need this site right now?" 3. Blocked sites stay blocked — Blocked domains redirect to a custom block page with randomized humor messages (14 variations) and an attempt counter. 4. Session end = full reset — Hit "End Session" and all decisions are cleared. Next session starts fresh. Static list: Pre-build list → Block → List management becomes work Dynamic: Start session → Decide on the spot → Reset on session end Enter fullscreen mode Exit fullscreen mode Accidentally blocked something? Unblock it from the popup. Let something through that you shouldn't have? Block it retroactively. Both directions work. Competitive Landscape Before building this, I searched the Chrome Web Store thoroughly. Every blocker I found used static lists, timers, schedules, or some combination. A…

This excerpt is published under fair use for community discussion. Read the full article at DEV Community.

Anonymous · no account needed
Share 𝕏 Facebook Reddit LinkedIn Email

Discussion

0 comments

More from DEV Community