Life
Table of Contents
- 1. What is life.org
- 2. Nutrition
- 3. Opinions
- 4. Learning
- 5. Formal Education
- 6. Work environment (physical and digital)
- 7. Schedule/Regime/Routine
- 8. People and groups of people
- 9. Journal
- 10. Meditation
1. What is life.org
Place for all my writting.
1.1. Conventions/Views/Principles
1.1.1. Who I write about.
Most times I make statements about the assumed 'person I want to be'. I'll call it IA (reversed Artificial Intelligence acronym; resembles 'YA' (Я) – 'Me' in Russian. Other times context reveals the subject.
- I specifically mark the difference between IA and me.
By adding 'wwut?'. Options in order of consideration:
- unlike me Negative statement.
- right? Too simple answer, conditioning to say 'yes' without much thinking.
- wwut? (wait, what you think?) Invites to stop and really think about it. Acronym coincides with 'w-what?' – increases doubt and al 0123.0ertness.
1.1.2. Try to write at least one sentence before outlining
o*** Org outlining is hierarchical
1.1.3. Hierarchical onthology is a struggle
2. Nutrition
2.1. Food database.
2.1.1. FoodData Central
**
2.2. Faking aps
2.2.1. MyFitnessPal
2.3. Meal Plan
2.3.1. Cheap Keto Omad + 72h fast once a week
Pre-made breakfast right after waking up (for 1h until 8am). Cooking in core gap. Exception: blending vegetables done while eating. Supplementing with light salt and magnesium. $ Macro on eating days: max 25g carbs, 80g protein goal, 120g max fat. Every day: one chicken breast, one can of sprats/tuna, 5 eggs, 200g champignons, 200g broccoli/cabbage, 50g Olive Oil, 15g dired shpinat Sometimes: quark with smetana, frozen fish, avocado oil and other goodies.
2.3.2. Russia Keto Omad me
Breakfast right after waking up. Cooking in the night. I (supposedly) get enough Sodium and Potassium from light salt (1.5 spoons a day) I only need to drink Fish Oil and take Magnesium supplements.
Macro: 120 26 120 1710 Typical meal:
- 200g eggs: 25g protein, 20g fat, 4g carb, 280 cal
- 200g quark: 32g protein, 18g fat, 6g carb, 320 cal
- 100g smetana: 3g protein, 20g fat, 3g carb, 200 cal
- 300g champignons: 12g protein, 3g fat, 1g carb, 100 cal
- 250g poultry: 50g protein, 8g fat, 1g carb, 300 cal
- 200g frozen broccolli/cabbage: 4g protein, 1g fat, 10g carb, 50 cal
- 60g Olive Oil.
2.4. Foods
2.4.1. Greens
2.4.4. Eggs
Best consumed hard-boiled: easiest, safest, most protein
2.5. Diet
2.5.1. Keto
2.6. Fasting
2.6.1. Meta
2.6.2. OMAD
2.6.3. 16/8
2.7. Supplements
2.7.1. Magnesium
2.7.2. Fish Oil
3. Opinions
3.1.
4. Learning
4.1. Techniques
4.1.1.
4.2. Languages
4.3. Logic
4.3.1. Books
- Introduction to Formal Logic 2nd ed.
- Deductive logic
- Argument
A chain of reasoning in support of some conclusion.
- Logic
Evaluating arguments. Levels: truthness of premises (assumed), inference (internal cogency: logical validity). Theory aims to systematically provide general techniques of:
- Argument evaluation for deductive validity. !Can it be done mechanically?
- Deduction
If the truth of premises absolutely guarantees the truth of conclusion, then we say that inference step of given argument is deductively valid. Equivalently, when an inference step is so, we say that its premises deductively entail its conclusion.
- Induction
Extrapolation from sample cases to further cases. Results in level of probability. Not a topic of this book.
- Generalization
- Argument
- Deductive logic
5. Formal Education
5.1. Schooling
5.2. University
5.2.1. University of People – my choice
Fully online.
- Moodle – online Learning Management System
Its client is javascript app. While it's GPLv3, some significant parts are dual-licensed AGPL/Proprietary (canvas). Resolution: usage on guard.
6. Work environment (physical and digital)
6.1. Browser
Reasons to not run javascript in web browser. I refuse to run it 99.99% of cases. Unfortunately, some "apps" I better use than not despite js flaws. I minimize social networking in them.
6.1.1. Nyxt vs EWW vs Firefox
Nyxt is shiny and javascripty. EWW is not. I will setup Nyxt first and then look at EWW. Firefox is fallback.
6.1.2. Non-javascript
These were created before javascript, against javascript, or, in case of Emacs Web Wowser, both.
6.2. External displays
6.2.1. Single vs multiple
6.2.2. Remote External Display
There's VNC, X and RDP. I use sway, so only WayVNC is availabble there. RDP is always better performance.
6.3. Misc
6.3.1. Outliners
6.3.2. Leo
6.3.3. outline-minor-mode
6.3.4. Hyperbole Koutliner
6.4. Emacs
I use vanilla cfg and write mainly in that context.
6.4.2. Choosing Emacs to start from.
In Emacs, It's more benefitial and easier to remove things you don't like than write the thing from scratch. Being able to give back your contribution back to distribution is awesome. More people like me in that regard use distribution rather than own dotemacs.
6.4.4. Distros
6.4.5. Vanilla
- Protesilaos
- Sacha Chua
- Iaeerfung
Change explanations contain references to specific opinions that influence them.
- System-specific
- TODO move to chemacs
- Set system name
(defcustom machines-alist nil (defun machine-identify nil "Return machine name if exists in `machines-alist'. Ask for it and add entrhy to `machines-alist' otherwise." ()) (defcustom machine-current (machine-identify) "Current system name. Set by `machine--identify')
- TODO move to chemacs
- Guix
- Built-in
same problem of talking about it here as for Elisp
- Word wrap | deciding on long lines
Emacs supports following ways of dealing with lines:
- Setting up maximum line width
- Breaking physical lines or creating virtual visual lines.
- Truncating lines, purely visual effect.
The best approach is virtual visual lines, because it works just as well as physical way, is more flexible/adaptable to screen size. I also like to think of line as of one atomic element below paragraph, even if it contains several sentences. It's a waste of this simple, universally accepted markup
- Simple | basic editing commands
- Clone indirect buffer
Completion and narrowing framework solves problem of navigating many similar-called clones. Still there is things to improve with the clones themselves:
- provide unique brief in angle brackets instead of plain number, so that pressing RET after typing it results in desired buffer.
- mark buffer as clone to force accepting brief even when it is present as part of other buffer's name. And for others smart, context-dependent functions.
- Clone indirect buffer
- Word wrap | deciding on long lines
- Elisp
I don't have good enough navigation system to include it here and store it in more general place, so I talk about built-ins in user-config, yeah
- contrib-lisp
I heavily borrow from Prot both in code and in didactic explanations.
(let ((contrib (let ((d (concat (file-name-directory user-init-file) "contrib-lisp/"))) (mapcar (lambda (x) (concat d x)) '("prot"))))) (dolist (d contrib) (add-to-list 'load-path d)))
- History, persistence, desktop.
- Language support
- History
- Eww | non-js web browser.
I prefer using Nyxt
- Look and typeface
Protesilaos takes very advanced approach here. I forked his configuration for use and study.
- General
Simple things that affect how emacs looks
- Modus themes
Modus is most hackable and configurable theme framework that also happens to come with most accessible (contrast, easy to read) operandi and vivendi themes. I prefer dark vivendi. I also want to create version of it that reddifies it for use during Dark Period.
- Configure and load theme from modus-themes external package
(use-package modus-themes :demand :init ;; Add all your customizations prior to loading the themes ;; Load the theme files before enabling a theme (else you get an error). (modus-themes-load-themes) :config (modus-themes-load-vivendi) :bind ("<f5>" . modus-themes-toggle))
- Configure and load theme from modus-themes external package
- Font
Any font I choose must conform with the following:
- support Latin and Cyrillic character sets;
- be readable at small sizes and look okay at large sizes;
- offer both roman and italic variants, preferably with corresponding bold weights
- not be too thin or at least have multiple weights from which to choose from
- not have too short of an x-height, which makes combinations of text and numbers or delimiters somewhat unbalanced
- not have a name that directly advertises some brand (e.g. "Helvetica" is fine as a name, even though a certain corporation tried to be identified with it but "CORPORATION Sans" is not)
- not be flamboyant by seeking to call too much attention to its details or by exaggerating some glyph shapes
- be equally readable against light and dark backdrops (for instance, bitmap fonts are not legible on a white background—too bad because I really like Terminus)
- use the
*.ttf
spec which yields the best results on GNU/Linux
While there are many good free/libre options available, only a handful of them cover my fairly demanding needs. Some look good at large point sizes. Some do not have italics…
Moving on to my configurations,
prot-fonts.el
covers my elaborate typeface requirements. At its heart isprot-fonts-typeface-sets-alist
. It contains associations of property lists (an alist of plists), each of which pertains to a give display type. For example, when I am doing a video presentation, I require font configurations that differ from what I normally use. So I have avideo
key in the alist to accommodate that particular need. Those associations provide granular control over font attributes, as they specify both mono and proportionately spaced font families, each with their corresponding weights and heights.The command
prot-fonts-set-fonts
prompts with completion for a display type. It gives options likelaptop
,desktop
,video
, which are drawn from theprot-fonts-typeface-sets-alist
. When called from Lisp it expects aDISPLAY
argument, which is a symbol that matches the car of a cons cell in the aforementioned alist.prot-fonts-fonts-per-monitor
sets the appropriate font family and size depending on whether I am only on my laptop or have connected to it an external monitor. In the latter case we use thedesktop
display type.As noted above,
prot-fonts-typeface-sets-alist
associates a list of typefaces with desired weights, including for their bold variation. This is useful when the active theme is designed in a way that parameterises the exact value of a bold weight, by calling:inherit bold
instead of specifying:weight bold
. The former applies thebold
face, whereas the latter sets the weight at a constant number, which typically is 700. Thus, when the theme is designed that way, we can configure the:weight
of thebold
face to, e.g.,semibold
and have that propagate across all the faces that the theme defines.Now a few notes about setting fonts in Emacs.
While there are many ways to define a baseline or fallback font family, I find that the most consistent one in terms of overall configuration is to do it at the "face" level (read the docstring of
set-face-attribute
). Faces are understood as the domain of themes, though themes are just Elisp programs hence there is no real distinction here and it is perfectly fine to have one program define some properties of a face while another specifies some others. The key is to make those complementary, so that one does not override the other. Put concretely,prot-fonts.el
sets properties such as:family
, while my themes handle things like colours.To appreciate this point, consider that in Emacs parlance a "face" signifies a construct that bundles up together several display attributes, such as a foreground and a background colour, as well as all typography-related values. Multiple assignments of value can expand the face's specifications, except when one explicitly overrules a given property.
There are three faces that are of immediate interest to
prot-fonts.el
: thedefault
,variable-pitch
, andfixed-pitch
. The first is the Emacs frame's main typeface, the second specifies a proportionately spaced font, and the third does the same for a monospaced family. There are various scenaria where text on display needs to be rendered invariable-pitch
, while others must remain infixed-pitch
. For example, letorg-mode
inline code be presented in its monospaced font while using a variable width typeface for the main text, or just usevariable-pitch
for User Interface elements such as the mode line to economise on spacing, and so on. Again, my Modus themes cover that niche out-of-the-box (and offer relevant customisation options). We call this a "mixed font" setup: the easiest way to get to it is to enablevariable-pitch-mode
.Relevant publications of Prot that are not part of this document:
- Notes for aspiring Emacs theme developers (2020-08-28).
- Emacs: note on mixed font heights (2020-09-05).
- Modus themes' manual on font configurations.
(use-package prot-fonts :hook (modus-themes-after-load-theme-hook prot-fonts-restore-last) :bind ("C-c f" . prot-fonts-set-fonts) :custom (x-underline-at-descent-line t) (prot-fonts-typeface-sets-alist '((laptop . ( :fixed-pitch-family "Iosevka Comfy" :fixed-pitch-regular-weight normal :fixed-pitch-heavy-weight bold :fixed-pitch-height 280 :fixed-pitch-line-spacing 1 :variable-pitch-family "FiraGO" :variable-pitch-height 0.9 :variable-pitch-regular-weight normal)) (desktop . ( :fixed-pitch-family "Iosevka Comfy" :fixed-pitch-regular-weight normal :fixed-pitch-heavy-weight bold :fixed-pitch-height 110 :fixed-pitch-line-spacing nil :variable-pitch-family "FiraGO" :variable-pitch-height 0.9 :variable-pitch-regular-weight normal)) (presentation . ( :fixed-pitch-family "Iosevka Comfy" :fixed-pitch-regular-weight normal :fixed-pitch-heavy-weight bold :fixed-pitch-height 140 :fixed-pitch-line-spacing nil :variable-pitch-family "Source Sans Pro" :variable-pitch-height 1.0 :variable-pitch-regular-weight normal))) (prot-fonts-laptop-desktop-keys-list (prot-fonts-laptop-desktop-keys) "update after `prot-fonts-typeface-sets-alist' change")))
- General
- Keyboarding
I want to replace all modifiers with neat, automatically-generated hydra system.
- Hydra sequence
- Full modifier usage replacement.
4 keys used as vowels in plover make symmetric sticker mod array accessed by thumbs
Use of KMonad tap-hold buttons and key-chord.el package theoretically allow for 6 mod combinations if we take each side separately. In practice hold time is too low for thumbs to reliably perform on two buttons. Georgi may perform better here, as it has 12g switches. But it is a minor detail, as it is 5 combinations on each side still!
We can add alteration and mod meaning dependance on previously pressed key to the mix. Idk how much it adds theoretically.
We can cover all vanilla bindings in these five combinations:
- o e | C | repeat to add shift
- O E | M | –*–
- a u | C-M | repeat to add M
- A U | M-S | repeat to add C
- AO EU | C-M-s
Combinations can be stacked when pressed consequently ( o
Interesting observations:
- It's hard to predict on which side of kb you end when alterating long sequences There probably should be a way to navigate it in last 1-2 moments, like a Falcon-9 rocket.
- Spc key is a good leader key.
- Hydra sequence
- Keychords
- Modal editing
There are many packages implementing it: (long list). Among most advanced are Boon and Meow. Meow is most advanced, has cool and consistent custom set of commands to it that implemet kakoune-style editing. I can take inspiration from Boon's layout at first though.
- System-specific
- Completion and narrowing framework
This is very important topic. One of best, universal features possible in Emacs.
- Meta
- Selectrum | Incremental narrowing
(use-package selectrum :config (selectrum-mode 1))
- Ctrlf | Single-buffer text search
- Orderless | Completion style matching multiple regexps in any order
(use-package orderless :custom ;; Optional performance optimization by highlighting only the visible candidates. (orderless-skip-highlighting (lambda () selectrum-is-active)) (selectrum-highlight-candidates-function #'orderless-highlight-matches) (completion-styles '(orderless)))
- Marginalia in the minibuffer
(use-package marginalia :demand :bind (("M-o r" . marginalia-cycle)) :config (marginalia-mode) :custom (marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)))
- Consult | Consulting `completing-read'
- Embark | Mini-buffer actions rooted in keymaps
- Hyperbole
- Avy | Tree-based completion (like Hydra for narrowing things on-screen)
(use-package avy :config (avy-setup-default) :bind (("C-c C-j" . avy-resume) ("C-'" . avy-goto-char-timer)) :custom (avy-keys '(?c ?i ?e ?a ?t ?n ?s ?r)))
- Save minibuffer history
(savehist-mode 1)
- Meta
- Org
- Agenda
- Outlining
There is distinction between
headings
anditems
. List items are a tree within a tree. I don't like distinction. The functionality items serve could be achieved with specially marked headings and maybe I would try to do it. But as it stands now, items are more convenient to use.- Convert item to heading
- Refiling
- Searching/navigating
- `org-goto' Has weak distinct modal navigating OR file-like search interface. Gotta find alternative that uses `completing-read'
- `org-search-view' using agenda
- `org-sparse-tree' using folding and highlight overlays.
- Marking elements
To decide whether continue marking I need to see next element.
- Convert item to heading
- Time tracking
- Literate Programming
- Tangle code into file.
- RESOLVED :tangle filepath
Combined with :header-args: heading property allows life.org to work as intended.
- DONE crude hack ,ob-tangle-heading dumb
There is better built-in way.
- Goto headings by unique org id
- Open them in temporary buffer
- Tangle code
(use-package emacs :config (defcustom |tangle-id-file-alist nil "alist of heading id matching tangled file path") (defun |ob-tangle-headings nil "tangle headings found by ID to File as specified in `,tangle-id-file-alist'" (dolist (l |tangle-id-file-alist) (let ((p (org-find-entry-with-id (car l))) (f (cdr l))) (goto-char p) (org-copy-subtree) (with-temp-buffer (yank) (org-babel-tangle-file nil f))))) :custom ((|tangle-id-file-alist . '(;;doom emacs iung ("05936fae-4c84-4410-b5da-efe74afd018a" . user-cfg-file)))) )
- RESOLVED :tangle filepath
- Tangle code into file.
- Structure templates
(use-package org :custom (org-structure-template-alist '(("a" . "export ascii") ("c" . "center") ("C" . "comment") ("e" . "src emacs-lisp") ("x" . "example") ("E" . "export") ("h" . "export html") ("l" . "export latex") ("q" . "quote") ("s" . "src") ("v" . "verse"))))
- Capture
- Todo Keywords
#+beginsrc emacs-lisp (use-package org :custom (org-todo-keywords '((sequence "TODO" "DONE") (sequence "2DO" "DONE") (type "2BUY")))) #+endsrca
- Agenda
6.5. GNU/Linux Distro
6.5.1. Guix
Distro built around Guix Unix Manager (packages, services, user homes.. system)
- About
- Package
- System
- Config
- Windows Dual-Boot
Guix intentionally doesn't support it in official distribution. I respect and approve that. However, there are machines I want to use which I don't own and can't fully liberate. In these cases having windows as default boot entry is only benefitial.
- Other users can notice there are other system on the machine.
- More time to choose Guix => less incidental boots to msos.
- Choosing Guix is two keypresses away.
- Sometimes it's only way to dualboot from same harddrive.
- Config
- Home
6.5.2.
6.5.3. Arch
6.5.4. Ubuntu
6.5.5. Debian
6.5.6. NixOS
6.6. Window Manager
EXWM is closest to what I want from WM. Emacs all the way. Unfortunately it doesn't work with pgtk-nativecomp branch. StumpWM is second closest! I'd love to hack on it with Common Lisp. Someday in the future I'll create Guile Wayland Compositor. That will be ideal.
On critical application doesn't yet work on Wayland – Plover.
6.6.1. Stumpwm
6.6.2. EXWM
6.6.3. XMonad
6.6.4. AwesomeWM
6.6.6. Meta
- Concept
- Dynamic management
- Frames and windows
Frame exist on big rectangle and is rectangle Window exist within a frame.
- Blueprint
Declarative or, in the end they are all at least, procedural frame configuration for any given rectangle.
- Tags and workspaces and groups
Workspace is constructed from blueprint and exist in head. Tags features is superset of workspaces features. The difference is that workspace can't share same windows , they are bound to single frame and is bound to a single head itself. Both tags and workspaces can be groups if they allow for window to exist in the background, without taking screen space.
- Desktop
State of window system whatever it is. Got that from Emacs. Can be workspaces, can be window list, nothing prevents to be both.
- Dynamic management
- Deciding wm
Help with comparing features and measuring their usefullness, noting super combinations.
- Tags vs workspaces vs groups
Groups > tags > workspaces. Features mostly complement each other. Best to try get all in whatever WM of choise. Many tags features can be at least in part imitated with workspaces and automatic tiling. We miss only displaying same window multiple times in same view but that is least useful feature of tags. On single-head setup everything can look just as well. Pseudo-groups are easier to implement. Actually, they are more useful thang tags. Changing frame and window configuration of group is as powerful, straightforward and flexible as using Emacs Fullscreen.
- Dynamic vs manual vs automatic tiling
- Programmability vs scriptability
Unfortunately no WM have all. Programmable WM come closest to it. Stumpwm is most programmable WM.
- Tags vs workspaces vs groups
- Usages
- DISCUSS what is word for both abstract and specific way for stating most information.
Idk, but most things are both relatively abstract and specific.
- DISCUSS writting Meta or General
I just like Meta more rn.
"Meta Concept"?
6.7. Keyboarding
6.7.1. Key mapping
As long as Emacs gets the key right, functionality is more important than performance. QMK has more functionality and performance than KMonad, even though not as pleasant to use. My main input method should be plover steno
6.7.2. Command mapping
I use term command
as in Emacs, meaning function bindable to a key.
6.8. Computer
6.8.1. Optimal computer set.
I refrain from buying/using hardware with unfree design. Risc-V seem like best architecture to build upon. It has most academic and other momentum. While with x86 I can find machine that will be adequate both as desktop and always-on server, Risc-V is immature and I can only hope for gradually replacing things with more specialized machines. It'll be 2 years until I'll have money to buy Rasberry Pi level board and use it as main desktop.
6.8.2. What computer I use from what I have.
- vm – Compilation machine. most powerful, but in worst place
- nl – Reserve compilation / Good GPU machine. powerful, in best place, too loud fans.
- sm – Has battery. Reserve reserve compilation / GPU machine. only 4gb ram and hdd, baad screen
- ez – Main machine least powerful laptop, but passive cooling and good screen, 8gb ram, ssd.
7. Schedule/Regime/Routine
7.1. Polyphasic Sleep
Schedule should have:
- 6h tst, lowest safe for underage
- cores at night
- alap naps in the day
- gap of at least one sleep cycle between cores
- as much distinct sws cores and rem wakes as possible
- TEMPORARILY dp end at 7am and next canSleep start at 3pm
According to those, assuming standard 90m cycle, this TC1e is really the best fit: 2100-2230 0030-0330 0530-0700 1500-1520
7.1.1. Going to sleep
7.1.2. Waking up
- Dream recall without moving or opening eyes.
- Getting out of bed
- Journaling dreams
- Drinking water
- (Optional) Going toilet
- Washing fase with cold water
- Dressing up
During adaptation "getting out of bed" should come very first due to high risk of oversleep in bed.
7.1.3. Dark period
Ideally for circadian there should be no light. But It's better to compromise it with use of computer display and red backlight leds (reducing eyestrain) Still, I strive for minimal intrusion. I keep eyes closed longer, use small screen with low brightness and redshift setting, dim leds.
Also, I minimize physical activity, reduce temperature, water drinking and prohibit eating.
7.1.4. Alarm setup
Modern smartphone is too fallable. Running out of battery, silent alarm happens
.
Two smartphones look much better. I use three (one old smphone exclusively for alarm).
- Alarm apps
I use AMdroid.
- System
- Alarmy
Cons:
- No amoled theme
- Stupid vibration setting
- No exportable settings
- Ugly zoomer/limited interface
Pros:
- Many missions
- Best turn-off prevention
- Turbo-alarm
- AMdroid
Cons:
- No built-in keyboard – bad for math mission (though it allows for cool Capcha mission I don't use)
- Post-alarm confirmation can be missed (f.e. alarmy launches dedicated screen with big red button.)
- No option for enabling vibration after sound
Pros:
- inverted alarmy cons
- System
7.2. Nutrition
7.2.3. Meal Plan
- Russia Keto Omad me
Breakfast right after waking up. Cooking in the night. I (supposedly) get enough Sodium and Potassium from light salt (1.5 spoons a day) I only need to drink Fish Oil and take Magnesium supplements.
Macro: 120 26 120 1710 Typical meal:
- 200g eggs: 25g protein, 20g fat, 4g carb, 280 cal
- 200g quark: 32g protein, 18g fat, 6g carb, 320 cal
- 100g smetana: 3g protein, 20g fat, 3g carb, 200 cal
- 300g champignons: 12g protein, 3g fat, 1g carb, 100 cal
- 250g poultry: 50g protein, 8g fat, 1g carb, 300 cal
- 200g frozen broccolli/cabbage: 4g protein, 1g fat, 10g carb, 50 cal
- 60g Olive Oil.
7.2.4. Foods
7.2.6. Fasting
7.3. Exercise
7.4. Work session
- 90m long including break (BRAC)
- short 5m meditation at the end.
7.4.1. Timer
Org-timer in Emacs.
7.5. Going outside
7.6. School
7.7. Morning routine
7.8. Evening routine
8. People and groups of people
Should be HyRolo list, really
8.1. Yurii Kholodkov (iaeerfung)
Me.
9. Journal
So, I managed to setup my keyboard, twice. It took me insane 18 hours. I've watched plenty of videos during the process. It absolutely wasn't worth it. So, what do I do now? I have only one hour left! Let's just write a bit about meditation practice.
9.1.
9.2.
Session 1: manual reading. why has it took 25 mins…
10. Meditation
I have 3 hours free during the core gap dedicated to it. 0.5h Day review 2.5h Sitting meditation