diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.markdown-preview.html b/.markdown-preview.html old mode 100644 new mode 100755 diff --git a/.projectile b/.projectile old mode 100644 new mode 100755 diff --git a/20241210233721-brain_moc.org b/20241210233721-brain_moc.org old mode 100644 new mode 100755 index a928acd..e6af82d --- a/20241210233721-brain_moc.org +++ b/20241210233721-brain_moc.org @@ -4,6 +4,8 @@ #+title: Brain MOC #+filetags: :moc: +Brain MOC contains links to all the MOCs in the system. It is the entry point to the system. + * [[id:2f285f04-fcf4-4ade-a1ac-2c50b43d529a][Technical MOC]] * [[id:22737796-6D31-49D5-84F2-F7BC73E45144][Concepts]] diff --git a/20260401100130-emacs_org_noter.org b/20260401100130-emacs_org_noter.org new file mode 100755 index 0000000..55b35d4 --- /dev/null +++ b/20260401100130-emacs_org_noter.org @@ -0,0 +1,47 @@ +:PROPERTIES: +:ID: 168b6b10-d670-4f9d-89cf-aeb59aa644a1 +:END: +#+title: Emacs Org Noter +#+filetags: :emacs:org:notes: + +In order to create notes for a book: +1. Create an empty org roam file +2. Add the relative file path in metadata for that node, with the title ~NOTER_DOCUMENT~ + See the example below (auto save and page will get filled in) +3. Hover over the Notes heading created and click ~SPC-n n~ to open org noter + +#+begin_src org + ,* Ikigai Notes + :PROPERTIES: + :NOTER_DOCUMENT: ../../../pdfs/_misc/Ikigai.pdf + :NOTER_AUTO_SAVE_LAST_LOCATION: t + :NOTER_PAGE: 61 + :END: +#+end_src + +* Config needed: +#+begin_src emacs-lisp + + (setq org-noter-notes-search-path + '("D:\\_nextcloud\\master-folder\\org_files\\org_roam\\")) + (setq org-noter-always-create-frame nil) + (setq org-noter-property-doc-file "NOTER_DOCUMENT") + + (require 'pdf-tools) + (pdf-tools-install) + (use-package pdf-view-restore + :after pdf-tools + :config + (add-hook 'pdf-view-mode-hook 'pdf-view-restore-mode) + (setq pdf-view-restore-filename "~/.emacs.d/.pdf-view-restore")) + +#+end_src + +* Keybindings: +#+begin_src emacs-lisp + (dt/leader-keys + "n" '(:ignore t :wk "Org Noter") + "n n" '(org-noter :wk "Open org-noter") + ) +#+end_src + diff --git a/20260401100839-emacs_calendar.org b/20260401100839-emacs_calendar.org new file mode 100755 index 0000000..06a7667 --- /dev/null +++ b/20260401100839-emacs_calendar.org @@ -0,0 +1,64 @@ +:PROPERTIES: +:ID: 10b1f18e-b221-4ab8-bce4-b6f20ad417db +:END: +#+title: Emacs Calendar/Agenda +#+filetags: :emacs:workflow:work: + +* Config: +#+begin_src emacs-lisp + (require 'org-caldav) + (require 'url) + (require 'icalendar) + (modify-coding-system-alist 'file "caldav-work\\.org\\'" 'utf-8-unix) + (setq org-icalendar-timezone "Europe/London") + (setq calendar-time-zone 60) ;; minutes offset from UTC (BST = +60) + (setq calendar-standard-time-zone-name "GMT") + (setq calendar-daylight-time-zone-name "BST") + (setq org-caldav-timezone "Europe/London") + (defvar my/outlook-ics-url + "https://outlook.office365.com/owa/calendar/b910ea835e414663831e505f3d10baa2@microlise.com/d2568a0134fb49af92d39c1669c4729317662288011094411305/calendar.ics") + + (defvar my/outlook-org-file + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-work.org") + + (defvar my/ics-python-script + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\ics_to_org.py") + + (defun my/sync-outlook-calendar () + "Fetch and expand Outlook ICS (including recurrences) into org file." + (interactive) + (message "Syncing Outlook calendar...") + (let* ((cmd (format "python \"%s\" \"%s\" \"%s\"" + my/ics-python-script + my/outlook-ics-url + my/outlook-org-file)) + (result (shell-command-to-string cmd))) + (message "Outlook calendar sync: %s" (string-trim result)))) + + ;; Sync on startup and every 30 minutes + (my/sync-outlook-calendar) + (run-with-timer (* 30 60) (* 30 60) #'my/sync-outlook-calendar) + ;; --- CalDAV for native Nextcloud calendars --- + (setq org-caldav-url "https://nextcloud.zainezq.com/remote.php/dav/calendars/zaine/") + (setq org-caldav-calendars + '((:calendar-id "personal" + :inbox "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-personal.org" + :files nil) + (:calendar-id "zxh" + :inbox "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-family.org" + :files nil))) + + ;; --- Agenda files --- + (setq org-agenda-files + '("D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-personal.org" + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-work.org" + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-family.org" + "D:\\_nextcloud\\master-folder\\org_files\\org_roam\\Books\\20250724230557-books_org_agenda.org")) + + + +#+end_src + +** Explanation: +- This configuration sets up Emacs to sync with both a Nextcloud calendar (via CalDAV) and an Outlook calendar (via ICS). It uses a Python script to fetch and convert the Outlook ICS data into an org file format that Emacs can read. The Nextcloud calendar is synced directly using the org-caldav package. Both calendars are included in the org-agenda files, so that I can view all events in one place. The sync for the Outlook calendar runs every 30 minutes to keep it up to date. +- To sync the Outlook calendar, you call the ~my/sync-outlook-calendar~ function, which runs the Python script to fetch and convert the ICS data. The Nextcloud calendar is synced automatically by org-caldav whenever you open Emacs or refresh the calendar. diff --git a/Books/20241231172543-the_science_of_self_discipline.org b/Books/20241231172543-the_science_of_self_discipline.org old mode 100644 new mode 100755 diff --git a/Books/20250715223949-the_clean_coder.org b/Books/20250715223949-the_clean_coder.org old mode 100644 new mode 100755 diff --git a/Books/20250723182408-so-good-they-cant-ignore-you.org b/Books/20250723182408-so-good-they-cant-ignore-you.org old mode 100644 new mode 100755 diff --git a/Books/20250723183655-career_capital.org b/Books/20250723183655-career_capital.org old mode 100644 new mode 100755 diff --git a/Books/20250723183755-deliberate_practice.org b/Books/20250723183755-deliberate_practice.org old mode 100644 new mode 100755 diff --git a/Books/20250723184430-stanford_marshmallow_experiment.org b/Books/20250723184430-stanford_marshmallow_experiment.org old mode 100644 new mode 100755 diff --git a/Books/20250723185056-neuroplasticity.org b/Books/20250723185056-neuroplasticity.org old mode 100644 new mode 100755 diff --git a/Books/20250724230557-books_org_agenda.org b/Books/20250724230557-books_org_agenda.org old mode 100644 new mode 100755 index 20a1af7..428da93 --- a/Books/20250724230557-books_org_agenda.org +++ b/Books/20250724230557-books_org_agenda.org @@ -7,7 +7,7 @@ #+filetags: :books:org:index: #+DATE: 2025-05-19 #+STARTUP: content -#+PROPERTY: GENERATED_AT 2026-03-27T00:00:01.420902 +#+PROPERTY: GENERATED_AT 2026-04-02T00:00:01.391273 * Career ** Clean Code_ A Handbook of Agile Software Craftsmanship - Robert C. Martin :Read: @@ -120,6 +120,14 @@ :PATH: /home/zaine/master-folder/projects/calibre/library/Shaykh Abdul Raheem Limbada/A Gift for Nikah (23) :END: +** Imam Rabbani - Mujaddid Alf Thani :Unread: +:PROPERTIES: +:AUTHOR: Unknown +:STATUS: Unread +:CALIBRE_ID: 34 +:PATH: /home/zaine/master-folder/projects/calibre/library/Unknown/Imam Rabbani - Mujaddid Alf Thani (34) +:END: + ** Khulfa-e-Rashideen :Unread: :PROPERTIES: :AUTHOR: Makbool Ahmed Suhaarwi | Afzal Hoosen Elias (translator) @@ -128,6 +136,14 @@ :PATH: /home/zaine/master-folder/projects/calibre/library/Makbool Ahmed Suhaarwi , Afzal Hoosen Elias (translator)/Khulfa-e-Rashideen (30) :END: +** Lessons In Islamic History: Durus fi at-Tarikh al-Islami :Unread: +:PROPERTIES: +:AUTHOR: Shaykh Muhammad Al-Khudari Bak Al-Bajuri +:STATUS: Unread +:CALIBRE_ID: 33 +:PATH: /home/zaine/master-folder/projects/calibre/library/Shaykh Muhammad Al-Khudari Bak Al-Bajuri/Lessons In Islamic History_ Durus fi at-Tarikh al-Islami (33) +:END: + ** The Tafseer of Surah Fatiha :Unread: :PROPERTIES: :AUTHOR: Shaykh Abdul Raheem Limbada @@ -169,11 +185,12 @@ :PATH: /home/zaine/master-folder/projects/calibre/library/James Clear/Atomic Habits (32) :END: -** Ikigai :Unread: +** Ikigai :Read: :PROPERTIES: :AUTHOR: Héctor García, Francesc Miralles -:STATUS: Unread +:STATUS: Read :CALIBRE_ID: 13 +:COMPLETED_AT: 2026-04-01 16:09:57.170644 :PATH: /home/zaine/master-folder/projects/calibre/library/Héctor García/Ikigai (13) :END: diff --git a/Books/20250727174809-books_moc.org b/Books/20250727174809-books_moc.org old mode 100644 new mode 100755 index d1a1bb0..94eb64e --- a/Books/20250727174809-books_moc.org +++ b/Books/20250727174809-books_moc.org @@ -8,3 +8,7 @@ * Recommendations for books: [[id:238ff7d8-db22-41e2-8aad-fc3c778e6248][Book Recs]] * [[id:363dbdfa-f23c-4f7e-a6f3-6d34f78984bb][Books Org Agenda]] + +* Book Notes: + +[[id:fc07cbca-cf1a-4698-912b-de74001f0b5c][Ikigai Book Notes]] diff --git a/Books/20250727174903-book_recs.org b/Books/20250727174903-book_recs.org old mode 100644 new mode 100755 index 71221d4..7cbfd1c --- a/Books/20250727174903-book_recs.org +++ b/Books/20250727174903-book_recs.org @@ -1,7 +1,7 @@ :PROPERTIES: :ID: 238ff7d8-db22-41e2-8aad-fc3c778e6248 :END: -#+title: book-recs +#+title: Book Recommendations #+filetags: :books: diff --git a/Books/20250727221512-clean_code.org b/Books/20250727221512-clean_code.org old mode 100644 new mode 100755 diff --git a/Books/20260331113318-ikigai_notes.org b/Books/20260331113318-ikigai_notes.org new file mode 100755 index 0000000..87a7971 --- /dev/null +++ b/Books/20260331113318-ikigai_notes.org @@ -0,0 +1,524 @@ +:PROPERTIES: +:ID: fc07cbca-cf1a-4698-912b-de74001f0b5c +:STARTED_AT: <2026-03-31 Tue> +:COMPLETED_AT: <2026-04-01 Wed> +:END: +#+title: Ikigai Book Notes +#+filetags: :books:notes: + + +* Ikigai Notes +:PROPERTIES: +:NOTER_DOCUMENT: ../../../pdfs/_misc/Ikigai.pdf +:NOTER_AUTO_SAVE_LAST_LOCATION: t +:NOTER_PAGE: 189 +:END: +** Notes for page 19 +:PROPERTIES: +:NOTER_PAGE: 19 +:END: +Might be worth reading into the book ~The Blue Zones~ +** cellular oxidation. +:PROPERTIES: +:NOTER_PAGE: 21 +:HIGHLIGHT: #s(pdf-highlight 21 (21 (0.35376344086021505 0.287375415282392 0.5172043010752688 0.292358803986711))) +:END: +Cellular oxidation is the process by which cells produce energy. It involves the breakdown of nutrients, such as glucose, in the presence of oxygen to generate adenosine triphosphate (ATP), which is the primary energy currency of the cell. This process occurs in the mitochondria, often referred to as the "powerhouses" of the cell. Cellular oxidation is essential for maintaining cellular functions and overall metabolism. However, it can also produce reactive oxygen species (ROS) as byproducts, which can cause oxidative stress if not properly managed by the body's antioxidant defenses. +In simple terms, cellular oxidation is like a fire burning inside our cells to produce energy, but it can also create smoke (ROS) that can be harmful if not controlled. +** antioxidant-rich +:PROPERTIES: +:NOTER_PAGE: 21 +:HIGHLIGHT: #s(pdf-highlight 21 (21 (0.3720430107526882 0.728405315614618 0.5075268817204301 0.7184385382059801))) +:END: +Antioxidant rich foods are those that contain high levels of antioxidants, which are compounds that help protect the body from oxidative stress caused by free radicals. Free radicals are unstable molecules that can damage cells and contribute to aging and various diseases. Antioxidants neutralize free radicals by donating an electron, thus preventing them from causing harm. Examples of antioxidant-rich foods include fruits (such as berries, oranges, and grapes), vegetables (like spinach, kale, and broccoli), nuts, seeds, and certain beverages like green tea. Consuming a diet rich in antioxidants can help support overall health and reduce the risk of chronic diseases. +** Aging’s escape velocity +:PROPERTIES: +:NOTER_PAGE: 27 +:HIGHLIGHT: #s(pdf-highlight 27 (27 (0.17956989247311828 0.4269102990033223 0.4 0.43023255813953487))) +:END: +Interesting concept, but I don't think it's a real thing. It's more of a metaphor for the idea that if we can slow down the aging process enough, we might be able to extend our lifespan indefinitely (which will never happen, everyone is going to taste death at some point). However, there are many factors that contribute to aging, and it's unlikely that we will be able to completely stop it. That being said, there are things we can do to slow down the aging process and improve our healthspan, such as eating a healthy diet, exercising regularly, and managing stress. +** “mens sana in corpore sano” +:PROPERTIES: +:NOTER_PAGE: 28 +:HIGHLIGHT: #s(pdf-highlight 28 (28 (0.553763440860215 0.18106312292358803 0.7967741935483871 0.17940199335548174))) +:END: +Need to add this to the proverb list. It translates to: "a healthy mind in a healthy body." This Latin phrase emphasises the importance of maintaining both mental and physical health for overall well-being. +** Book mention +:PROPERTIES: +:NOTER_PAGE: 28 +:HIGHLIGHT: #s(pdf-highlight 28 (28 (0.7784946236559139 0.78156146179402 0.6924731182795699 0.803156146179402))) +:END: +Maximum Brainpower: Challenging the Brain for Health and Wisdom +** Notes for page 30 +:PROPERTIES: +:NOTER_PAGE: 30 +:HIGHLIGHT: #s(pdf-highlight 30 (30 (0.46881720430107526 0.22259136212624586 0.3064516129032258 0.2666112956810631))) +:END: +#+BEGIN_QUOTE +The American Institute of Stress +investigated this degenerative process and concluded that most health problems +are caused by stress. +#+END_QUOTE +[[../assets/_books/2026-03-31-ikigai-table.png]] +** Notes for page 34 +:PROPERTIES: +:NOTER_PAGE: 34 +:HIGHLIGHT: #s(pdf-highlight 34 (34 (0.7913978494623656 0.223421926910299 0.8473118279569892 0.3131229235880399))) +:END: +#+BEGIN_QUOTE +Dr.Howard S. Friedman, a psychology professor at the University of California, +Riverside, discovered that people who maintained a low level of stress, who +faced challenges and put their heart and soul into their work in order to succeed, +lived longer than those who chose a more relaxed lifestyle and retired earlier. +#+END_QUOTE +** sedentary +:PROPERTIES: +:NOTER_PAGE: 35 +:HIGHLIGHT: #s(pdf-highlight 35 (35 (0.4032258064516129 0.28903654485049834 0.47956989247311826 0.2857142857142857))) +:END: +Definition of sedentary: characterised by much sitting and little physical exercise. A sedentary lifestyle can lead to various health problems, including obesity, cardiovascular disease, and diabetes. It is important to incorporate regular physical activity into daily routines to counteract the negative effects of a sedentary lifestyle. +** Notes for page 35 +:PROPERTIES: +:NOTER_PAGE: 35 +:HIGHLIGHT: #s(pdf-highlight 35 (35)) +:END: +[[../assets/_books/2026-03-31-ikigai-sitting-will-age-you.png]] +** Notes for page 39 +:PROPERTIES: +:NOTER_PAGE: 39 +:END: +[[../assets/_books/2026-03-31-ikigai-ode.png]] +** Notes for page 43 +:PROPERTIES: +:NOTER_PAGE: 43 +:HIGHLIGHT: #s(pdf-highlight 43 (43 (0.3918191603875134 0.40432612312811983 0.7018299246501614 0.5266222961730449))) +:END: +#+BEGIN_QUOTE +What, then, does logotherapy do? +The answer is pretty clear: It helps you find reasons to live. +Logotherapy pushes patients to consciously discover their life’s purpose in order to confront their neuroses. Their quest to fulfill their destiny then motivates them to press forward, breaking the mental chains of the past and overcoming whatever obstacles they encounter along the way. +#+END_QUOTE +** “He who has a why to live for can bear with almost any how.” +:PROPERTIES: +:NOTER_PAGE: 47 +:HIGHLIGHT: #s(pdf-highlight 47 (47 (0.5311827956989247 0.4377076411960133 0.37526881720430105 0.462624584717608))) +:END: +** Book mention +:PROPERTIES: +:NOTER_PAGE: 47 +:HIGHLIGHT: #s(pdf-highlight 47 (47 (0.5161290322580645 0.4219269102990033 0.7591397849462366 0.42524916943521596))) +:END: +Man’s Search for Meaning - Frankl + +``Morita Therapy and the True Nature of Anxiety-Based +Disorders,'' +** “In feelings, it is best to be wealthy and generous.” +:PROPERTIES: +:NOTER_PAGE: 54 +:HIGHLIGHT: #s(pdf-highlight 54 (54 (0.22903225806451613 0.5514950166112957 0.6849462365591398 0.5564784053156147))) +:END: +** Notes for page 54 +:PROPERTIES: +:NOTER_PAGE: 54 +:HIGHLIGHT: #s(pdf-highlight 54 (54 (0.17419354838709677 0.5905315614617941 0.210752688172043 0.6818936877076412))) +:END: +#+BEGIN_QUOTE +A donkey that is tied to a post by a rope will keep walking around the post +in an attempt to free itself, only to become more immobilized and attached to the +post. The same thing applies to people with obsessive thinking who become +more trapped in their own suffering when they try to escape from their fears and +discomfort. +#+END_QUOTE + +“What do we need to be doing right now? What action should we be taking?” +** Book mention +:PROPERTIES: +:NOTER_PAGE: 64 +:HIGHLIGHT: #s(pdf-highlight 64 (64 (0.14908256880733944 0.44060283687943264 0.21788990825688076 0.46187943262411346))) +:END: +#+BEGIN_QUOTE +As Csikszentmihalyi asserts in his book Flow: The Psychology of Optimal +Experience, +#+END_QUOTE + +Whiplash: How to Survive Our Faster Future +** “a happy man is too satisfied with the present to dwell on the future.” +:PROPERTIES: +:NOTER_PAGE: 69 +:HIGHLIGHT: #s(pdf-highlight 69 (69 (0.2798165137614679 0.5195035460992907 0.17889908256880735 0.5452127659574468))) +:END: +** Notes for page 71 +:PROPERTIES: +:NOTER_PAGE: 71 +:HIGHLIGHT: #s(pdf-highlight 71 (71 (0.14449541284403672 0.5797872340425532 0.7878440366972478 0.6099290780141844))) +:END: +#+BEGIN_QUOTE +Other studies indicate that working on several things at once lowers our +productivity by at least 60 percent and our IQ by more than ten points. +#+END_QUOTE + +[[../assets/_books/2026-04-01-ikigai-studies-multitasking.png]] +** Notes for page 74 +:PROPERTIES: +:NOTER_PAGE: 74 +:HIGHLIGHT: #s(pdf-highlight 74 (74 (0.47591743119266056 0.3333333333333333 0.3543577981651376 0.3820921985815603))) +:END: +#+BEGIN_QUOTE +One of the first words one learns when +starting Japanese lessons is ganbaru, which means “to persevere” or “to stay +firm by doing one’s best.” +#+END_QUOTE +** Documentary +:PROPERTIES: +:NOTER_PAGE: 78 +:HIGHLIGHT: #s(pdf-highlight 78 (78 (0.3176605504587156 0.31117021276595747 0.4954128440366973 0.30851063829787234))) +:END: +~Jiro Dreams of Sushi~ +** Can someone really retire if he is passionate about what he does? +:PROPERTIES: +:NOTER_PAGE: 81 +:HIGHLIGHT: #s(pdf-highlight 81 (81 (0.15137614678899083 0.16666666666666666 0.7465596330275229 0.17641843971631205))) +:END: +A very interesting statement. Having a purpose and passion in life is important, and for me personally, I would like to serve the deen as this is what I am passionate about. What would this entail? Teaching, reading, writing, and learning. +** misanthropic +:PROPERTIES: +:NOTER_PAGE: 82 +:HIGHLIGHT: #s(pdf-highlight 82 (82 (0.4426605504587156 0.3980496453900709 0.49426605504587157 0.3962765957446808))) +:END: +Definition of misanthropic: having a general dislike or distrust of humankind. A misanthropic person may avoid social interactions and prefer solitude. This attitude can stem from negative experiences with others or a pessimistic view of human nature. However, it's important to note that not all individuals who are introverted or prefer solitude are necessarily misanthropic. +** Notes for page 86 +:PROPERTIES: +:NOTER_PAGE: 86 +:HIGHLIGHT: #s(pdf-highlight 86 (86 (0.4931192660550459 0.5620567375886525 0.6387614678899083 0.5824468085106382))) +:END: +#+BEGIN_QUOTE +It is only a thought—one of the sixty +thousand we have every day, according to some experts. +#+END_QUOTE +** Notes for page 87 +:PROPERTIES: +:NOTER_PAGE: 87 +:HIGHLIGHT: #s(pdf-highlight 87 (87 (0.14793577981651376 0.6347517730496454 0.17316513761467892 0.7012411347517731))) +:END: +#+BEGIN_QUOTE +Focus on enjoying your daily rituals, using them as tools to enter a state of +flow. Don’t worry about the outcome—it will come naturally. Happiness is in +the doing, not in the result. As a rule of thumb, remind yourself: “Rituals over +goals.” +#+END_QUOTE +** Notes for page 88 +:PROPERTIES: +:NOTER_PAGE: 88 +:HIGHLIGHT: #s(pdf-highlight 88 (88 (0.14908256880733944 0.4875886524822695 0.5974770642201835 0.5168439716312057))) +:END: +#+BEGIN_QUOTE +Flow is mysterious. It is like a muscle: the more you train it, the more you +will flow, and the closer you will be to your ikigai. +#+END_QUOTE +** “Eat and sleep, and you’ll live a long time. You have to learn to relax.” +:PROPERTIES: +:NOTER_PAGE: 92 +:HIGHLIGHT: #s(pdf-highlight 92 (92 (0.11926605504587157 0.16400709219858156 0.1926605504587156 0.2127659574468085))) +:END: +** Notes for page 97 +:PROPERTIES: +:NOTER_PAGE: 97 +:HIGHLIGHT: #s(pdf-highlight 97 (97 (0.4472477064220184 0.7393617021276595 0.11926605504587157 0.6906028368794326))) +:END: +#+BEGIN_QUOTE +Of those still living, none have retired, and all still enjoy their passion, which +they plan to pursue until their final breath, demonstrating that when you have a +clear purpose, no one can stop you. +#+END_QUOTE +** Never Stop Learning +:PROPERTIES: +:NOTER_PAGE: 99 +:HIGHLIGHT: #s(pdf-highlight 99 (99 (0.15022935779816515 0.1400709219858156 0.3486238532110092 0.1427304964539007))) +:END: +[[../assets/_books/2026-04-01-ikigai-never-stop-learning.png]] +** Notes for page 99 +:PROPERTIES: +:NOTER_PAGE: 99 +:HIGHLIGHT: #s(pdf-highlight 99 (99 (0.2121559633027523 0.7163120567375887 0.16857798165137616 0.7863475177304964))) +:END: +#+BEGIN_QUOTE +“You stay in your time. You don’t go backward. I think if you relate to +the time you’re in, you keep your eyes and ears open, read the paper, see what’s +going on, stay curious about everything, you will automatically be in your +time.” +#+END_QUOTE +** Notes for page 100 +:PROPERTIES: +:NOTER_PAGE: 100 +:HIGHLIGHT: #s(pdf-highlight 100 (100 (0.17775229357798167 0.4148936170212766 0.3864678899082569 0.5558510638297872))) +:END: +#+BEGIN_QUOTE +The sense of community, and the fact that Japanese people make an +effort to stay active until the very end, are key elements of their secret to +long life. +If you want to stay busy even when there’s no need to work, there has +to be an ikigai on your horizon, a purpose that guides you throughout your +life and pushes you to make things of beauty and utility for the +community and yourself. +#+END_QUOTE +** Notes for page 112 +:PROPERTIES: +:NOTER_PAGE: 112 +:HIGHLIGHT: #s(pdf-highlight 112 (112 (0.5731182795698925 0.28903654485049834 0.6053763440860215 0.3397009966777409))) +:END: +#+BEGIN_QUOTE +Washington Burnap stated two +hundred years ago: “The grand essentials to happiness in this life are something +to do, something to love, and something to hope for.” +#+END_QUOTE +** Notes for page 115 +:PROPERTIES: +:NOTER_PAGE: 115 +:HIGHLIGHT: #s(pdf-highlight 115 (115 (0.14301075268817204 0.47093023255813954 0.3870967741935484 0.49750830564784054))) +:END: +#+BEGIN_QUOTE +“To live a long time you need to do three things: exercise to stay healthy, eat well, +and spend time with people.” +#+END_QUOTE +** Notes for page 116 +:PROPERTIES: +:NOTER_PAGE: 116 +:HIGHLIGHT: #s(pdf-highlight 116 (116 (0.14408602150537633 0.35132890365448505 0.5043010752688172 0.38870431893687707))) +:END: +#+BEGIN_QUOTE +“Doing many different things every day. Always staying busy, but doing one thing +at a time, without getting overwhelmed.” +#+END_QUOTE + +#+BEGIN_QUOTE +“The secret to long life is going to bed early, waking up early, and going for a walk. +Living peacefully and enjoying the little things. Getting along with your friends. +Spring, summer, fall, winter . . . enjoying each season, happily.” +#+END_QUOTE +** Notes for page 117 +:PROPERTIES: +:NOTER_PAGE: 117 +:HIGHLIGHT: #s(pdf-highlight 117 (117 (0.14301075268817204 0.09634551495016612 0.5505376344086022 0.09219269102990034))) +:END: +“There’s no secret to it. The trick is just to live.” +** Book mention +:PROPERTIES: +:NOTER_PAGE: 124 +:HIGHLIGHT: #s(pdf-highlight 124 (124 (0.7204301075268817 0.3538205980066445 0.19462365591397848 0.37790697674418605))) +:END: +~The Okinawa Program.~ +** Notes for page 124 +:PROPERTIES: +:NOTER_PAGE: 124 +:HIGHLIGHT: #s(pdf-highlight 124 (124 (0.24193548387096775 0.4435215946843854 0.4559139784946237 0.5116279069767442))) +:END: +#+BEGIN_QUOTE +A study of Okinawa’s centenarians showed that they ate 206 +different foods, including spices, on a regular basis. They ate an average of +eighteen different foods each day, a striking contrast to the nutritional +poverty of our fast-food culture. +#+END_QUOTE +** Notes for page 125 +:PROPERTIES: +:NOTER_PAGE: 125 +:HIGHLIGHT: #s(pdf-highlight 125 (125 (0.5666666666666667 0.10132890365448505 0.3193548387096774 0.12375415282392027))) +:END: +Okinawans eat fish an average of three times per week; +** Notes for page 128 +:PROPERTIES: +:NOTER_PAGE: 128 +:HIGHLIGHT: #s(pdf-highlight 128 (128 (0.11827956989247312 0.1461794019933555 0.7064516129032258 0.1536544850498339))) +:END: +[[../assets/_books/2026-04-01-ikigai-15-list.png]] +** Notes for page 131 +:PROPERTIES: +:NOTER_PAGE: 131 +:HIGHLIGHT: #s(pdf-highlight 131 (131 (0.11827956989247312 0.17358803986710963 0.3301075268817204 0.21096345514950166))) +:END: +#+BEGIN_QUOTE +Shikuwasa is the citrus fruit par excellence of Okinawa, and Ogimi is its largest +producer in all of Japan. +#+END_QUOTE +Was having a look online on where to get Shikuwasa in the UK... seems to be out of stock everywhere and costs over £50 for just 500ml! +** Notes for page 137 +:PROPERTIES: +:NOTER_PAGE: 137 +:HIGHLIGHT: #s(pdf-highlight 137 (137 (0.15268817204301074 0.13787375415282394 0.1989247311827957 0.30564784053156147))) +:END: +#+BEGIN_QUOTE +As Easy as Getting out of Your Chair +“Metabolism slows down 90 percent after 30 minutes of sitting. The +enzymes that move the bad fat from your arteries to your muscles, where +it can get burned off, slow down. And after two hours, good cholesterol +drops 20 percent. Just getting up for five minutes is going to get things +going again. These things are so simple they’re almost stupid,” says Gavin +Bradley1 in a 2015 interview with Brigid Schulte for the Washington +Post.2 +#+END_QUOTE + +``disciplines with clear rules are good for flow.'' +** osteoporosis +:PROPERTIES: +:NOTER_PAGE: 137 +:HIGHLIGHT: #s(pdf-highlight 137 (137 (0.23548387096774193 0.717607973421927 0.16666666666666666 0.7159468438538206))) +:END: +Definition of osteoporosis: a medical condition in which the bones become brittle and fragile from loss of tissue, typically as a result of hormonal changes, or deficiency of calcium or vitamin D. This condition increases the risk of fractures, particularly in the hip, spine, and wrist. +** Radio taiso +:PROPERTIES: +:NOTER_PAGE: 139 +:HIGHLIGHT: #s(pdf-highlight 139 (139 (0.12231182795698926 0.14330218068535824 0.2338709677419355 0.14330218068535824))) +:END: +[[../assets/_books/2026-04-01-ikigai-radio-taiso-1.png]] +[[../assets/_books/2026-04-01-ikigai-radio-taiso-2.png]] +** Styles of yoga +:PROPERTIES: +:NOTER_PAGE: 142 +:HIGHLIGHT: #s(pdf-highlight 142 (142 (0.11935483870967742 0.5132890365448505 0.2849462365591398 0.5041528239202658))) +:END: +- Jnana yoga: the yoga of wisdom; the search for discipline and mental growth +- Karma yoga: focuses on action, on tasks and duties that benefit oneself and one’s community +- Bhakti yoga: the yoga of devotion and surrender to the divine +- Mantra yoga: focuses on the recitation of mantras to reach a state of relaxation +- Kundalini yoga: combines diverse steps to reach the desired mental state +- Raja yoga: also known as the royal path; encompasses a range of steps geared toward achieving communion with oneself and others +- Hatha yoga: the most widespread form in the West and Japan; characterized by asanas or poses combined in a quest for balance +** How to do a Sun Salutation +:PROPERTIES: +:NOTER_PAGE: 144 +:HIGHLIGHT: #s(pdf-highlight 144 (144 (0.12473118279569892 0.1362126245847176 0.43333333333333335 0.14534883720930233))) +:END: +https://www.bodhisurfyoga.com/sun-salutation-sequence +** Imitating clouds +:PROPERTIES: +:NOTER_PAGE: 147 +:HIGHLIGHT: #s(pdf-highlight 147 (147 (0.12365591397849462 0.5631229235880398 0.27419354838709675 0.563953488372093))) +:END: +** Methods for practicing qigong +:PROPERTIES: +:NOTER_PAGE: 150 +:HIGHLIGHT: #s(pdf-highlight 150 (150 (0.4376344086021505 0.15199335548172757 0.16559139784946236 0.1536544850498339))) +:END: +1. Tyau Shenn: (regulating the body) by adopting the correct posture—it is +important to be firmly rooted to the ground +2. Tyau Shyi: (regulating the breath) until it is calm, steady, and peaceful +3. Tyau Hsin: (regulating the mind); the most complicated part, as it implies +emptying the mind of thoughts +4. Tyau Chi: (regulating the life force) through the regulation of the three prior +elements, so that it flows naturally +5. Tyau Shen: (regulating the spirit); the spirit is both strength and root in +battle, as Yang Jwing-Ming explains in The Essence of Taiji Qigong. +** Book mention +:PROPERTIES: +:NOTER_PAGE: 157 +:HIGHLIGHT: #s(pdf-highlight 157 (157 (0.21827956989247313 0.17607973421926912 0.34516129032258064 0.17691029900332225))) +:END: +Xiuzhen shishu +** Notes for page 157 +:PROPERTIES: +:NOTER_PAGE: 157 +:HIGHLIGHT: #s(pdf-highlight 157 (157 (0.12150537634408602 0.17607973421926912 0.22903225806451613 0.19933554817275748))) +:END: +#+BEGIN_QUOTE +The book Xiuzhen shishu, known in the West as Ten Books on the Cultivation +of Perfection, +#+END_QUOTE + +#+BEGIN_QUOTE +In spring, breathe xu for clear eyes and so wood can aid your liver. +In summer, reach for he, so that heart and fire can be at peace. +In fall, breathe si to stabilize and gather metal, keeping the lungs moist. +For the kidneys, next, breathe chui and see your inner waters calm. +The Triple Heater needs your xi to expel all heat and troubles. +In all four seasons, take deep breaths so your spleen can process food. +And, of course, avoid exhaling noisily; don’t let even your own ears hear +you. +The practice is most excellent and will help preserve your divine elixir. +#+END_QUOTE +** Nana korobi ya oki 七転び⼋起き Fall seven times, rise eight. —Japanese proverb +:PROPERTIES: +:NOTER_PAGE: 162 +:HIGHLIGHT: #s(pdf-highlight 162 (162 (0.2010752688172043 0.5506644518272426 0.8236559139784946 0.5855481727574751))) +:END: +** Notes for page 162 +:PROPERTIES: +:NOTER_PAGE: 162 +:HIGHLIGHT: #s(pdf-highlight 162 (162 (0.3204301075268817 0.829734219269103 0.6290322580645161 0.9078073089700996))) +:END: +#+BEGIN_QUOTE +God, give us grace to accept with serenity +the things that cannot be changed, +Courage to change the things +which should be changed, +and the Wisdom to distinguish +the one from the other. +#+END_QUOTE +** Notes for page 165 +:PROPERTIES: +:NOTER_PAGE: 165 +:HIGHLIGHT: #s(pdf-highlight 165 (165 (0.15376344086021507 0.28488372093023256 0.25053763440860216 0.37624584717607973))) +:END: +#+BEGIN_QUOTE +The Stoics believed that these kinds of desires and ambitions are not worth +pursuing. The objective of the virtuous person is to reach a state of tranquility +(apatheia): the absence of negative feelings such as anxiety, fear, shame, vanity, +and anger, and the presence of positive feelings such as happiness, love, serenity, +and gratitude. +#+END_QUOTE +** Notes for page 168 +:PROPERTIES: +:NOTER_PAGE: 168 +:HIGHLIGHT: #s(pdf-highlight 168 (168 (0.15268817204301074 0.3330564784053156 0.7591397849462366 0.3579734219269103))) +:END: +#+BEGIN_QUOTE +A complementary Japanese concept is that of ichi-go ichi-e, which could be +translated as “This moment exists only now and won’t come again.” +#+END_QUOTE +** Notes for page 169 +:PROPERTIES: +:NOTER_PAGE: 169 +:HIGHLIGHT: #s(pdf-highlight 169 (169 (0.14838709677419354 0.10132890365448505 0.33225806451612905 0.17940199335548174))) +:END: +#+BEGIN_QUOTE +Ichi-go ichi-e teaches us to focus on the present and enjoy each moment that +life brings us. This is why it is so important to find and pursue our ikigai. +Wabi-sabi teaches us to appreciate the beauty of imperfection as an +opportunity for growth. +#+END_QUOTE +** Book mention +:PROPERTIES: +:NOTER_PAGE: 170 +:HIGHLIGHT: #s(pdf-highlight 170 (170 (0.5150537634408602 0.2666112956810631 0.1817204301075269 0.292358803986711))) +:END: +Antifragile: Things That Gain from Disorder +** Notes for page 170 +:PROPERTIES: +:NOTER_PAGE: 170 +:HIGHLIGHT: #s(pdf-highlight 170 (170 (0.23010752688172043 0.41943521594684385 0.6279569892473118 0.446843853820598))) +:END: +#+BEGIN_QUOTE +“Antifragility is beyond resilience or robustness. The resilient resists +shocks and stays the same; the antifragile gets better.” +#+END_QUOTE +** Notes for page 171 +:PROPERTIES: +:NOTER_PAGE: 171 +:HIGHLIGHT: #s(pdf-highlight 171 (171 (0.14731182795698924 0.5481727574750831 0.6774193548387096 0.5755813953488372))) +:END: +#+BEGIN_QUOTE +The same idea goes for friendships and personal interests. It’s just a matter, as +the saying goes, of not putting all your eggs in one basket. +#+END_QUOTE +** Book mention +:PROPERTIES: +:NOTER_PAGE: 173 +:HIGHLIGHT: #s(pdf-highlight 173 (173 (0.33763440860215055 0.21345514950166114 0.6860215053763441 0.21926910299003322))) +:END: +~Nassim Nicholas Taleb’s Antifragile.~ +** Ikigai: The art of living +:PROPERTIES: +:NOTER_PAGE: 175 +:HIGHLIGHT: #s(pdf-highlight 175 (175 (0.2741935483870968 0.13187954309449637 0.5752688172043011 0.14018691588785046))) +:END: +[[../assets/_books/2026-04-01-ikigai-poem-1.png]] + +...achieve a happy state of flow in all you do, like the calligrapher at his canvas or the chef who, after half a century, still prepares sushi for his patrons with love. diff --git a/Career Concepts/20250722221649-career_moc.org b/Career Concepts/20250722221649-career_moc.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20250723200800-postgres.org b/Career Concepts/20250723200800-postgres.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20250727122406-database_moc.org b/Career Concepts/20250727122406-database_moc.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20250804201706-big_o_complexity.org b/Career Concepts/20250804201706-big_o_complexity.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20251223215636-design_patterns_notes.org b/Career Concepts/20251223215636-design_patterns_notes.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20251229180039-airflow.org b/Career Concepts/20251229180039-airflow.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20251229180156-airflow_tasks.org b/Career Concepts/20251229180156-airflow_tasks.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20251229180249-airflow_dags.org b/Career Concepts/20251229180249-airflow_dags.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20260101010049-concepts.org b/Career Concepts/20260101010049-concepts.org old mode 100644 new mode 100755 index 40eb365..08ea5d0 --- a/Career Concepts/20260101010049-concepts.org +++ b/Career Concepts/20260101010049-concepts.org @@ -25,6 +25,8 @@ Part of being a software engineer is having a good grasp of mathematical concept - [[id:5b714c6c-7eaf-4f3f-b4f6-2166ff3a9963][CI/CD Summary]] +- [[id:67ad330b-cc11-4e8e-b054-12b9da45ea60][Software Development Methodologies]] + Some core programming concepts that are essential for software development. The things I need to add here are: * APIs diff --git a/Career Concepts/20260101011126-xor.org b/Career Concepts/20260101011126-xor.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20260101012549-solid_principles.org b/Career Concepts/20260101012549-solid_principles.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20260101012731-solid_principles_examples.org b/Career Concepts/20260101012731-solid_principles_examples.org old mode 100644 new mode 100755 index a2e8f23..acc014c --- a/Career Concepts/20260101012731-solid_principles_examples.org +++ b/Career Concepts/20260101012731-solid_principles_examples.org @@ -1,5 +1,6 @@ :PROPERTIES: :ID: F3875F0F-5C9E-4BB1-A79C-6000B9558115 :END: -#+title: solid_principles_examples +#+title: Solid Principles Examples +#+filetags: :notes:technical:career: diff --git a/Career Concepts/20260115152626-apim.org b/Career Concepts/20260115152626-apim.org old mode 100644 new mode 100755 diff --git a/Career Concepts/20260121173318-api_architecture.org b/Career Concepts/20260121173318-api_architecture.org old mode 100644 new mode 100755 index 0b0507d..ce5f92a --- a/Career Concepts/20260121173318-api_architecture.org +++ b/Career Concepts/20260121173318-api_architecture.org @@ -2,7 +2,7 @@ :ID: 49b195c8-e116-40ca-86e8-62c65dbb5a4f :END: #+title: API Architecture -#+filetags: :notes:concepts:api: +#+filetags: :technical:notes:api: #+category: Career Concepts *Z notes on API architecture - companion to [[id:56fabaf6-e8aa-45d0-a1c1-89f247f0a93f][APIM notes]]* diff --git a/Career Concepts/20260305102210-cicd_example.org b/Career Concepts/20260305102210-cicd_example.org old mode 100644 new mode 100755 index 8031fa9..5af52c1 --- a/Career Concepts/20260305102210-cicd_example.org +++ b/Career Concepts/20260305102210-cicd_example.org @@ -2,6 +2,7 @@ :ID: 2767b5ac-f2c9-4b1e-ab87-82c43cdec4c1 :END: #+title: CI/CD Example +#+filetags: :notes:career:technical: #+category: Career Concepts During the first wave in 2026, we planned to get the netcore version of site visits out to customers. There were a bunch of tasks relating to this, so I asked AI to conceptually explain them. diff --git a/Career Concepts/20260305111610-cicd_summary.org b/Career Concepts/20260305111610-cicd_summary.org old mode 100644 new mode 100755 index add0015..2aa8a45 --- a/Career Concepts/20260305111610-cicd_summary.org +++ b/Career Concepts/20260305111610-cicd_summary.org @@ -2,6 +2,7 @@ :ID: 5b714c6c-7eaf-4f3f-b4f6-2166ff3a9963 :END: #+title: CI/CD Summary +#+filetags: :notes:technical:career: #+category: Career Concepts * Summary diff --git a/Career Concepts/20260305130457-database_perms_roles_accounts.org b/Career Concepts/20260305130457-database_perms_roles_accounts.org old mode 100644 new mode 100755 index f49b845..95fa0e4 --- a/Career Concepts/20260305130457-database_perms_roles_accounts.org +++ b/Career Concepts/20260305130457-database_perms_roles_accounts.org @@ -2,6 +2,7 @@ :ID: b4858f6a-b05c-47f2-972e-905e0bb2c352 :END: #+title: Database Permissions, Roles, and Accounts +#+filetags: :notes:career:technical:database: #+category: Career Concepts * Introduction diff --git a/Career Concepts/20260305132058-restful_api.org b/Career Concepts/20260305132058-restful_api.org old mode 100644 new mode 100755 index a05992a..af020d7 --- a/Career Concepts/20260305132058-restful_api.org +++ b/Career Concepts/20260305132058-restful_api.org @@ -2,6 +2,7 @@ :ID: 6a5bf6dd-d0ec-43e4-8e07-9956f4715f10 :END: #+title: RESTful APIs +#+filetags: :notes:api:career:technical: #+category: Career Concepts * What is a RESTful API? diff --git a/20260327110908-api_intro_notes.org b/Career Concepts/20260327110908-api_intro_notes.org old mode 100644 new mode 100755 similarity index 94% rename from 20260327110908-api_intro_notes.org rename to Career Concepts/20260327110908-api_intro_notes.org index 663e84d..b480e82 --- a/20260327110908-api_intro_notes.org +++ b/Career Concepts/20260327110908-api_intro_notes.org @@ -2,6 +2,7 @@ :ID: e7f082e4-1b9f-4ebe-96d6-94d92e80a07e :END: #+title: API Intro Notes +#+filetags: :notes:api:career:technical: **Notes from [[https://app.pluralsight.com/ilx/video-courses/apis-explained/course-overview][PluralSight]]** diff --git a/20260327114708-asp_net_core_6_apis_notes.org b/Career Concepts/20260327114708-asp_net_core_6_apis_notes.org old mode 100644 new mode 100755 similarity index 83% rename from 20260327114708-asp_net_core_6_apis_notes.org rename to Career Concepts/20260327114708-asp_net_core_6_apis_notes.org index 2538772..8988421 --- a/20260327114708-asp_net_core_6_apis_notes.org +++ b/Career Concepts/20260327114708-asp_net_core_6_apis_notes.org @@ -2,5 +2,6 @@ :ID: b2fd7038-42a8-4cbe-882b-92fbe2c12a11 :END: #+title: ASP.NET Core Web API Fundamental Notes +#+filetags: :notes:api:career:technical: **Notes from [[https://app.pluralsight.com/ilx/video-courses/asp-dot-net-core-6-web-api-fundamentals/resources][Pluralsight]]** diff --git a/Career Concepts/20260328215014-software_dev_methodologies.org b/Career Concepts/20260328215014-software_dev_methodologies.org new file mode 100755 index 0000000..53ff65b --- /dev/null +++ b/Career Concepts/20260328215014-software_dev_methodologies.org @@ -0,0 +1,313 @@ +:PROPERTIES: +:ID: 67ad330b-cc11-4e8e-b054-12b9da45ea60 +:END: +#+title: Software Development Methodologies +#+filetags: :notes:career:technical: + + +* Software Development Methodologies + +A software development methodology defines the /process, structure, and principles/ +used to plan, manage, and execute software projects. + +** Why It Matters +- Ensures predictability and consistency across teams +- Reduces risk of project failure +- Aligns stakeholders and developers on expectations +- Provides tools for handling change and uncertainty + +----- + +* 1. Waterfall + +** Overview +A *linear, sequential* model where each phase must be completed before the next begins. + +** Phases +1. Requirements +2. System Design +3. Implementation +4. Testing +5. Deployment +6. Maintenance + +** Example +#+BEGIN_EXAMPLE +A government agency contracts a firm to build a tax portal. +Requirements are frozen at sign-off; code is written six months +later; testing follows; the portal launches two years in. +#+END_EXAMPLE + +** Pros & Cons +| Pros | Cons | +|-----------------------------+-----------------------------------| +| Clear structure and phases | Very rigid; change is costly | +| Easy to manage milestones | Late discovery of defects | +| Good for fixed requirements | Customer sees nothing until the end| + +** Best For +- Projects with well-defined, stable requirements +- Regulatory/compliance-heavy environments (aerospace, medical devices) + +----- + +* 2. Agile + +** Overview +An *iterative, incremental* philosophy that values: +#+BEGIN_QUOTE +Individuals and interactions over processes and tools. +Working software over comprehensive documentation. +Customer collaboration over contract negotiation. +Responding to change over following a plan. +— The Agile Manifesto (2001) +#+END_QUOTE + +** Core Concepts +- *Iterations (sprints)*: Short delivery cycles (1–4 weeks) +- *Incremental delivery*: Working software shipped frequently +- *Feedback loops*: Customers review and redirect regularly +- *Cross-functional teams*: Dev, QA, design collaborate continuously + +** Example +#+BEGIN_EXAMPLE +A startup builds a mobile app in 2-week sprints. +Sprint 1 → user login +Sprint 2 → profile page +Sprint 3 → search feature +After each sprint, real users test and give feedback, +shaping what gets built next. +#+END_EXAMPLE + +** Agile Values vs Waterfall +| Dimension | Waterfall | Agile | +|-----------------+---------------+-------------------| +| Planning | Upfront, fixed| Continuous, adaptive| +| Delivery | End of project| Every sprint | +| Change | Discouraged | Embraced | +| Customer role | Sign-off only | Active partner | +| Risk exposure | High (late) | Low (early) | + +** Best For +- Products with evolving requirements +- Startups, SaaS, consumer apps + +----- + +* 3. Scrum + +** Overview +Scrum is the most popular *Agile framework*. It imposes a specific +structure of roles, events, and artefacts on top of Agile principles. + +** Roles +| Role | Responsibility | +|------------------+-----------------------------------------------------| +| *Product Owner* | Owns the backlog; prioritises what to build | +| *Scrum Master* | Removes blockers; facilitates ceremonies | +| *Dev Team* | Self-organising; delivers the increment | + +** Artefacts +- *Product Backlog* — ordered list of all desired features/fixes +- *Sprint Backlog* — subset of items pulled into the current sprint +- *Increment* — shippable product at end of each sprint + +** Ceremonies (Events) +#+BEGIN_EXAMPLE +[Sprint Planning] → [Daily Standup × N] → [Sprint Review] → [Retrospective] + ↑_____________________________ repeat (1–4 weeks) ___________________| +#+END_EXAMPLE + +| Event | Duration | Purpose | +|--------------------+--------------+---------------------------------------| +| Sprint Planning | ≤ 8 hrs | Decide what goes into the sprint | +| Daily Standup | 15 min | Sync on progress, surface blockers | +| Sprint Review | ≤ 4 hrs | Demo increment to stakeholders | +| Retrospective | ≤ 3 hrs | Reflect and improve the process | + +** Example: Daily Standup Format +#+BEGIN_EXAMPLE +Each team member answers three questions: + 1. What did I complete yesterday? + 2. What will I work on today? + 3. Is anything blocking me? +#+END_EXAMPLE + +** Best For +- Teams of 3–9 people +- Products with frequent reprioritisation + +----- + +* 4. Kanban + +** Overview +A *flow-based* method focused on visualising work and limiting +work-in-progress (WIP) to maximise throughput. No fixed sprints. + +** Core Principles +1. Visualise the workflow (the Kanban board) +2. Limit WIP per column +3. Manage and improve flow +4. Make policies explicit + +** Example Board +#+BEGIN_EXAMPLE +| Backlog | In Progress (WIP:2) | Review (WIP:1) | Done | +|---------|---------------------|----------------|------| +| Task D | Task B | Task A | Task X| +| Task E | Task C | | Task Y| +#+END_EXAMPLE + +WIP limits prevent bottlenecks — new work cannot start until a slot opens. + +** Scrum vs Kanban +| Dimension | Scrum | Kanban | +|---------------+---------------------+---------------------| +| Cadence | Fixed sprints | Continuous flow | +| Roles | PO, SM, Dev Team | No prescribed roles | +| Change | After sprint | Anytime | +| Metrics | Velocity | Cycle time, throughput| +| Best for | Feature development | Operations, support | + +----- + +* 5. Extreme Programming (XP) + +** Overview +An Agile methodology with an extreme focus on *engineering practices* +and code quality. + +** Key Practices +- *Test-Driven Development (TDD)*: Write the test before the code +- *Pair Programming*: Two developers work at one machine +- *Continuous Integration (CI)*: Merge and test code multiple times a day +- *Refactoring*: Continuously improve code structure +- *Small Releases*: Deploy frequently, in small increments +- *Collective Code Ownership*: Anyone can change any code at any time + +** Example: TDD Cycle +#+BEGIN_EXAMPLE +Red → Write a failing test +Green → Write the minimum code to pass it +Refactor → Clean up without breaking the test +Repeat. +#+END_EXAMPLE + +** Best For +- Teams prioritising code quality and technical excellence +- Projects with rapidly changing requirements + +----- + +* 6. SAFe (Scaled Agile Framework) + +** Overview +SAFe scales Agile practices across *large enterprises* with multiple +teams working on the same product. + +** Key Concepts +- *Agile Release Train (ART)*: A long-lived team of 50–125 people +- *Program Increment (PI)*: A 8–12 week planning cycle (like a "super sprint") +- *PI Planning*: All teams plan together face-to-face every PI + +** Levels +#+BEGIN_EXAMPLE +Essential SAFe: Team + Program levels +Large Solution: + Solution Train (multiple ARTs) +Portfolio SAFe: + Portfolio strategy & funding +#+END_EXAMPLE + +** Best For +- Enterprises with 100+ engineers +- Organisations migrating from Waterfall to Agile at scale + +----- + +* 7. DevOps (Methodology + Culture) + +** Overview +DevOps bridges *development and operations* to enable faster, more +reliable software delivery through automation and collaboration. + +** Core Pillars +| Pillar | Description | +|------------------------+---------------------------------------------------| +| *CI/CD* | Automate build, test, and deploy pipelines | +| *Infrastructure as Code* | Manage servers via code (Terraform, Ansible) | +| *Monitoring* | Observe systems in production continuously | +| *Blameless Culture* | Learn from failures without finger-pointing | + +** Example: CI/CD Pipeline +#+BEGIN_EXAMPLE +Code Push → Build → Unit Tests → Integration Tests → Deploy to Staging + → Manual Approval → Deploy to Production → Monitor +#+END_EXAMPLE + +** Best For +- Any team wanting faster, safer releases +- Organisations running cloud-native infrastructure + +----- + +* Comparison Summary + +| Methodology | Structure | Delivery Cadence | Flexibility | Team Size | Best Fit | +|-------------+------------+------------------+-------------+------------+------------------------| +| Waterfall | Sequential | End of project | Low | Any | Fixed scope, compliance| +| Agile | Iterative | Every sprint | High | Small–Med | Evolving requirements | +| Scrum | Iterative | Every 1–4 weeks | High | 3–9 | Feature development | +| Kanban | Flow-based | Continuous | Very High | Any | Ops, support, flow work| +| XP | Iterative | Weekly | High | Small | Quality-critical code | +| SAFe | Iterative | Every 8–12 weeks | Medium | 50–125+ | Enterprise Agile | +| DevOps | Continuous | On every commit | High | Any | Fast, reliable delivery| + +----- + +* Choosing the Right Methodology + +Ask these questions: +1. *How stable are the requirements?* + - Stable → Waterfall / SAFe + - Changing → Agile / Scrum / Kanban + +2. *How large is the team?* + - 3–9 → Scrum + - 50+ → SAFe + - Any size ops team → Kanban + +3. *How important is engineering quality?* + - Very high → XP (TDD, pair programming) + +4. *How often do you need to ship?* + - Daily → DevOps + CI/CD + - Weekly → Scrum / XP + - Continuously → Kanban + +5. *What is the regulatory environment?* + - High compliance → Waterfall or hybrid + +#+BEGIN_EXAMPLE +Most modern teams use a HYBRID approach: + Scrum (planning cadence) + + Kanban board (visual workflow) + + XP practices (TDD, CI) + + DevOps (automated pipelines) +#+END_EXAMPLE + +----- + +* Key Terminology Glossary + +| Term | Definition | +|-------------------+--------------------------------------------------------------| +| Sprint | A fixed time-box (1–4 wks) in Scrum for delivering work | +| Backlog | Prioritised list of work items | +| Velocity | Amount of work a team completes per sprint | +| WIP Limit | Maximum items allowed in a workflow stage simultaneously | +| CI/CD | Continuous Integration / Continuous Delivery (or Deployment) | +| TDD | Test-Driven Development | +| Retrospective | Meeting to inspect and improve team process | +| Definition of Done| Agreed criteria for when a task is truly "complete" | +| Epic | Large body of work broken into smaller user stories | +| User Story | Feature described from end-user perspective | diff --git a/Emacs/20241210004247-emacs_moc.org b/Emacs/20241210004247-emacs_moc.org old mode 100644 new mode 100755 index c2306df..04fb44a --- a/Emacs/20241210004247-emacs_moc.org +++ b/Emacs/20241210004247-emacs_moc.org @@ -13,7 +13,9 @@ The purpose of this file is to store things related to emacs (that being package - [[id:2ab0fa3f-8ac6-4af2-8cd4-1dd490fb19c3][Emacs Magit]] - [[id:45CC3AF5-5E20-4B03-A36C-8D4BDD5CBB13][Emacs Evil Mode]] - [[id:7d2e867e-f091-4362-a583-453f732207fe][Emacs ORG Publish]] - +- [[id:168b6b10-d670-4f9d-89cf-aeb59aa644a1][Emacs Org Noter]] +- [[id:10b1f18e-b221-4ab8-bce4-b6f20ad417db][emacs-calendar]] + * Resources - A link that contains all the key bindings for emacs: [[http://xahlee.info/emacs/emacs/emacs_keybinding_list.html][Keybindings list]] - the theme 'ef-dream' repository: [[https://github.com/protesilaos/ef-themes][ef-themes]] @@ -27,12 +29,3 @@ The purpose of this file is to store things related to emacs (that being package - config: [[https://gitlab.com/dwt1/configuring-emacs][config-dwt]] - simplenote to self hosted: [[https://ru2saig.github.io/posts/switching-from-simplenote-to-a-self-hosted-approach-nextcloud-orgzly-and-emacs/][Link]] - - -[[../assets/file_example_MOV_480_700kB.mov]] - - -[[../assets/file_example_MP4_480_1_5MG.mp4]] - - -[[../assets/file_example_MP3_700KB.mp3]] diff --git a/Emacs/20241210004329-org_roam.org b/Emacs/20241210004329-org_roam.org old mode 100644 new mode 100755 diff --git a/Emacs/20241210004453-gtd.org b/Emacs/20241210004453-gtd.org old mode 100644 new mode 100755 diff --git a/Emacs/20250218174735-emacs_stuff_keybindings.org b/Emacs/20250218174735-emacs_stuff_keybindings.org old mode 100644 new mode 100755 diff --git a/Emacs/20250326002128-emacs_stuff_elisp.org b/Emacs/20250326002128-emacs_stuff_elisp.org old mode 100644 new mode 100755 diff --git a/Emacs/20250329231658-emacs_stuff_magit.org b/Emacs/20250329231658-emacs_stuff_magit.org old mode 100644 new mode 100755 diff --git a/Emacs/20250420012258-emacs_stuff_evil.org b/Emacs/20250420012258-emacs_stuff_evil.org old mode 100644 new mode 100755 diff --git a/Emacs/20250806155335-emacs_stuff_org_publish.org b/Emacs/20250806155335-emacs_stuff_org_publish.org old mode 100644 new mode 100755 diff --git a/Linux/20250213124335-i3_wm.org b/Linux/20250213124335-i3_wm.org old mode 100644 new mode 100755 diff --git a/Linux/20250417173809-linux_moc.org b/Linux/20250417173809-linux_moc.org old mode 100644 new mode 100755 diff --git a/Linux/20250417173809-linux_stuff.org b/Linux/20250417173809-linux_stuff.org old mode 100644 new mode 100755 diff --git a/Linux/20250417173821-wacom_notes.org b/Linux/20250417173821-wacom_notes.org old mode 100644 new mode 100755 diff --git a/Linux/20250428133236-systemd_services.org b/Linux/20250428133236-systemd_services.org old mode 100644 new mode 100755 diff --git a/Linux/20250516161728-gpg_encryption.org b/Linux/20250516161728-gpg_encryption.org old mode 100644 new mode 100755 diff --git a/Linux/20250703183239-linux_arch_linux.org b/Linux/20250703183239-linux_arch_linux.org old mode 100644 new mode 100755 diff --git a/Linux/20250723190927-self_hosting.org b/Linux/20250723190927-self_hosting.org old mode 100644 new mode 100755 diff --git a/Linux/20250727120306-nextcloud.org b/Linux/20250727120306-nextcloud.org old mode 100644 new mode 100755 index 2c3bdff..f014535 --- a/Linux/20250727120306-nextcloud.org +++ b/Linux/20250727120306-nextcloud.org @@ -218,3 +218,69 @@ Im thinking of having this as our shared calendar and file system. The only user ** Connecting to IOS https://www.reddit.com/r/NextCloud/comments/1pehpft/calendar_app_for_ios/ + +* ICS stuff: + +** To get the ID of a calendar subscription: + +#+begin_src + zaine@zaine-HP-ProDesk-400-G1-SFF [14:14:27] [~] +-> % docker exec nextcloud-app-1 php occ dav:list-subscriptions zaine ++-----------------------+-----------------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| URI | Displayname | Refresh rate | Source | ++-----------------------+-----------------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| outlookoffice365com-1 | outlook.office365.com | PT5M (default) | https://outlook.office365.com/owa/calendar/b910ea835e414663831e505f3d10baa2@microlise.com/d2568a0134fb49af92d39c1669c4729317662288011094411305/calendar.ics | ++-----------------------+-----------------------+----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +#+end_src + +** emacs config to sync calendars: + +#+begin_src +(require 'org-caldav) +(require 'url) +(require 'icalendar) +(modify-coding-system-alist 'file "caldav-work\\.org\\'" 'utf-8-unix) +(defvar my/outlook-ics-url + "https://outlook.office365.com/owa/calendar/b910ea835e414663831e505f3d10baa2@microlise.com/d2568a0134fb49af92d39c1669c4729317662288011094411305/calendar.ics") + +(defvar my/outlook-org-file + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-work.org") + +(defvar my/ics-python-script + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\ics_to_org.py") + +(defun my/sync-outlook-calendar () + "Fetch and expand Outlook ICS (including recurrences) into org file." + (interactive) + (message "Syncing Outlook calendar...") + (let* ((cmd (format "python \"%s\" \"%s\" \"%s\"" + my/ics-python-script + my/outlook-ics-url + my/outlook-org-file)) + (result (shell-command-to-string cmd))) + (message "Outlook calendar sync: %s" (string-trim result)))) + +;; Sync on startup and every 30 minutes +(my/sync-outlook-calendar) +(run-with-timer (* 30 60) (* 30 60) #'my/sync-outlook-calendar) +;; --- CalDAV for native Nextcloud calendars --- +(setq org-caldav-url "https://nextcloud.zainezq.com/remote.php/dav/calendars/zaine/") +(setq org-caldav-calendars + '((:calendar-id "personal" + :inbox "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-personal.org" + :files nil) + (:calendar-id "zxh" + :inbox "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-family.org" + :files nil))) + +;; --- Agenda files --- +(setq org-agenda-files + '("D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-personal.org" + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-work.org" + "D:\\_nextcloud\\master-folder\\org_files\\calendar\\caldav-family.org" + "D:\\_nextcloud\\master-folder\\org_files\\org_roam\\Books\\20250724230557-books_org_agenda.org")) + + +#+end_src diff --git a/Linux/20251019114736-server_moc.org b/Linux/20251019114736-server_moc.org old mode 100644 new mode 100755 diff --git a/Linux/20260104155940-server_backend.org b/Linux/20260104155940-server_backend.org old mode 100644 new mode 100755 diff --git a/Linux/20260227103506-vaultwarden.org b/Linux/20260227103506-vaultwarden.org old mode 100644 new mode 100755 index 1e4ee4f..de57314 --- a/Linux/20260227103506-vaultwarden.org +++ b/Linux/20260227103506-vaultwarden.org @@ -2,6 +2,7 @@ :ID: e12ef44d-69a4-45c8-a823-c810d2c3857c :END: #+title: Vaultwarden +#+filetags: :server:self-hosting: Just ran into an issue where the IOS app was failing due to the latest version of bitwarden not being installed on the server. To fix this: diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/Misc/20241210001045-technical_moc.org b/Misc/20241210001045-technical_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20241211161232- job_application_cover_letters.org b/Misc/20241211161232- job_application_cover_letters.org old mode 100644 new mode 100755 diff --git a/Misc/20241211161232-applications.org b/Misc/20241211161232-applications.org old mode 100644 new mode 100755 diff --git a/Misc/20250402185735-java_moc.org b/Misc/20250402185735-java_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20250430001952-microlise_assessment.org b/Misc/20250430001952-microlise_assessment.org old mode 100644 new mode 100755 diff --git a/Misc/20250717230336-recipes_moc.org b/Misc/20250717230336-recipes_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20250719174944-recipes_ideas.org b/Misc/20250719174944-recipes_ideas.org old mode 100644 new mode 100755 diff --git a/Misc/20250719175023-recipes_done.org b/Misc/20250719175023-recipes_done.org old mode 100644 new mode 100755 diff --git a/Misc/20250723185829-test_driven_development.org b/Misc/20250723185829-test_driven_development.org old mode 100644 new mode 100755 diff --git a/Misc/20250723185943-bowling_kata.org b/Misc/20250723185943-bowling_kata.org old mode 100644 new mode 100755 diff --git a/Misc/20250723190203-java_portswrigger_test.org b/Misc/20250723190203-java_portswrigger_test.org old mode 100644 new mode 100755 diff --git a/Misc/20250723190656-java_junit_testing.org b/Misc/20250723190656-java_junit_testing.org old mode 100644 new mode 100755 diff --git a/Misc/20250806111925-non_technical_moc.org b/Misc/20250806111925-non_technical_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20250918120519-misc_moc.org b/Misc/20250918120519-misc_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20250918120706-wedding_moc.org b/Misc/20250918120706-wedding_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20250926151524-workflow_moc.org b/Misc/20250926151524-workflow_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20251002154125-microlise_moc.org b/Misc/20251002154125-microlise_moc.org old mode 100644 new mode 100755 diff --git a/Misc/20251002154204-pre_work_prep_microlise.org b/Misc/20251002154204-pre_work_prep_microlise.org old mode 100644 new mode 100755 diff --git a/Misc/20251019114758-old_nextcloud_server_code.org b/Misc/20251019114758-old_nextcloud_server_code.org old mode 100644 new mode 100755 diff --git a/Misc/20251101123637-backlog.org b/Misc/20251101123637-backlog.org old mode 100644 new mode 100755 index 7015665..7e45b87 --- a/Misc/20251101123637-backlog.org +++ b/Misc/20251101123637-backlog.org @@ -9,5 +9,10 @@ - Powershell script to give insights on the build scripts. This can be fed into the daily logs/discord pipeline - have a central point where we can see the server details and documentations - Have a two way sync between the cookbook and org-roam notes (see: [[https://nextcloud.github.io/cookbook/dev/api/0.1.3/index.html#/Recipes/listRecipes][swagger]]) - + +- Sort out all the iphone chrome nitter/xcancel links (so we don't go there again) +- sort out all the book notes. the current ones are: + - the science of self-discipline + - clean coder + - so good they can't ignore you * To sort: diff --git a/Misc/20251109205925-old_nginx_code.org b/Misc/20251109205925-old_nginx_code.org old mode 100644 new mode 100755 diff --git a/Misc/20251122223053-keyboard.org b/Misc/20251122223053-keyboard.org old mode 100644 new mode 100755 diff --git a/Misc/20251214210526-useful_c_imports.org b/Misc/20251214210526-useful_c_imports.org old mode 100644 new mode 100755 diff --git a/Misc/20251223220531-technical_commonplace.org b/Misc/20251223220531-technical_commonplace.org old mode 100644 new mode 100755 diff --git a/Misc/20260101143401-actual_self_hosted.org b/Misc/20260101143401-actual_self_hosted.org old mode 100644 new mode 100755 index 0b095bd..2befcea --- a/Misc/20260101143401-actual_self_hosted.org +++ b/Misc/20260101143401-actual_self_hosted.org @@ -4,6 +4,10 @@ #+title: Actual #+filetags: :server:self-hosting:finance: +* Notes: +- <2026-04-01 Wed>: There is one transaction waiting to show on the statement for <2026-03-31 Tue>. Will need to redo March full. [ ] + +* Setup In order to update the balance, I have decided for the moment to export as ~csv~ the monthly transactions from Halifax. Place the file into the ~~/master-folder/attachments/bank-statements/~ folder and name it as ~halifax-YYYY-MM.csv~, where ~YYYY~ is the four-digit year and ~MM~ is the two-digit month. Then run the following command in the terminal whilst being in the ~~/master-folder/projects/scripts/~ directory: diff --git a/Misc/20260101194248-gitea.org b/Misc/20260101194248-gitea.org old mode 100644 new mode 100755 diff --git a/Misc/20260107182221-2026_targets.org b/Misc/20260107182221-2026_targets.org old mode 100644 new mode 100755 diff --git a/Misc/20260111204228-rss_articles.org b/Misc/20260111204228-rss_articles.org old mode 100644 new mode 100755 diff --git a/Misc/20260117194854-programming_projects.org b/Misc/20260117194854-programming_projects.org old mode 100644 new mode 100755 diff --git a/Misc/20260211114817-personal_operating_system.org b/Misc/20260211114817-personal_operating_system.org old mode 100644 new mode 100755 diff --git a/Misc/20260211124505-timetable.org b/Misc/20260211124505-timetable.org old mode 100644 new mode 100755 diff --git a/Misc/20260307165727-proverbs.org b/Misc/20260307165727-proverbs.org old mode 100644 new mode 100755 index 59f1c51..7c006c3 --- a/Misc/20260307165727-proverbs.org +++ b/Misc/20260307165727-proverbs.org @@ -2,6 +2,7 @@ :ID: 45eefd5b-a3d8-4b83-84ea-5a6984025755 :END: #+title: Proverbs +#+filetags: :notes:proverbs:misc: * Arabic @@ -22,3 +23,13 @@ Interpretation: It's used when someone fails to achieve one thing and ends up with an even bigger problem or loss — essentially, adding insult to injury. Instead of just missing out on one thing, they end up worse off than before. ** <2026-03-08 Sun>: [[https://www.urdupod101.com/blog/2021/06/10/best-urdu-proverbs/][Link to a bunch of proverbs]] + +* Latin +** <2026-03-31 Tue 13:04>: “mens sana in corpore sano” +Translates to “a healthy mind in a healthy body.” + +* Japanese +** <2026-04-01 Wed 16:04>: Nana korobi ya oki 七転び⼋起き +Fall seven times, rise eight. +** <2026-04-01 Wed 16:41>: ichi-go ichi-e +“This moment exists only now and won’t come again.” diff --git a/Misc/20260307233451-recipes_cookbook.org b/Misc/20260307233451-recipes_cookbook.org old mode 100644 new mode 100755 index 8c3b427..2ada55d --- a/Misc/20260307233451-recipes_cookbook.org +++ b/Misc/20260307233451-recipes_cookbook.org @@ -6,11 +6,36 @@ #+AUTHOR: Auto-generated #+filetags: :recipes:cooking:org:index: #+STARTUP: content -#+PROPERTY: GENERATED_AT 2026-03-27T00:00:02.222838 +#+PROPERTY: GENERATED_AT 2026-04-02T00:00:02.498319 # How to add notes: under any recipe heading, add :COOKED: to record when you made it, and :TIPS: your tip text to add notes. # Multiple :COOKED: lines are supported. These are preserved across regenerations. +* Dinner + +** Crispy Honey Chili Chicken :Chicken_and_Rice:Dinner:Family: +:PROPERTIES: +:RECIPE_ID: 42649 +:CATEGORY: Dinner +:KEYWORDS: Chicken and Rice,Dinner,Family +:CREATED: 2026-03-29T18:47:20+0000 +:MODIFIED: 2026-03-29T18:48:29+0000 +:URL: https://nextcloud.zainezq.com/apps/cookbook/webapp/recipes/42649 +:COOKED: <2026-03-29 Sun> +:TIPS: Use the lal mirch flakes (chilly flakes), and only use 2 spoons of those (tsp) - perfect spice level +:END: +#+ATTR_HTML: :class recipe-meta +| | | +|---|---| +| *Category* | Dinner | +| *Keywords* | Chicken and Rice,Dinner,Family | +| *Created* | 2026-03-29 | +| *Modified* | 2026-03-29 | +| *Cooked* | <2026-03-29 Sun> | +| *Link* | [[https://nextcloud.zainezq.com/apps/cookbook/webapp/recipes/42649][Open in Nextcloud]] | + +*Tips:* Use the lal mirch flakes (chilly flakes), and only use 2 spoons of those (tsp) - perfect spice level + * Lunch ** Chicken Rice Meal Prep :Chicken:Chicken_and_Rice:Lunch:Rice: diff --git a/Notes/20241210001150-aoc_notes.org b/Notes/20241210001150-aoc_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20241210001206-leetcode_notes.org b/Notes/20241210001206-leetcode_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20241212013207-haskell_notes.org b/Notes/20241212013207-haskell_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20241212013902-lazy_evaluation.org b/Notes/20241212013902-lazy_evaluation.org old mode 100644 new mode 100755 diff --git a/Notes/20241213005125-c_notes.org b/Notes/20241213005125-c_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20241213005156-socket_programming_in_c.org b/Notes/20241213005156-socket_programming_in_c.org old mode 100644 new mode 100755 diff --git a/Notes/20241217234535-web_port_notes.org b/Notes/20241217234535-web_port_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20241217234944-wp_emacs_config_blorg.org b/Notes/20241217234944-wp_emacs_config_blorg.org old mode 100644 new mode 100755 diff --git a/Notes/20241220234456-github_notes.org b/Notes/20241220234456-github_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20250111213016-wp_prefront_cortex_blog.org b/Notes/20250111213016-wp_prefront_cortex_blog.org old mode 100644 new mode 100755 diff --git a/Notes/20250214155617-wp_new_emacs_config_blorg.org b/Notes/20250214155617-wp_new_emacs_config_blorg.org old mode 100644 new mode 100755 diff --git a/Notes/20250226184629-wp_urge_surfing_blorg.org b/Notes/20250226184629-wp_urge_surfing_blorg.org old mode 100644 new mode 100755 diff --git a/Notes/20250314223811-wp_growth_mindset.org b/Notes/20250314223811-wp_growth_mindset.org old mode 100644 new mode 100755 diff --git a/Notes/20250314230952-wp_emotional_intelligence.org b/Notes/20250314230952-wp_emotional_intelligence.org old mode 100644 new mode 100755 diff --git a/Notes/20250324041724-wp_week_12_reflections.org b/Notes/20250324041724-wp_week_12_reflections.org old mode 100644 new mode 100755 diff --git a/Notes/20250402185735-technical_java_notes.org b/Notes/20250402185735-technical_java_notes.org old mode 100644 new mode 100755 diff --git a/Notes/20250412234351-wp_sadness.org b/Notes/20250412234351-wp_sadness.org old mode 100644 new mode 100755 diff --git a/Notes/20250723171109-maven_pom_file.org b/Notes/20250723171109-maven_pom_file.org old mode 100644 new mode 100755 diff --git a/Notes/20250727121051-networking_moc.org b/Notes/20250727121051-networking_moc.org old mode 100644 new mode 100755 diff --git a/Notes/20250804212215-how_to_solve_leetcode.org b/Notes/20250804212215-how_to_solve_leetcode.org old mode 100644 new mode 100755 diff --git a/Notes/20250804212606-leetcode_arrays.org b/Notes/20250804212606-leetcode_arrays.org old mode 100644 new mode 100755 diff --git a/Notes/20250804214537-python_set.org b/Notes/20250804214537-python_set.org old mode 100644 new mode 100755 diff --git a/Notes/20250805141906-python_dictionary.org b/Notes/20250805141906-python_dictionary.org old mode 100644 new mode 100755 diff --git a/Notes/20250805143427-python_sorted_function.org b/Notes/20250805143427-python_sorted_function.org old mode 100644 new mode 100755 diff --git a/Notes/20250805143741-python_lambda.org b/Notes/20250805143741-python_lambda.org old mode 100644 new mode 100755 diff --git a/Uni/20241210012703-fyp.org b/Uni/20241210012703-fyp.org old mode 100644 new mode 100755 diff --git a/Uni/20241210152650-uni_moc.org b/Uni/20241210152650-uni_moc.org old mode 100644 new mode 100755 diff --git a/Uni/20241210152713-tpis.org b/Uni/20241210152713-tpis.org old mode 100644 new mode 100755 diff --git a/Uni/20241210232054-uml_fyp.org b/Uni/20241210232054-uml_fyp.org old mode 100644 new mode 100755 diff --git a/Uni/20250120110833-afp.org b/Uni/20250120110833-afp.org old mode 100644 new mode 100755 diff --git a/Uni/20250120111047-afp_week1.org b/Uni/20250120111047-afp_week1.org old mode 100644 new mode 100755 diff --git a/Uni/20250120113936-afp_lab_1.org b/Uni/20250120113936-afp_lab_1.org old mode 100644 new mode 100755 diff --git a/Uni/20250121110241-afp_lec_1.org b/Uni/20250121110241-afp_lec_1.org old mode 100644 new mode 100755 diff --git a/Uni/20250128110828-afp_week2.org b/Uni/20250128110828-afp_week2.org old mode 100644 new mode 100755 diff --git a/Uni/20250128111008-afp_lec_2.org b/Uni/20250128111008-afp_lec_2.org old mode 100644 new mode 100755 diff --git a/Uni/20250218110239-afp_week5.org b/Uni/20250218110239-afp_week5.org old mode 100644 new mode 100755 diff --git a/Uni/20250218110346-afp_lec_5.org b/Uni/20250218110346-afp_lec_5.org old mode 100644 new mode 100755 diff --git a/Uni/20250329114733-ise.org b/Uni/20250329114733-ise.org old mode 100644 new mode 100755 diff --git a/Uni/20250329114848-ise_week_1.org b/Uni/20250329114848-ise_week_1.org old mode 100644 new mode 100755 diff --git a/Uni/20250329121843-ise_week_2.org b/Uni/20250329121843-ise_week_2.org old mode 100644 new mode 100755 diff --git a/Uni/20250329142725-ise_week_3.org b/Uni/20250329142725-ise_week_3.org old mode 100644 new mode 100755 diff --git a/Uni/20250329200158-ise_week_4.org b/Uni/20250329200158-ise_week_4.org old mode 100644 new mode 100755 diff --git a/Uni/20250331201944-ise_week_5.org b/Uni/20250331201944-ise_week_5.org old mode 100644 new mode 100755 diff --git a/Uni/20250331202447-ise_week_7.org b/Uni/20250331202447-ise_week_7.org old mode 100644 new mode 100755 diff --git a/Uni/20250403120140-fyp_report_planning.org b/Uni/20250403120140-fyp_report_planning.org old mode 100644 new mode 100755 diff --git a/Uni/20250723184233-advanced_networking.org b/Uni/20250723184233-advanced_networking.org old mode 100644 new mode 100755 diff --git a/all-files.json b/all-files.json old mode 100644 new mode 100755 index e8acc7c..9b317b3 --- a/all-files.json +++ b/all-files.json @@ -88,7 +88,7 @@ { "id": "e7f082e4-1b9f-4ebe-96d6-94d92e80a07e", "title": "API Intro Notes", - "url": "/20260327110908-api_intro_notes.html" + "url": "/Career Concepts/20260327110908-api_intro_notes.html" }, { "id": "56fabaf6-e8aa-45d0-a1c1-89f247f0a93f", @@ -98,7 +98,7 @@ { "id": "b2fd7038-42a8-4cbe-882b-92fbe2c12a11", "title": "ASP.NET Core Web API Fundamental Notes", - "url": "/20260327114708-asp_net_core_6_apis_notes.html" + "url": "/Career Concepts/20260327114708-asp_net_core_6_apis_notes.html" } ], "B": [ @@ -114,7 +114,7 @@ }, { "id": "238ff7d8-db22-41e2-8aad-fc3c778e6248", - "title": "book-recs", + "title": "Book Recommendations", "url": "/Books/20250727174903-book_recs.html" }, { @@ -193,6 +193,11 @@ } ], "E": [ + { + "id": "10b1f18e-b221-4ab8-bce4-b6f20ad417db", + "title": "Emacs Calendar/Agenda", + "url": "/20260401100839-emacs_calendar.html" + }, { "id": "7e79e4c5-383d-450f-882c-33d4f87ba1b5", "title": "Emacs ELISP", @@ -223,6 +228,11 @@ "title": "Emacs MOC", "url": "/Emacs/20241210004247-emacs_moc.html" }, + { + "id": "168b6b10-d670-4f9d-89cf-aeb59aa644a1", + "title": "Emacs Org Noter", + "url": "/20260401100130-emacs_org_noter.html" + }, { "id": "7d2e867e-f091-4362-a583-453f732207fe", "title": "Emacs ORG Publish", @@ -281,6 +291,11 @@ "title": "i3-wm", "url": "/Linux/20250213124335-i3_wm.html" }, + { + "id": "fc07cbca-cf1a-4698-912b-de74001f0b5c", + "title": "Ikigai Book Notes", + "url": "/Books/20260331113318-ikigai_notes.html" + }, { "id": "DE792A73-FD00-4048-82D8-AB6E84E869F2", "title": "Index", @@ -544,6 +559,11 @@ "title": "socket_programming_in_c", "url": "/Notes/20241213005156-socket_programming_in_c.html" }, + { + "id": "67ad330b-cc11-4e8e-b054-12b9da45ea60", + "title": "Software Development Methodologies", + "url": "/Career Concepts/20260328215014-software_dev_methodologies.html" + }, { "id": "6820973F-613E-441A-BC1D-8FE5CD9BD6F7", "title": "Solid Principles", @@ -551,7 +571,7 @@ }, { "id": "F3875F0F-5C9E-4BB1-A79C-6000B9558115", - "title": "solid_principles_examples", + "title": "Solid Principles Examples", "url": "/Career Concepts/20260101012731-solid_principles_examples.html" }, { diff --git a/all-files.org b/all-files.org old mode 100644 new mode 100755 diff --git a/assets/2_to_1.svg b/assets/2_to_1.svg old mode 100644 new mode 100755 diff --git a/assets/Big-O-Notation-3130482830.png b/assets/Big-O-Notation-3130482830.png old mode 100644 new mode 100755 diff --git a/assets/Screenshot_20251227_153037.png b/assets/Screenshot_20251227_153037.png new file mode 100755 index 0000000..6c8d9d7 Binary files /dev/null and b/assets/Screenshot_20251227_153037.png differ diff --git a/assets/_books/2026-03-31-ikigai-ode.png b/assets/_books/2026-03-31-ikigai-ode.png new file mode 100755 index 0000000..f2dad5d Binary files /dev/null and b/assets/_books/2026-03-31-ikigai-ode.png differ diff --git a/assets/_books/2026-03-31-ikigai-sitting-will-age-you.png b/assets/_books/2026-03-31-ikigai-sitting-will-age-you.png new file mode 100755 index 0000000..13d4525 Binary files /dev/null and b/assets/_books/2026-03-31-ikigai-sitting-will-age-you.png differ diff --git a/assets/_books/2026-03-31-ikigai-table.png b/assets/_books/2026-03-31-ikigai-table.png new file mode 100755 index 0000000..3c65fde Binary files /dev/null and b/assets/_books/2026-03-31-ikigai-table.png differ diff --git a/assets/_books/2026-04-01-ikigai-15-list.png b/assets/_books/2026-04-01-ikigai-15-list.png new file mode 100755 index 0000000..b17e5c6 Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-15-list.png differ diff --git a/assets/_books/2026-04-01-ikigai-never-stop-learning.png b/assets/_books/2026-04-01-ikigai-never-stop-learning.png new file mode 100755 index 0000000..e2aca06 Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-never-stop-learning.png differ diff --git a/assets/_books/2026-04-01-ikigai-poem-1.png b/assets/_books/2026-04-01-ikigai-poem-1.png new file mode 100755 index 0000000..3bd10ba Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-poem-1.png differ diff --git a/assets/_books/2026-04-01-ikigai-radio-taiso-1.png b/assets/_books/2026-04-01-ikigai-radio-taiso-1.png new file mode 100755 index 0000000..6db7b9a Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-radio-taiso-1.png differ diff --git a/assets/_books/2026-04-01-ikigai-radio-taiso-2.png b/assets/_books/2026-04-01-ikigai-radio-taiso-2.png new file mode 100755 index 0000000..5e3d0b9 Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-radio-taiso-2.png differ diff --git a/assets/_books/2026-04-01-ikigai-studies-multitasking.png b/assets/_books/2026-04-01-ikigai-studies-multitasking.png new file mode 100755 index 0000000..ce867bc Binary files /dev/null and b/assets/_books/2026-04-01-ikigai-studies-multitasking.png differ diff --git a/assets/career-notes/api-layers.png b/assets/career-notes/api-layers.png old mode 100644 new mode 100755 diff --git a/assets/career/APIOps.png b/assets/career/APIOps.png old mode 100644 new mode 100755 diff --git a/assets/career/Screenshot 2026-01-14 154800.png b/assets/career/Screenshot 2026-01-14 154800.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/adapter-pattern-2.png b/assets/design-patterns/adapter-pattern-2.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/adapter-pattern.png b/assets/design-patterns/adapter-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/command-pattern.png b/assets/design-patterns/command-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/composite-pattern.png b/assets/design-patterns/composite-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/decorator-pattern.png b/assets/design-patterns/decorator-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/decorator-problem.png b/assets/design-patterns/decorator-problem.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/facade-pattern.png b/assets/design-patterns/facade-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/factory-pattern.png b/assets/design-patterns/factory-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/iterator-pattern.png b/assets/design-patterns/iterator-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/observer-pattern.png b/assets/design-patterns/observer-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/proxy-pattern.png b/assets/design-patterns/proxy-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/singleton-pattern.png b/assets/design-patterns/singleton-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/state-pattern.png b/assets/design-patterns/state-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/structure-pattern.png b/assets/design-patterns/structure-pattern.png old mode 100644 new mode 100755 diff --git a/assets/design-patterns/template-method-pattern.png b/assets/design-patterns/template-method-pattern.png old mode 100644 new mode 100755 diff --git a/assets/git-cheat-sheet-1.png b/assets/git-cheat-sheet-1.png old mode 100644 new mode 100755 diff --git a/assets/git-cheat-sheet-2.png b/assets/git-cheat-sheet-2.png old mode 100644 new mode 100755 diff --git a/assets/gr.png b/assets/gr.png old mode 100644 new mode 100755 diff --git a/assets/icons/icons8-z-key-64.png b/assets/icons/icons8-z-key-64.png old mode 100644 new mode 100755 diff --git a/assets/org-roam-ui-ss-11-01-2026 b/assets/org-roam-ui-ss-11-01-2026 old mode 100644 new mode 100755 diff --git a/assets/scripts/bigger-picture.min.js b/assets/scripts/bigger-picture.min.js old mode 100644 new mode 100755 diff --git a/assets/scripts/cookbook.js b/assets/scripts/cookbook.js old mode 100644 new mode 100755 diff --git a/assets/scripts/gallery-init.js b/assets/scripts/gallery-init.js old mode 100644 new mode 100755 diff --git a/assets/scripts/mermaid.esm.min.mjs b/assets/scripts/mermaid.esm.min.mjs old mode 100644 new mode 100755 diff --git a/assets/scripts/mermaid.min.js b/assets/scripts/mermaid.min.js old mode 100644 new mode 100755 diff --git a/assets/scripts/script.js b/assets/scripts/script.js old mode 100644 new mode 100755 diff --git a/assets/scripts/search.js b/assets/scripts/search.js old mode 100644 new mode 100755 diff --git a/assets/scripts/sidebar.js b/assets/scripts/sidebar.js old mode 100644 new mode 100755 diff --git a/assets/scripts/svg-pan-zoom.min.js b/assets/scripts/svg-pan-zoom.min.js old mode 100644 new mode 100755 diff --git a/assets/styles/bigger-picture.min.css b/assets/styles/bigger-picture.min.css old mode 100644 new mode 100755 diff --git a/assets/styles/cookbook.css b/assets/styles/cookbook.css old mode 100644 new mode 100755 diff --git a/assets/styles/media.css b/assets/styles/media.css old mode 100644 new mode 100755 index d3a116f..942f702 --- a/assets/styles/media.css +++ b/assets/styles/media.css @@ -1,6 +1,5 @@ /* ========================================================= MEDIA.CSS — responsive overrides for the sidebar+tab layout - This file replaces the old float-based media queries. Load it AFTER style.css. ========================================================= */ @@ -21,13 +20,11 @@ CUSTOM SCROLLBARS — themed throughout ========================================================= */ -/* Firefox */ * { scrollbar-width: thin; scrollbar-color: var(--border-mid) transparent; } -/* Webkit (Chrome, Safari, Edge) */ ::-webkit-scrollbar { width: 4px; height: 4px; @@ -47,7 +44,7 @@ } /* ========================================================= - 1200px — content column is narrow enough to collapse sidenotes + 1200px — narrow enough to collapse sidenotes ========================================================= */ @media (max-width: 1200px) { @@ -87,7 +84,7 @@ } /* ========================================================= - 900px — auto-hide sidebar (collapses to 0 width) + 900px — auto-hide sidebar ========================================================= */ @media (max-width: 900px) { @@ -108,7 +105,6 @@ @media (max-width: 768px) { - /* Allow body to scroll normally */ html, body { overflow: auto; height: auto; @@ -194,7 +190,6 @@ box-shadow: 4px 0 32px rgba(0, 0, 0, 0.5); } - /* Dimmed backdrop — clicking it closes the sidebar */ #sidebar-backdrop { display: none; position: fixed; @@ -283,9 +278,47 @@ } /* ---- Code blocks ---- */ - pre.src, - .org-src-container > pre { - font-size: 0.78rem; + /* Shrink font, keep horizontal scroll — never wrap or overflow page */ + .org-src-container { + /* Ensure it never escapes the viewport */ + max-width: calc(100vw - 2rem); + } + + .org-src-container > pre, + pre.src { + font-size: 0.74rem; + padding: 1.4rem 0.7rem 0.75rem; + /* Enforce horizontal scroll; absolutely no page-overflow */ + overflow-x: auto; + -webkit-overflow-scrolling: touch; + white-space: pre; + } + + /* ---- Tables ---- */ + /* Wrapper-based scroll */ + .table-wrapper { + margin: 0.75rem 0; + border-radius: 5px; + /* Constrain to viewport */ + max-width: calc(100vw - 2rem); + } + + /* Bare tables (no wrapper) also scroll on mobile */ + #content table { + font-size: 0.8rem; + max-width: calc(100vw - 2rem); + } + + #content table th, + .table-wrapper table th { + padding: 0.45rem 0.6rem; + font-size: 0.62rem; + } + + #content table td, + .table-wrapper table td { + padding: 0.45rem 0.6rem; + font-size: 0.8rem; } /* ---- Tabs ---- */ @@ -314,4 +347,19 @@ min-width: 60px; font-size: 0.65rem; } + + .org-src-container { + max-width: calc(100vw - 1.5rem); + } + + .org-src-container > pre, + pre.src { + font-size: 0.7rem; + padding: 1.3rem 0.6rem 0.6rem; + } + + #content table, + .table-wrapper { + max-width: calc(100vw - 1.5rem); + } } diff --git a/assets/styles/org.css b/assets/styles/org.css old mode 100644 new mode 100755 diff --git a/assets/styles/style.css b/assets/styles/style.css old mode 100644 new mode 100755 index afc3e74..fd46776 --- a/assets/styles/style.css +++ b/assets/styles/style.css @@ -16,7 +16,7 @@ --content-max: 680px; --content-pad: 2.5rem; - /* Dark palette — warm aged manuscript */ + /* Dark palette warm aged manuscript */ --bg: #18160f; --page-bg: #111009; --pane-bg: #1c1a12; @@ -265,7 +265,7 @@ body { display: flex; flex-direction: column; } overflow: hidden; transition: width var(--dur-mid) var(--ease-out); z-index: 100; - position: relative; /* needed for panel absolute positioning on mobile */ + position: relative; } #sidebar.expanded { @@ -293,7 +293,6 @@ body { display: flex; flex-direction: column; } .rail-btn:hover { color: var(--fg); background: var(--accent-sub); } .rail-btn.active { color: var(--accent); background: var(--accent-glow); } -/* Tooltip for rail buttons */ .rail-btn[title]:not(:disabled):hover::after { content: attr(title); position: absolute; @@ -312,7 +311,6 @@ body { display: flex; flex-direction: column; } z-index: 500; } -/* Expanded sidebar panel */ .sidebar-panel { display: none; width: 100%; flex-direction: column; } #sidebar.expanded .sidebar-panel { display: flex; } @@ -497,7 +495,6 @@ body { display: flex; flex-direction: column; } position: relative; scrollbar-width: thin; scrollbar-color: var(--border) transparent; - /* Subtle ruled lines */ background-image: repeating-linear-gradient( 180deg, transparent, transparent 27px, @@ -509,7 +506,6 @@ body { display: flex; flex-direction: column; } #content-area::-webkit-scrollbar { width: 5px; } #content-area::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; } -/* Left margin rule */ #content-area::before { content: ''; position: absolute; @@ -519,7 +515,6 @@ body { display: flex; flex-direction: column; } z-index: 0; } -/* Tab panes */ .tab-content { display: none; min-height: 100%; position: relative; z-index: 1; } .tab-content.active { display: block; } @@ -528,7 +523,6 @@ body { display: flex; flex-direction: column; } ========================================================= */ #content, .tab-content-inner { - max-width: var(--content-max); margin: 0 auto; padding: var(--r6) var(--content-pad) calc(var(--r8) * 2.5); } @@ -621,16 +615,15 @@ a:hover { background: var(--accent-glow); } -/* Wikilink brackets — scoped to note content only, not panels/sidebar */ #content a[href$=".html"]::before { - content: '\5B\5B'; /* [[ */ + content: '\5B\5B'; font-family: var(--font-mono); font-size: 0.72em; opacity: 0.4; letter-spacing: -0.05em; } #content a[href$=".html"]::after { - content: '\5D\5D'; /* ]] */ + content: '\5D\5D'; font-family: var(--font-mono); font-size: 0.72em; opacity: 0.4; @@ -937,60 +930,223 @@ blockquote p { margin: 0; } .epigraph blockquote cite { font-style: italic; color: var(--accent); } /* ========================================================= - CODE + CODE — inline ========================================================= */ :not(pre) > code { padding: 0.15em 0.45em; - font-family: var(--font-mono); font-size: 0.8em; - background: var(--code-bg); color: var(--heading-2); - border: 1px solid var(--border-2); border-radius: 4px; + font-family: var(--font-mono); + font-size: 0.82em; + background: var(--code-bg); + color: var(--heading-2); + border: 1px solid var(--border-2); + border-radius: 4px; } -pre { background: var(--code-bg); } + +/* ========================================================= + CODE BLOCKS — fixed: no overflow, readable label, mobile-safe + ========================================================= */ .org-src-container { - border: 1px solid var(--border); border-radius: 7px; - font-family: var(--font-mono); font-size: 0.82rem; - margin: var(--r5) auto; overflow: hidden; position: relative; -} -.org-src-container > pre { overflow: auto; margin: 0; padding: var(--r5) var(--r4); } -.org-src-container > pre:before { - display: block; position: sticky; top: 0; - background: color-mix(in oklab, var(--code-bg) 80%, var(--border) 20%); - color: var(--fg-faint); padding: 0.35rem var(--r4); - font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; - border-bottom: 1px solid var(--border); -} -.org-src-container > pre.src-bash:before { content: "bash"; } -.org-src-container > pre.src-sh:before { content: "sh"; } -.org-src-container > pre.src-python:before { content: "python"; } -.org-src-container > pre.src-emacs-lisp:before { content: "emacs lisp"; } -.org-src-container > pre.src-js:before, -.org-src-container > pre.src-javascript:before { content: "javascript"; } -.org-src-container > pre.src-typescript:before { content: "typescript"; } -.org-src-container > pre.src-html:before { content: "html"; } -.org-src-container > pre.src-css:before { content: "css"; } -.org-src-container > pre.src-rust:before { content: "rust"; } -.org-src-container > pre.src-R:before { content: "R"; } - -pre.src { - padding: var(--r5) var(--r4) var(--r4); - font-family: var(--font-mono); font-size: 0.875rem; - line-height: 1.55; overflow-x: auto; white-space: pre-wrap; + position: relative; + margin: var(--r5) 0; + border: 1px solid var(--border-2); + border-radius: 7px; background: var(--code-bg); + overflow: hidden; + /* Prevent the block itself from stretching the page */ + max-width: 100%; + min-width: 0; } +/* The language label row */ +.org-src-container > pre::before { + /* We move the label out of the flow entirely — it sits + as a tiny dim watermark in the top-right corner */ + content: attr(data-lang); + position: absolute; + top: 0.45rem; + right: 0.6rem; + font-size: 0.62rem; + font-family: var(--font-mono); + letter-spacing: 0.08em; + color: var(--fg-ghost); + pointer-events: none; + z-index: 2; + line-height: 1; + /* Override the old full-width bar styles */ + display: block; + background: transparent; + border: none; + padding: 0; + text-transform: lowercase; +} + +/* Per-language label text via data-lang on the
.
+   Emacs Org sets class="src src-python" etc, so we also
+   handle the legacy class-based labels as a fallback.    */
+.org-src-container > pre.src-bash::before        { content: "bash"; }
+.org-src-container > pre.src-sh::before          { content: "sh"; }
+.org-src-container > pre.src-python::before      { content: "python"; }
+.org-src-container > pre.src-emacs-lisp::before  { content: "elisp"; }
+.org-src-container > pre.src-js::before,
+.org-src-container > pre.src-javascript::before  { content: "js"; }
+.org-src-container > pre.src-typescript::before  { content: "ts"; }
+.org-src-container > pre.src-html::before        { content: "html"; }
+.org-src-container > pre.src-css::before         { content: "css"; }
+.org-src-container > pre.src-rust::before        { content: "rust"; }
+.org-src-container > pre.src-R::before           { content: "R"; }
+
+/* The 
 itself — scrolls horizontally, never wraps */
