Last year Jon Galloway and I launched the Full Stack experiment,in which we video-documented the creation of a nontrivial application.
Today we begin the second phase of this experiment, building a new application that will have implementations or related applications on the following platforms:
- Windows phone 7.5
- ASP.net MVC
- Windows 8
For this phase not only will we be creating a video-documentation record, but I will also be documenting all of my progress and all the work that I’m doing in this series of blog posts.
The application we will be building is a Pomodoro timer, with a few extra features. The Pomodoro timer is used as part of the Pomodoro technique, created in the late 1980s by Francesco Cirillo and fully documented on the Pomodoro technique homepage.
The essential aspects of using the Pomodoro technique are:
- work without accepting any interruptions for 25 min
(25 minutes of work is called 1 Pomodoro)
- take a 5 min. break
- every fourth Pomodoro take a 20 min. break
Before you begin working on your Pomodoro’s for the day, your first task is to determine what all of your tasks for the day will be, assign estimated Pomodoros to each task and then begin working through the task list in priority order.
Please note, this is my interpretation of the essence of the Pomodoro technique; Pomodoro experts may very well disagree.
Building the Pomodoro Timer
It is our intent to make extensive use of unit testing, and to a degree test driven development. We will also be building this application using the MVVM design pattern.
To get started however, and to explore some of the primary user experience issues, I opted to spike a quick and dirty application which will serve both to explore implementation issues, and as a working spec (see figure at the start of this post). The spiked version will be the subject of the next couple posts in this series.
Among the features that will be implemented for this timer are
- countdown from 25 min.
- pause for 5 min.
- all timing is configurable
- keep track of blown and completed Pomodoro’s
- track notes for interruptions
- reminder after five-minute break even when not in foreground
- optional ticking sound, even when not in foreground
- editable task list
- server-based report generation
- sharing status across platforms
We expect to implement the same or similar UI and features on the phone, on the web, and on the desktop. All of these will be coordinated by a hosting service written in ASP.net MVC.
All of the entries in this series will be catalogued in the min-tutorial homepage, under the word Pomodoro, and in chronological order.
[Dictated to Dragon Dictation. Apologies for errors]