MyTimer — the break that waits

Inspiration

Fifteen years ago, I had eye surgery. My ophthalmologist told me to take a five-minute break from screens every 45 minutes, but I kept forgetting. My boyfriend was a programmer, and he knew how to turn care into something practical: he built a tiny Windows app just for me—one that gently reminded me to look away and rest my eyes.

Life changed for both of us, and after a few Windows updates, the app disappeared too. But I held on to the memory of that love and the thoughtfulness behind it. I often wished I could bring it back. I was not a programmer; I had no source code, only the memory of what the app had meant to me.

Then I found Codex and GPT-5.6. For the first time, I had a way to rebuild that idea and create MyTimer.

The problem

People work through long screen sessions without noticing that their eyes, body, and attention need a reset.

  1. People forget. Focus, stress, meetings, and “one more task” make breaks easy to postpone.
  2. Most timers have poor timing. A fixed alarm can interrupt a presentation or full-screen task, and feels like another demand rather than support.
  3. The lightweight option is missing. Many wellbeing tools become dashboards and trackers. I wanted a small companion that waits, then offers a real-life reset at a better moment.

Core behaviour

1. Normal focused work

MyTimer lives in the Windows notification area. It keeps a local 30–60 minute rhythm (45 minutes by default), shows a brief heads-up ten minutes before a reset, and shows a final 15-second countdown. The user can choose Later (10 min) when they need a short deferral.

2. It is not a good time to interrupt

When Windows reports a busy, full-screen, or Presentation Mode state, MyTimer stays quiet. If a reset becomes due, it is held rather than discarded. When that state ends, MyTimer schedules the reset again after a short delay. The user can also pause MyTimer manually and resume with a fresh rhythm.

3. A real offline reset

If the user does not defer the break, MyTimer starts a five-minute dimmed reset automatically. It gives one friendly, screen-free suggestion: drink water, stretch, look into the distance, or walk to another room. The user can choose End break at any time.

If the person is still away when the reset ends, MyTimer keeps the reset visible and waits for mouse or keyboard activity. Only when the person returns does it start the next work rhythm.

How I built it

MyTimer is a native Windows desktop app built with PowerShell and WPF. That choice made it possible to create a small, local, no-account tool that works directly with Windows features.

  • WPF + Windows notification area: compact countdown bubble, settings, dimmed reset, and tray interaction.
  • Windows notification state API: detects Windows busy, full-screen, and Presentation Mode states so the app can hold a poorly timed reset.
  • Windows last-input API: detects when the person is still away at the end of a reset.
  • Local storage: saves the chosen rhythm locally in AppData. There is no account, backend, or network dependency.
  • Codex and GPT-5.6: used for product exploration, implementation, debugging, UI iteration, and repeated hands-on testing.

The small VBScript file is only a Windows launcher: it opens the PowerShell app without a console window. It is not part of MyTimer’s product logic.

Challenges

  • Timing, not counting: the meaningful problem was not building a timer. It was deciding what should happen when a reset is due during a presentation, when someone delays it, or when they remain away from the desk.
  • State management: MyTimer handles normal work, a heads-up, final countdown, manual deferral, manual pause, Windows quiet states, an active reset, and a waiting-for-return state.
  • A small interface: I repeatedly tested the app to make sure bubbles were brief, settings were one click away, and the reset did not compete with the person’s work.
  • Honest boundaries: Windows does not expose every Teams, Zoom, microphone, calendar, or screen-share state to every desktop app. MyTimer only claims the Windows-wide signals it can reliably read, and offers manual Pause for the rest.

What I learned

  • Human judgment is the product layer. Codex can implement quickly, but it cannot decide whether an interruption feels considerate. I had to define the moments MyTimer should protect.
  • Research informs constraints. I used GPT-5.6 to frame questions about screen-break guidance, then treated the 45-minute rhythm as a personal starting point—not universal medical advice.
  • Test behaviour, not only screens. The crucial tests were when a reminder appears, when it hides, what happens during a presentation, and what happens if the user is still away.
  • AI is a collaborator, not autopilot. My workflow was: define the human problem, brainstorm with GPT-5.6, choose constraints, build with Codex, run the app, notice what feels wrong, and iterate.

Privacy and limitations

MyTimer runs locally. It has no account, cloud backend, calendar, contacts, microphone, camera, or network connection.

It does not claim universal meeting or screen-share detection. It respects the Windows-wide busy, full-screen, and Presentation Mode states it can access, and gives the person a manual Pause option for everything else.

Built With

  • codex
  • gpt-5.6
  • powershell
  • windows-api
  • windows-forms
  • wpf
Share this project:

Updates