
Rubber Duck Thursdays - Let's build our way into 2026!
In the last European-timezone-friendly stream of 2025, Chris builds a New Year countdown app from scratch — and reveals a GitHub contribution graph-themed countdown he built earlier.
Building a Countdown App from Scratch
Chris scaffolds a new project using Vite with vanilla TypeScript and Tailwind CSS v4, using GitHub Copilot to generate the initial countdown logic, HTML structure, and styling. The app counts down to midnight on New Year’s with large digits and subtle animations.
Custom Agents in Action
- UI Performance Specialist — a custom agent focused on 60fps animations, performance auditing, and separation of concerns for UI code
- Plan agent — used for iterative requirements gathering, asking clarifying questions about design decisions like dial vs. map selectors, mobile fallbacks, and celebration animations
- Context window management by starting new chat sessions and keeping prompts focused
Time Zone Support with World Map
Chris adds a world map-based time zone selector so users can see countdowns to midnight in different cities worldwide. The Plan agent helps scope decisions — gold glowing for celebrating regions, muted blue for waiting — and a “midnight wave” overlay showing which time zones have already celebrated.
Fireworks Theme with fireworks.js
A fireworks celebration theme with intensity levels tied to time remaining — ambient stars when more than 24 hours away, building to continuous fireworks and confetti at midnight. Includes a dark night sky gradient background, city skyline silhouette, and reduced motion support for accessibility.
Test-Driven Development
Chris uses a TDD approach: writing failing tests first for countdown logic, time zone utilities, and app state management, then implementing code to make them pass. Tests cover edge cases like past-midnight detection and time zone calculations.
Bonus: GitHub Contribution Graph Countdown
Chris reveals a separately-built countdown timer styled as a GitHub contribution graph, with contribution-style squares that gradually fill as midnight approaches.
Related Content

Rubber Duck Thursdays - Time to build!
GitHubIn this live stream, we explore building a 3D tic-tac-toe visualization using Three.js and Copilot coding agent, demo MCP elicitation for gathering game preferences, and discuss the importance of context engineering when working with AI tools. We also cover GitHub changelog highlights including path-scoped custom instructions for Copilot code review and agents.md support.

Rubber Duck Thursdays - Building a turn-based-game MCP server
GitHubIn this live stream, we continue building a turn-based game MCP server, implementing MCP elicitation to gather user preferences and consolidating duplicate tool calls into cleaner abstractions. We also recap the latest GitHub changelog including npm trusted publishing with OIDC, Claude Opus 4.1, and Copilot coding agent updates.

Rubber Duck Thursdays - Creating a brickbreaker walkthrough
GitHubChris live-codes a GitHub-themed brick breaker walkthrough using Copilot agent mode, demonstrating how prompt framing, context, and custom instructions shape AI-generated output.