Deep Work, With the Clock in the Corner
Context switching is the tax; flow is the refund. Stillscape pairs your IDE with a rainy-cafe scene, 90/20 and 52/17 presets, and a picture-in-picture timer that floats over whatever you're shipping.
Enter the room — free No ads · No account · PiP timer · Local-first dataBuilt for long blocks, not just 25 minutes
- Presets that match real work. Deep Work 90/20 for the hard refactor, 52/17 for the all-day grind, classic 25/5 for review and email — one click each.
- PiP over the IDE. A native picture-in-picture mini-timer (with a draggable fallback) keeps the clock visible without stealing an edge of your editor.
- Open-office masking. Rain, cafe and white-noise layers on independent faders — the standup behind you becomes weather.
- Tickets as tasks. "MIGRATE-142 — 3 pomodoros" tracks its own count; finished blocks assign themselves.
- Local-first, forever. No account, no telemetry: stats live in your browser and export to CSV when your retro needs receipts.
- Offline PWA. VPN died? The timer didn't.
The economics of one uninterrupted hour
A interrupted hour isn't an hour of work — it's twelve minutes of work plus four ramp-ups. The 90/20 preset exists because complex code needs a long runway: the first twenty minutes load context, the middle fifty write it, the break commits it. Stillscape's scene supports the runway — dimming when focus starts, warming when it ends — so the boundary between "checking Slack" and "shipping" is visible from across the room.
Details on the intervals live in the Pomodoro guide; the timer itself is one click away.
Different code, different sound
Debugging and greenfield work load different parts of your head, so they shouldn't share a mix:
Debugging and reading unfamiliar code
Tracing a bug through someone else's abstraction is verbal-cortex work. Words in the room — podcasts, office chatter, lyric-heavy playlists — compete directly. The honest choices are speech-shaped noise: white or brown noise at 50–60%, rain at 40% if you want texture. Run classic 25/5; debugging hits natural pauses at each failed hypothesis, and short blocks let you park one cleanly.
Writing new code and refactoring
Once the design is in your head, you need a long, unbroken runway. That's the Deep Work 90/20 preset: twenty minutes to reload context, fifty to write, twenty to let it settle. Rain and cafe at moderate levels mask an open office without pulling attention. Name the task after the ticket — "MIGRATE-142 — 3 pomodoros" — so finished blocks assign themselves.
The low-stakes list
Dependency bumps, docs, CI babysitting, email: run 52/17 or plain 25/5 with one of the music channels low. These blocks are exactly where flow goes to die, and a timer keeps them from eating the deep-work window you protected all morning.
Recovery between reviews and meetings
A calendar full of gaps isn't focus time — it's fragmented time, and pretending otherwise is how afternoons disappear. Treat the gaps deliberately:
- After a code review, take ten minutes. Leave the comments, then run one breathing circle before touching your own branch — reviewing code in someone else's style leaves residue.
- Between meetings, open the room instead of chat. A single 25-minute block in the gap is worth more than a theoretical 90 you never get.
- After a draining standup or incident call, change the scene. Fireplace or forest for ten minutes resets the room; the scene dimming does half the psychological work of "that's over".
- Cap the restarts. If the day has more than three gaps, accept it: batch the small tasks into one 52/17 block and protect tomorrow's morning instead.
The standup ritual
Give the first fifteen minutes of the day one fixed shape:
- Before standup, glance at yesterday's heatmap square and today's task list — thirty seconds of honest accounting.
- In standup, commit to one ticket that will get a full block, not a list of seven maybes.
- Immediately after, start the first Deep Work block while the commitment is warm. The rainy-cafe scene dims, and the move from "talking about work" to "doing work" takes one click instead of an hour of drift.
One honest caveat: Stillscape can't silence your coworkers or your notifications — it's a browser tab, not a fortress. Mute the laptop, and let the rain handle the rest.
Questions developers ask
Will noise hurt when I'm writing comments and commit messages?
Language-heavy micro-writing sits between the two modes. Keep the masking mix but drop the music channel entirely — neutral noise without melody leaves more verbal bandwidth for phrasing.
Does my data leave my machine?
No. There's no account and no telemetry — your stats live in the browser and export to CSV whenever a retro needs receipts.
What if my team sits in a loud open-plan office?
That's the masking case the faders were built for. Push white or brown noise to 60% and rain to 40%, wear closed-back headphones, and the standup two rows back becomes weather.
How do I protect a deep-work block when meetings can land anywhere?
Treat the block as movable, not optional. Find the longest gap in the day and put the 90/20 preset there: status set before the block, PiP timer over the IDE so anyone sharing your screen sees you're in one. If the gap shrinks below 45 minutes, run a 25/5 block instead — a real short block beats a fake long one.
Does the timer work with a terminal-only workflow?
Yes — Stillscape lives in its own tab or window, so it pairs with a tiling setup, a second monitor or a fullscreen terminal exactly as well as with an IDE. The PiP mini-timer floats over anything, and the audio keeps playing while you're in another window.
Onboarding week: reading code as the whole job
The first weeks on a new codebase are reading-heavy, and reading is the most interruption-fragile mode there is:
- Trace one request end to end per block. Classic 25/5, speech-shaped masking only: white noise at 50%, rain at 30%, no music — the verbal load is already maxed.
- Write the map as you go. End each block with three bullets in the task's description — module, entry point, one surprise. Future-you greps those bullets instead of re-reading the code.
- One 90/20 block per day, no more. Reading all day is exhausting; pick the single subsystem you must understand deeply and give it the long runway. Everything else gets short blocks.
On-call days and incident evenings
Interrupt-driven days need a different contract with the timer — you can't promise ninety uninterrupted minutes:
- Run short defensive blocks. 25/5 with brown noise at 40% as a floor under the pager. If the page fires mid-block, handle it and start a fresh block — a rebuilt twenty minutes beats a poisoned twenty-five.
- Keep a low-stakes queue loaded. Docs, small refactors, test coverage: exactly the work that fits between alerts. One glance at the task list and you're productive in thirty seconds instead of doom-scrolling the dashboard.
- After the incident, come down on purpose. Ten minutes of fireplace or forest, one breathing circle, then either a cleanup block or an honest stop. Adrenaline writes terrible commits.
Remote days: the calendar is the open office
Working from home removes the standup two rows back and replaces it with six video calls. The room helps in the seams:
- Claim the seams before chat does. Straight after lunch, start one 25-minute block before opening the messaging tab; the first post-lunch thread usually costs the whole afternoon.
- Make focus hours visible. Start the block and let the dimmed rainy-cafe scene sit behind the timer — a signal to housemates and to yourself. (It won't sync to your calendar; Stillscape is a browser tab, not a workplace integration. The "heads-down" message is yours to send.)
- After the last call, decompress before code. Five minutes of the breathing circle with ocean at 30%, then the first real block of the evening — if you owe yourself one.
Dead weeks, demo weeks
Every team has slow weeks and crunch weeks; preset the rhythm to match:
- Slow weeks: where 52/17 earns its keep — long grinds on tech debt with music low, Deep Work blocks on the refactor you've been promising since the retro.
- Crunch weeks: shorten to 25/5, even though it feels wrong. Under deadline pressure the temptation is to skip breaks entirely; the timer's job is to force the five minutes so 4 p.m. you still compiles.
- Demo morning: one 25-minute block for final checks, using the exact masking mix you rehearsed with. Trying a novel soundscape before a demo is a self-inflicted risk.
Start the block, close the tickets
Rain in the background, timer in the corner, flow in the foreground.
Enter the room