Skip to content

Commit 6dba730

Browse files
committed
split out focus blocks explanation from main readme
1 parent 56ba4ef commit 6dba730

File tree

2 files changed

+55
-40
lines changed

2 files changed

+55
-40
lines changed

FOCUS_BLOCKS.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Introduction to Focus Blocks
2+
3+
## Who is Focus Blocks for?
4+
5+
Focus Blocks is for highly self-motivated people. It is for people who find the idea of having a daily-level repetition too boring.
6+
7+
## How to use Focus Blocks
8+
9+
1. At the start of the month, decide the total number of blocks and the number of blocks you want to allocate to each area.
10+
2. Each morning, choose to work on areas that have blocks remaining.
11+
3. Throughout the day, check off blocks as you finish working on them.
12+
4. At night, review. If necessary, modify the day's allocation of blocks to reflect what actually ended up happening.
13+
14+
## Important Concepts
15+
16+
+ **Block**: A block is a 2-2.5 hour period of focused work. Aim to schedule 2 to 5 blocks per day depending on your circumstances.
17+
+ **Area**: Somewhat specific areas that you want to work on during the month. Typically 4-7 areas including exercise.
18+
+ **Buffer**: When assigning blocks at the beginning of the month, it is highly recommended to reserve Buffer blocks. Buffer blocks are meant to be used when, due to unforeseen circumstances, you failed to spend a given block as allocated.
19+
20+
## Tips for using Focus Blocks in your life
21+
22+
Focus Blocks works best in conjunction with a longer-term and a shorter-term planning system.
23+
+ Longer-term: Your monthly block allocation should be informed by a year or multi-year vision / goal.
24+
+ Shorter-term: Focus Blocks only define what task you will do during the focused work hours of your day. You should have a daily routine that wraps Focus Blocks with a morning routine, break activities, and evening routine.
25+
26+
Focus Blocks makes the assumption that a given day is classified either as "Work Day" or "Play Day". This reflect my opinion that on rest days, you should really rest, and work days should be strictly structured the whole day. Therefore the total number of blocks in a month is simply `blocks_per_day` * `working_days_per_month`.
27+
28+
**The full story:** In the past (2020-2023), I have used Google Sheets to implement this functionality but it didn't offer the interactivity, simplicity, beauty, and customizability that I desired. Plus, writing Python for fun is fun. `fob` the CLI program was released on November 14, 2024.
29+
30+
## Benefits / Magic of Focus Blocks
31+
32+
+ Compared to regular to-do lists or Kanban boards, Focus Blocks gives you a more regular sense of achievement, because you can still check off a block as complete as long as you did you best, instead of accomplishing a given task (nevermind how tasks aren't really complete)
33+
+ Focus Blocks makes the "illusion of free will" work **for** you, not against you. Typically, you will enjoy working on some areas more than others. With a less flexible system, you will feel pressured and negative about having to work the less enjoyable thing and probably will put it off. Focus Blocks gives you agency in 'choosing' to work on the less enjoyable thing, because you have to get it done anyhow. Plus, by decoupling blocks from to-do lists, you will feel less pressure on tasks that justifiably take more than a couple hours to achieve visible results.

README.md

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,11 @@
55
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
66
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
77

8-
**Focus Blocks** is my take on time management inspired by Flow State, Pomodoro Technique, Timeboxing, and Deep Work.
8+
**Focus Blocks** is my take on time management inspired by Flow State, Pomodoro Technique, Timeboxing, and Deep Work. Please read the [Introduction to Focus Blocks](/FOCUS_BLOCKS.md) first to understand the motivation for the creation of this program.
99

10-
**`fob`** is a command-line program written in Python that is made from scratch to help you use Focus Blocks in your daily life. It is distributed as a standalone binary that runs on Mac, Linux, and Windows.
10+
**`fob`** is a command-line program that makes it easy to implement Focus Blocks in your daily life. It is written in Python and distributed as standalone binaries for Mac, Linux, and Windows.
1111

12-
## Introduction
13-
14-
### Who is Focus Blocks for?
15-
16-
Focus Blocks is highly self-motivated people. It is for people who find the idea of having a daily-level repetition too boring.
17-
18-
### How to use Focus Blocks
19-
20-
1. At the start of the month, decide the total number of blocks and the number of blocks you want to allocate to each area.
21-
2. Each morning, choose to work on areas that have blocks remaining.
22-
3. Throughout the day, check off blocks as you finish working on them.
23-
4. At night, review. If necessary, modify the day's allocation of blocks to reflect what actually ended up happening.
24-
25-
### Important Concepts
26-
27-
+ **Block**: A block is a 2-2.5 hour period of focused work. Aim to schedule 2 to 5 blocks per day depending on your circumstances.
28-
+ **Area**: Somewhat specific areas that you want to work on during the month. Typically 4-7 areas including exercise.
29-
+ **Buffer**: When assigning blocks at the beginning of the month, it is highly recommended to reserve Buffer blocks. Buffer blocks are meant to be used when, due to unforeseen circumstances, you failed to spend a given block as allocated.
30-
31-
### Tips for using Focus Blocks in your life
32-
33-
Focus Blocks works best in conjunction with a longer-term and a shorter-term planning system.
34-
+ Longer-term: Your monthly block allocation should be informed by a year or multi-year vision / goal.
35-
+ Shorter-term: Focus Blocks only define what task you will do during the focused work hours of your day. You should have a daily routine that wraps Focus Blocks with a morning routine, break activities, and evening routine.
36-
37-
Focus Blocks makes the assumption that a given day is classified either as "Work Day" or "Play Day". This reflect my opinion that on rest days, you should really rest, and work days should be strictly structured the whole day. Therefore the total number of blocks in a month is simply `blocks_per_day` * `working_days_per_month`.
38-
39-
**The full story:** In the past (2020-2023), I have used Google Sheets to implement this functionality but it didn't offer the interactivity, simplicity, beauty, and customizability that I desired. Plus, writing Python for fun is fun. `fob` the CLI program was released on November 14, 2024.
40-
41-
### Benefits / Magic of Focus Blocks
42-
43-
+ Compared to regular to-do lists or Kanban boards, Focus Blocks gives you a more regular sense of achievement, because you can still check off a block as complete as long as you did you best, instead of accomplishing a given task (nevermind how tasks aren't really complete)
44-
+ Focus Blocks makes the "illusion of free will" work **for** you, not against you. Typically, you will enjoy working on some areas more than others. With a less flexible system, you will feel pressured and negative about having to work the less enjoyable thing and probably will put it off. Focus Blocks gives you agency in 'choosing' to work on the less enjoyable thing, because you have to get it done anyhow. Plus, by decoupling blocks from to-do lists, you will feel less pressure on tasks that justifiably take more than a couple hours to achieve visible results.
45-
46-
## Quick Start
12+
# Quick Start
4713

4814
Download the program from the latest [Github release](https://github.com/tensorturtle/fob/releases) and put it somewhere on PATH.
4915

@@ -53,7 +19,7 @@ A `curl | sh` type of installation script for the the lazy is coming soon.
5319

5420
On Mac, you may need to go to "System Settings" -> "Privacy & Security" to allow `fob` to run. By default, Mac shows scary warnings and doesn't let you run just any program.
5521

56-
## Development
22+
# Development
5723

5824
[Install uv](https://docs.astral.sh/uv/getting-started/installation/)
5925

@@ -68,10 +34,22 @@ Run app in development:
6834
uv run fob
6935
```
7036

71-
## Release
37+
# Release
7238

7339
From the root of this repository, run `dev_install.sh`. It uses nuitka to compile the python code into a single file executable, and then installs it to the system.
7440

41+
# Features
42+
43+
## Share your database across different machines.
44+
45+
`fob` stores all state within a single database file (which is actually just a human-readable JSON file). Pass in a path on a shared drive (e.g. Dropbox) to the `--database` option when running `fob`. For example:
46+
47+
```
48+
fob --database ~/Dropbox/my-fob.db help
49+
```
50+
51+
For now, you must enter this option manually each time. There willbe more convenient methods coming soon.
52+
7553
# Inner Workings
7654

7755
## Database
@@ -80,4 +58,8 @@ From the root of this repository, run `dev_install.sh`. It uses nuitka to compil
8058

8159
Since we're not using a SQL database, we are responsible for upholding the integrity and consistency of the data before writing it to the database. We implement that by first receiving all the data from the user, validating it, and then 'commiting' (writing) to the database in one go.
8260

83-
Run the program with debug option `fob -x` or `fob --debug` to see how the database gets updated. Also, the so-called database is actually just a human-readable JSON file, so you can open that to inspect / edit it.
61+
Run the program with debug option `fob -x` or `fob --debug` to see how the database gets updated. Also, the so-called database is actually just a human-readable JSON file, so you can open that to inspect / edit it if you're developing `fob`.
62+
63+
## Compiling to C
64+
65+
We use [`nuitka`](https://nuitka.net/) to compile to C in order to create self-contained binaries for each platform. See [`dev_install.sh`](/dev_install.sh) for how it's used.

0 commit comments

Comments
 (0)