+.org-src-container > pre {
+  margin: 0;
+  padding: 0.9rem 0.85rem;
+  font-family: var(--font-mono);
+  font-size: 0.82rem;
+  line-height: 1.6;
+  color: var(--fg);
+  background: transparent;
+  /* Horizontal scroll instead of page-breaking overflow */
+  overflow-x: auto;
+  overflow-y: visible;
+  -webkit-overflow-scrolling: touch;
+  /* Never wrap — let it scroll */
+  white-space: pre;
+  /* Constrain to parent so it can't break layout */
+  max-width: 100%;
+  min-width: 0;
+  /* Make room for the language watermark in top-right */
+  padding-top: 1.6rem;
+}
+
+/* Standalone pre.src (not wrapped in .org-src-container) */
+pre.src {
+  position: relative;
+  margin: var(--r5) 0;
+  padding: 0.9rem 0.85rem;
+  font-family: var(--font-mono);
+  font-size: 0.82rem;
+  line-height: 1.6;
+  color: var(--fg);
+  background: var(--code-bg);
+  border: 1px solid var(--border-2);
+  border-radius: 7px;
+  overflow-x: auto;
+  overflow-y: visible;
+  -webkit-overflow-scrolling: touch;
+  white-space: pre;
+  max-width: 100%;
+  min-width: 0;
+}
+
+/* Copy button */
 .copy-btn {
-  position: absolute; top: 0.5rem; right: 0.5rem;
-  background: var(--surface); color: var(--fg-faint);
-  border: 1px solid var(--border-2); border-radius: 4px;
-  padding: 0.2em 0.6em; font-size: 0.68rem;
-  font-family: var(--font-mono); letter-spacing: 0.04em;
-  cursor: pointer; z-index: 10;
+  position: absolute;
+  top: 0.45rem;
+  right: 0.5rem;
+  background: var(--surface);
+  color: var(--fg-faint);
+  border: 1px solid var(--border-2);
+  border-radius: 4px;
+  padding: 0.2em 0.55em;
+  font-size: 0.65rem;
+  font-family: var(--font-mono);
+  letter-spacing: 0.04em;
+  cursor: pointer;
+  z-index: 10;
   transition: all var(--dur-fast);
+  line-height: 1.4;
 }
 .copy-btn:hover {
-  color: var(--fg); border-color: var(--accent-dim);
+  color: var(--fg);
+  border-color: var(--accent-dim);
+  background: var(--accent-glow);
+}
+
+/* =========================================================
+   TABLES — mobile-safe with horizontal scroll
+   ========================================================= */
+
+/* Wrap every table in a .table-wrapper div (or do it in JS).
+   If you can't add wrapper divs, the table rules below still
+   improve things; just overflow-x won't be contained.       */
+.table-wrapper {
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch;
+  border: 1px solid var(--border);
+  border-radius: 7px;
+  margin: var(--r5) 0;
+  max-width: 100%;
+}
+
+/* When Org-mode emits a bare  with no wrapper,
+   contain it the same way at the table level itself.    */
+#content table {
+  border-collapse: collapse;
+  width: 100%;
+  /* Allow horizontal scroll; never let columns shrink to nothing */
+  min-width: 0;
+  font-size: 0.85rem;
+  font-family: var(--font-body);
+  display: block;          /* block so overflow-x works on the element */
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch;
+  /* Restore normal table layout inside the block box */
+  /* (display:block on 
makes it scroll without a wrapper) */ +} + +/* But if it IS inside a .table-wrapper, use normal table display */ +.table-wrapper table { + display: table; + width: 100%; + border-collapse: collapse; +} + +#content table thead, +.table-wrapper table thead { + position: sticky; + top: 0; + z-index: 1; +} + +#content table th, +.table-wrapper table th { + text-align: left; + padding: 0.55rem 0.85rem; + font-size: 0.68rem; + font-family: var(--font-mono); + font-weight: 500; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--fg-faint); + background: color-mix(in oklab, var(--surface) 80%, transparent); + border-bottom: 1px solid var(--border-2); + white-space: nowrap; +} + +#content table td, +.table-wrapper table td { + padding: 0.5rem 0.85rem; + color: var(--fg-dim); + border-bottom: 1px solid var(--border); + vertical-align: top; + /* Allow long words to break so cells don't balloon */ + word-break: break-word; + overflow-wrap: break-word; +} + +#content table tr:last-child td, +.table-wrapper table tr:last-child td { + border-bottom: none; +} + +#content table tbody tr, +.table-wrapper table tbody tr { + transition: background var(--dur-fast); +} + +#content table tbody tr:hover, +.table-wrapper table tbody tr:hover { background: var(--accent-glow); } @@ -1008,12 +1164,11 @@ pre.src { #text-table-of-contents a.is-active, #text-table-of-contents a[aria-current] { color: var(--accent); } -/* Prevent wikilink brackets on TOC links */ #text-table-of-contents a::before, #text-table-of-contents a::after { content: none !important; } /* ========================================================= - BACKLINKS SECTION (inline at bottom of note) + BACKLINKS SECTION ========================================================= */ .backlinks-section { @@ -1041,7 +1196,6 @@ pre.src { transition: color var(--dur-fast), border-color var(--dur-fast); } .backlinks-list li a:hover { color: var(--link-hover); border-bottom-color: var(--fg-faint); } -/* No wikilink brackets in backlinks section */ .backlinks-list li a::before, .backlinks-list li a::after { content: none !important; } @@ -1129,6 +1283,31 @@ pre.src { #breadcrumb-trail { display: none; } #note-toolbar { flex-wrap: wrap; height: auto; } + + /* Code blocks on mobile */ + .org-src-container > pre, + pre.src { + font-size: 0.75rem; + padding: 1.4rem 0.7rem 0.7rem; + } + + /* Tables on mobile — already scroll via display:block, + but tighten cell padding */ + #content table th, + .table-wrapper table th { + padding: 0.45rem 0.6rem; + font-size: 0.65rem; + } + #content table td, + .table-wrapper table td { + padding: 0.45rem 0.6rem; + font-size: 0.8rem; + } + + .table-wrapper { + margin: var(--r4) 0; + border-radius: 5px; + } } /* ========================================================= @@ -1139,7 +1318,6 @@ pre.src { .recipe-meta td:first-child { font-weight: 600; white-space: nowrap; } .recipe-meta { font-size: 0.9em; opacity: 0.85; } -/* Smooth fade in for note content */ @keyframes note-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } @@ -1148,7 +1326,6 @@ pre.src { animation: note-in 200ms var(--ease-out) forwards; } -/* Reading progress bar */ #reading-progress { position: fixed; top: var(--header-h); @@ -1161,7 +1338,6 @@ pre.src { pointer-events: none; } -/* Loading state */ .note-loading { display: flex; align-items: center; diff --git a/assets/swappy-20250805-152411.png b/assets/swappy-20250805-152411.png old mode 100644 new mode 100755 diff --git a/convert-mov.sh b/convert-mov.sh old mode 100644 new mode 100755 diff --git a/generate_sidebar_tree.py b/generate_sidebar_tree.py old mode 100644 new mode 100755 diff --git a/index.org b/index.org old mode 100644 new mode 100755 diff --git a/lisp/build.el b/lisp/build.el old mode 100644 new mode 100755 diff --git a/lisp/macros.el b/lisp/macros.el old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_01296884686849f0dd6a6f5f6e642ce4594a1438.png b/ltximg/org-ltximg_01296884686849f0dd6a6f5f6e642ce4594a1438.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_066a4488b21e9c9fcc08a16156947f5bab6d2771.png b/ltximg/org-ltximg_066a4488b21e9c9fcc08a16156947f5bab6d2771.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_0c35aa584277b44dec02ac13aacd1cd7acc851be.png b/ltximg/org-ltximg_0c35aa584277b44dec02ac13aacd1cd7acc851be.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_11860079d8dfebcc942c3e6b65b495a445d9f336.png b/ltximg/org-ltximg_11860079d8dfebcc942c3e6b65b495a445d9f336.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_1cbbff043d0cc4a14caacd74ec795c0a1ec11f2e.png b/ltximg/org-ltximg_1cbbff043d0cc4a14caacd74ec795c0a1ec11f2e.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_1d6de057eb18f33d9ce2df46505051a77488698f.png b/ltximg/org-ltximg_1d6de057eb18f33d9ce2df46505051a77488698f.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_205d81a43ad57fe5da4c786cb565a1a6ab8bb626.png b/ltximg/org-ltximg_205d81a43ad57fe5da4c786cb565a1a6ab8bb626.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_265a7c14da0eed5a277bb96aa1c253b307e54b23.png b/ltximg/org-ltximg_265a7c14da0eed5a277bb96aa1c253b307e54b23.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_26f0956210f41ec16057521ea641aa300fc99f1e.png b/ltximg/org-ltximg_26f0956210f41ec16057521ea641aa300fc99f1e.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_2d72905fd56b9a16fa7b45eb4b2b2e373d1e67d0.png b/ltximg/org-ltximg_2d72905fd56b9a16fa7b45eb4b2b2e373d1e67d0.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_32866fa9c245766194eeeb359244fd901090e1e2.png b/ltximg/org-ltximg_32866fa9c245766194eeeb359244fd901090e1e2.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_3a1f8c91afecdbe530c1d7260ada3f1c5d3b744f.png b/ltximg/org-ltximg_3a1f8c91afecdbe530c1d7260ada3f1c5d3b744f.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_3e3ac398ecab748a277726f7718afae46fe8b82f.png b/ltximg/org-ltximg_3e3ac398ecab748a277726f7718afae46fe8b82f.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_40fa37ebf75968e3cae8fa02423eeef19f520817.png b/ltximg/org-ltximg_40fa37ebf75968e3cae8fa02423eeef19f520817.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_44f5f8555490fc64077127e29eef0dff2ac4422d.png b/ltximg/org-ltximg_44f5f8555490fc64077127e29eef0dff2ac4422d.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_4741651405214cbe515cff3fa73813164cedaf2d.png b/ltximg/org-ltximg_4741651405214cbe515cff3fa73813164cedaf2d.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_55130395ce5e5040f6604cb7c3cc1f55c8fc3cfa.png b/ltximg/org-ltximg_55130395ce5e5040f6604cb7c3cc1f55c8fc3cfa.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_6026e5c1fa1d520353950d71af186956514e8701.png b/ltximg/org-ltximg_6026e5c1fa1d520353950d71af186956514e8701.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_635f0485ae2d07be9744e3e3723ecaf34f800012.png b/ltximg/org-ltximg_635f0485ae2d07be9744e3e3723ecaf34f800012.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_63dbc01f6593fc8d8a35c50f22f79f29a1dcf898.png b/ltximg/org-ltximg_63dbc01f6593fc8d8a35c50f22f79f29a1dcf898.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_6c899afd78a059b0ae4bef408a695041cedb5ddd.png b/ltximg/org-ltximg_6c899afd78a059b0ae4bef408a695041cedb5ddd.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_7425a163ba6edf4c7408c7f718f301a7150e4b11.png b/ltximg/org-ltximg_7425a163ba6edf4c7408c7f718f301a7150e4b11.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_777dd76637f98f808bbe2f69b2afd12e4c536ffb.png b/ltximg/org-ltximg_777dd76637f98f808bbe2f69b2afd12e4c536ffb.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_7ca4db7f61fd148ce02f3fd143c05b54dbf2ca7f.png b/ltximg/org-ltximg_7ca4db7f61fd148ce02f3fd143c05b54dbf2ca7f.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_81a6befc0e7d8c06857316dc32fb3d6545f3e479.png b/ltximg/org-ltximg_81a6befc0e7d8c06857316dc32fb3d6545f3e479.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_8aec0d26a12708fe99cdd5876863ff43a1c627d7.png b/ltximg/org-ltximg_8aec0d26a12708fe99cdd5876863ff43a1c627d7.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_8c4e482436a1dd4e34355f6ae5193641b99c4e3d.png b/ltximg/org-ltximg_8c4e482436a1dd4e34355f6ae5193641b99c4e3d.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_91ff4f41cef3c8d6b7c75380b409a7fdd5ce36b9.png b/ltximg/org-ltximg_91ff4f41cef3c8d6b7c75380b409a7fdd5ce36b9.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_925319670cdf886edbfb7200e6b4dab22965b101.png b/ltximg/org-ltximg_925319670cdf886edbfb7200e6b4dab22965b101.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_93b88f8eb4efd76fc90d4bd25d1ed1b7dd7a5be0.png b/ltximg/org-ltximg_93b88f8eb4efd76fc90d4bd25d1ed1b7dd7a5be0.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_9f34d39b4a163d0e868354be903873bcc6d09644.png b/ltximg/org-ltximg_9f34d39b4a163d0e868354be903873bcc6d09644.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_a16f0fcce4798bef7b2a672a7a2489381b89c772.png b/ltximg/org-ltximg_a16f0fcce4798bef7b2a672a7a2489381b89c772.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_a38b7f9ba4927f1b464c9524a68d0a691854379f.png b/ltximg/org-ltximg_a38b7f9ba4927f1b464c9524a68d0a691854379f.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_a568c360146b207a04126a214f96cd65cc970c51.png b/ltximg/org-ltximg_a568c360146b207a04126a214f96cd65cc970c51.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_b430ab391bb9b6d4b8ba2c1db82d8eaa789b83b1.png b/ltximg/org-ltximg_b430ab391bb9b6d4b8ba2c1db82d8eaa789b83b1.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_b8690ed0b5aa1efd8594d7c9747276cb01e148b9.png b/ltximg/org-ltximg_b8690ed0b5aa1efd8594d7c9747276cb01e148b9.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_b9a5e90acb8406cda2b0a9e46f45738e7fc64394.png b/ltximg/org-ltximg_b9a5e90acb8406cda2b0a9e46f45738e7fc64394.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_bc3ebf35ab016a6c7144cc6250d8f0e85d777ce6.png b/ltximg/org-ltximg_bc3ebf35ab016a6c7144cc6250d8f0e85d777ce6.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_be20bec73c3091c2b13083536db1bc184965ef8a.png b/ltximg/org-ltximg_be20bec73c3091c2b13083536db1bc184965ef8a.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_bf950c1e472fa38df910785f36c1570a75291377.png b/ltximg/org-ltximg_bf950c1e472fa38df910785f36c1570a75291377.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c206c0d84a3df817d72c9bfc9d1bed3d99b83308.png b/ltximg/org-ltximg_c206c0d84a3df817d72c9bfc9d1bed3d99b83308.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c3bb0e35c6ebe236afab1ca47229361e22b4e241.png b/ltximg/org-ltximg_c3bb0e35c6ebe236afab1ca47229361e22b4e241.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c8110cbc92e7c6401dba8b38185aaa1d97011b52.png b/ltximg/org-ltximg_c8110cbc92e7c6401dba8b38185aaa1d97011b52.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c91b4d45bde34f58aaec819408c75071c356821b.png b/ltximg/org-ltximg_c91b4d45bde34f58aaec819408c75071c356821b.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c9200c4e7dce25a1e27e01e1ae86f4105c2fa2dc.png b/ltximg/org-ltximg_c9200c4e7dce25a1e27e01e1ae86f4105c2fa2dc.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_c92b1f9a19d301ad86f57d82beb069e849b679fd.png b/ltximg/org-ltximg_c92b1f9a19d301ad86f57d82beb069e849b679fd.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cb453e7c12347acad1700f56cd2cb7a7438e0c11.png b/ltximg/org-ltximg_cb453e7c12347acad1700f56cd2cb7a7438e0c11.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cbbbbd9603cb09800c1ce9bd9e87995d7c609b1d.png b/ltximg/org-ltximg_cbbbbd9603cb09800c1ce9bd9e87995d7c609b1d.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cbf166f42dcd147a8e21383c5aed428f30ca0144.png b/ltximg/org-ltximg_cbf166f42dcd147a8e21383c5aed428f30ca0144.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cc02e6245b6185abae501586409d2f30fc5fa61b.png b/ltximg/org-ltximg_cc02e6245b6185abae501586409d2f30fc5fa61b.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cc9ee8e3dc18ceac67ab9b63fe21ea4ed4c0e563.png b/ltximg/org-ltximg_cc9ee8e3dc18ceac67ab9b63fe21ea4ed4c0e563.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_cfec4e7d4520ebfff12e08231870330d66e166cc.png b/ltximg/org-ltximg_cfec4e7d4520ebfff12e08231870330d66e166cc.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_d856e3330a950cdef271d8c83a94b334a11a8837.png b/ltximg/org-ltximg_d856e3330a950cdef271d8c83a94b334a11a8837.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_df2f698fcba37b4bb5ca9e15873f9f205ca53b99.png b/ltximg/org-ltximg_df2f698fcba37b4bb5ca9e15873f9f205ca53b99.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_e4d27eaf08385a5653d47c5353e882fec619834d.png b/ltximg/org-ltximg_e4d27eaf08385a5653d47c5353e882fec619834d.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_e53730ba461b03f192d1c5d7adf2c8ea141ef862.png b/ltximg/org-ltximg_e53730ba461b03f192d1c5d7adf2c8ea141ef862.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_eddc76bce6183940e7887fa7869970cce9c992e4.png b/ltximg/org-ltximg_eddc76bce6183940e7887fa7869970cce9c992e4.png old mode 100644 new mode 100755 diff --git a/ltximg/org-ltximg_f341743fe73d4f222f6c40f99ee4bb426882a0db.png b/ltximg/org-ltximg_f341743fe73d4f222f6c40f99ee4bb426882a0db.png old mode 100644 new mode 100755 diff --git a/orgroam-build.log b/orgroam-build.log old mode 100644 new mode 100755 index 0ed350c..b826c94 --- a/orgroam-build.log +++ b/orgroam-build.log @@ -3,18 +3,18 @@ rm -rf output/ Generating the JSON output... /usr/bin/python3 search-index.py Generating search-index.json with links... -search-index.json generated (129 entries). -Loaded 129 entries from /home/zaine/master-folder/org_files/org_roam/output/search-index.json +search-index.json generated (133 entries). +Loaded 133 entries from /home/zaine/master-folder/org_files/org_roam/output/search-index.json all-files.json generated → /home/zaine/master-folder/org_files/org_roam/all-files.json Building project (full rebuild with search index)... emacs -Q --script lisp/build.el Loading /home/zaine/master-folder/org_files/org_roam/lisp/macros.el (source)... -Starting full rebuild at 2026-03-27 15:37:07 +Starting full rebuild at 2026-04-01 17:05:07 🎬 Scanning /home/zaine/master-folder/org_files/org_roam/assets/ for .mov files… - [skip] file_example_MOV_480_700kB.mov (mp4 is up to date) -✅ Full rebuild complete in 6.36 seconds + (no .mov files found) +✅ Full rebuild complete in 6.95 seconds Generating the JSON output 2... /usr/bin/python3 generate_sidebar_tree.py Generating sidebar-tree.json... - sidebar-tree.json generated (7 folders, 128 files) + sidebar-tree.json generated (7 folders, 132 files) → /home/zaine/master-folder/org_files/org_roam/output/assets/sidebar-tree.json diff --git a/search-index.py b/search-index.py old mode 100644 new mode 100755 diff --git a/tests/build-tests.el b/tests/build-tests.el old mode 100644 new mode 100755 diff --git a/tests/macros-tests.el b/tests/macros-tests.el old mode 100644 new mode 100755