FindFocus application to fight procrastination

FindFocus application to fight procrastination

April 11, 2017

John Smyth's story wonderfully demonstrates how the program works.

4th August 2016

John Smyth is a freelance writer with extensive work experience who charges a high hourly rate. Recently he started writing an interesting article about archaeological excavations in South Africa. While working, John received a message from his friend in Facebook Messenger, read it, answered and, finding himself in a tab of bookmarked videos, started watching a video with kittens. Four hours passed without his noticing, and as a result he missed the deadline.

John should have used hierarchical filters for websites and applications where he could have chosen the resources he needed for his work and blocked all the rest. This is what a hierarchical filter looks like.

FindFocus hierarchic filter

With the specified configuration, FindFocus will allow John to visit facebook.com/findfocus, but all other pages on Facebook will be blocked for him. John can also group applications and sites into profiles.

FindFocus schedule
FindFocus settings

5th August 2016

John woke up at 7 o'clock, turned on his computer with FindFocus installed and began to write new articles for a client's blog. He was working all day and forgot to eat, then went to bed at 2 o'clock in the morning. When he woke the following morning, John couldn't write a single line – he was completely exhausted. And there was an angry letter from the client who had found 103 mistakes in the text he received the previous day.

Planned breaks could have helped the writer to overcome his striving for creativity and made him go and eat, do some exercise or take a short nap. At certain time intervals FindFocus completely blocks the computer, the screen blacks out and the only thing left for John to do is stand up from his desk and go and enjoy life: he has approximately five minutes for that.

FindFocus pause

4th September 2016

John had been using FindFocus for a month. He'd adjusted the profiles and distributed them in accordance with his work schedule. He had been working with gusto until the fatal evening of 4 September. The beginning of autumn was rainy, and John didn't feel like writing at all. He wanted to watch a video with kittens for the entire day, which is why he decided to turn off all blocking services and profiles. Fortunately, all FindFocus settings have several security modes: an adjustable ‘focusing test’ which has to be completed without a single mistake and a ‘Fort Knox’ mode which bans all changes to settings and profiles at certain periods of time. After 18 unsuccessful attempts to enter the text on the captcha below John realised that his work wasn't that bad and that the cute little kittens could wait for the ‘Time for kittens’ profile.

FindFocus complicated text

Summing up the outcome of John's story we can underline the main functions of FindFocus.

01 Building an ideal daily schedule with the help of adjustable profiles of permitted and banned applications and sites.
02 Blocking sites, redirecting the user to motivational quotations.
03 Blocking applications by closing them when opened.
04 Periodic breaks which block the computer entirely.
05 Adjustable security modes which prohibit the user from freely disabling FindFocus.

Implementation

FindFocus is a multiplatform application the main goal of which is to keep users focused on their work by means of blocking unwanted applications and sites.

The application is written in C++/ObjectiveC using the Qt framework. The user interface is written in QML. The choice of technologies is justified by the fact that the wide range of settings makes the user interface very resource-hungry. The stated technologies enabled implementation of various management elements: tables with adjustable margins, counters and much more. Licensing and the updates system are based on the Sparkle platform.

Later versions of the application do not require Accessibility API or administrator rights during installation or operation but preserve functionality for strictly monitoring user activity by automated means instead of system and low-level libraries.

Thanks to the Qt framework most of the application is cross-platform which enables porting of the application to other platforms relatively easily by isolating platform-dependent parts of the code with the help of Pimple methodology.