gitea runners
All checks were successful
Build Roam Site / build (push) Successful in 28s

This commit is contained in:
2026-05-06 15:26:35 +01:00
parent cb97d40197
commit e2e4972123
326 changed files with 1476 additions and 34 deletions

View File

@@ -1,13 +0,0 @@
:PROPERTIES:
:ID: f1bc3f88-95c5-4013-b0dd-f72428200e72
:END:
#+title: Art of Computer Programming Notes
#+author: Donald Knuth
* Art of Computer Programming Notes
:PROPERTIES:
:NOTER_DOCUMENT: ../../pdfs/_technical/Art of Computer Programming - Volume 1 (Fundamental Algorithms).pdf
:NOTER_AUTO_SAVE_LAST_LOCATION: t
:NOTER_PAGE: 1
:END:

0
.gitignore vendored Normal file → Executable file
View File

0
.markdown-preview.html Normal file → Executable file
View File

0
.projectile Normal file → Executable file
View File

2
20241210233721-brain_moc.org Normal file → Executable file
View File

@@ -21,3 +21,5 @@ Brain MOC contains links to all the MOCs in the system. It is the entry point to
* [[id:797d6e3e-98eb-4bc7-88b6-e096ef7306ad][Uni MOC]]
* [[id:5f8f7d8a-5dfc-49a4-a7a6-33373a1d7c8d][Personal Operating System]]
* [[id:7b8ba1b0-a00e-4fc1-b75e-55ba0e2c3bb7][Daily Notes MOC]]

17
20260421100223-dailies.org Executable file
View File

@@ -0,0 +1,17 @@
:PROPERTIES:
:ID: 7b8ba1b0-a00e-4fc1-b75e-55ba0e2c3bb7
:END:
#+title: Daily Notes MOC
#+filetags: :moc:daily:
* Daily Notes
All daily journal entries, linked automatically.
** [[file:daily/2026-04-14.org][2026-04-14]]
** [[file:daily/2026-04-18.org][2026-04-18]]
** [[file:daily/2026-04-20.org][2026-04-20]]
** [[file:daily/2026-04-21.org][2026-04-21]]
** [[file:daily/2026-04-28.org][2026-04-28]]
** [[file:daily/2026-04-29.org][2026-04-29]]
** [[file:daily/2026-04-30.org][2026-04-30]]
** [[file:daily/2026-05-01.org][2026-05-01]]
** [[file:daily/2026-05-05.org][2026-05-05]]

10
20260505143034-deen_moc.org Executable file
View File

@@ -0,0 +1,10 @@
:PROPERTIES:
:ID: 4087e241-5c2a-4756-81a3-a98904231afb
:END:
#+title: Deen MOC
#+filetags: :deen:moc:
[[id:b4da3cfd-f7d8-46aa-b3d7-a231178c06b6][Dawrah]]
* Articles:
https://siblingsofilm.com/directions-for-dawrah/

37
20260505144045-dawrah.org Executable file
View File

@@ -0,0 +1,37 @@
:PROPERTIES:
:ID: b4da3cfd-f7d8-46aa-b3d7-a231178c06b6
:END:
#+title: Dawrah
#+filetags: :deen:
From the article:
https://siblingsofilm.com/directions-for-dawrah/
* Summary:
Dawrat al-Ḥadīth: Guide for Students
This article provides guidance for students entering their final year of study at Dār al-ʿUlūm seminaries, focusing on optimising their experience through clear goals and practical strategies.
**Key Details:**
- The article addresses students beginning their Dawrat al-Ḥadīth year (typically after Ramadan)
- Focuses on the "Six Books" of Ḥadīth and studying in the presence of the Prophet Muhammad (ṣallā Allāhu ʿalayhi wa-sallam)
- Emphasises three essential goals for maximizing benefit:
1. Gaining deep familiarity with the Sunnah through practical recollection of Aḥādīth and their locations in the Six Books
2. Understanding the practical workings of the isnād system (chains of narration)
3. Developing practical knowledge about how the Prophet's narrations traveled through historical networks
**The Three Core Goals:**
| Goal | Description | Importance |
|-------------------------------+---------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------|
| 1. Sunnah Familiarity | Developing strong recollection of various Aḥādīth on different topics and knowing where they are located in the Six Books | Essential for lifelong Islamic practice and scholarly research |
| 2. Isnād System Understanding | Learning how chains of narration work in practical terms, understanding real human connections between narrators | Makes the study of isnād enjoyable and transforms it from judgment to exploration |
| 3. Practical Focus | Avoiding vague goals and focusing on tangible, actionable objectives that benefit the student's entire life | Prevents wasted time and ensures efficient learning |
**Why It Matters:**
- The author believes establishing clear, practical goals is crucial for student success
- The Dawrat al-Ḥadīth year is the "golden seal" that validates previous studies
- Without clear goals, the year becomes inefficient and unproductive
- The article encourages students to understand the practical value of this year for both personal Islamic practice and scholarly development

View File

@@ -0,0 +1,7 @@
:PROPERTIES:
:ID: e7f3b897-72ca-45f1-8084-decf1b25c3d4
:END:
#+title: Substack Articles
#+filetags: :notes:articles:
[[id:973f2e9c-f161-45ad-8f19-2e4d563f56ac][The 20 Software Engineering Laws]]

View File

@@ -0,0 +1,7 @@
:PROPERTIES:
:ID: 973f2e9c-f161-45ad-8f19-2e4d563f56ac
:END:
#+title: The 20 Software Engineering Laws
* Link: https://substack.com/inbox/post/194605697

View File

0
Books/20250715223949-the_clean_coder.org Normal file → Executable file
View File

0
Books/20250723182408-so-good-they-cant-ignore-you.org Normal file → Executable file
View File

0
Books/20250723183655-career_capital.org Normal file → Executable file
View File

0
Books/20250723183755-deliberate_practice.org Normal file → Executable file
View File

View File

0
Books/20250723185056-neuroplasticity.org Normal file → Executable file
View File

2
Books/20250724230557-books_org_agenda.org Normal file → Executable file
View File

@@ -7,7 +7,7 @@
#+filetags: :books:org:index:
#+DATE: 2025-05-19
#+STARTUP: content
#+PROPERTY: GENERATED_AT 2026-04-19T00:00:01.534223
#+PROPERTY: GENERATED_AT 2026-05-06T00:00:01.628052
* Career
** Clean Code_ A Handbook of Agile Software Craftsmanship - Robert C. Martin :Read:

0
Books/20250727174809-books_moc.org Normal file → Executable file
View File

0
Books/20250727174903-book_recs.org Normal file → Executable file
View File

0
Books/20250727221512-clean_code.org Normal file → Executable file
View File

0
Books/20260331113318-ikigai_notes.org Normal file → Executable file
View File

0
Books/20260402115029-dose_effect_notes.org Normal file → Executable file
View File

View File

0
Career Concepts/20250722221649-career_moc.org Normal file → Executable file
View File

0
Career Concepts/20250723200800-postgres.org Normal file → Executable file
View File

0
Career Concepts/20250727122406-database_moc.org Normal file → Executable file
View File

0
Career Concepts/20250804201706-big_o_complexity.org Normal file → Executable file
View File

View File

0
Career Concepts/20251229180039-airflow.org Normal file → Executable file
View File

0
Career Concepts/20251229180156-airflow_tasks.org Normal file → Executable file
View File

0
Career Concepts/20251229180249-airflow_dags.org Normal file → Executable file
View File

2
Career Concepts/20260101010049-concepts.org Normal file → Executable file
View File

@@ -10,6 +10,8 @@ In this node lies notes relating to theoretical concepts tying with maths and/or
* Microlise:
** ESS
- [[id:abe43fdc-e90d-4c2c-9320-cc7929f0c99a][ESS]]
- [[id:0b6e7dc0-1171-4dc4-982e-a5d95765e09c][SEB Search Improvement — Couchbase Caching]]
* Mathematical Concepts

0
Career Concepts/20260101011126-xor.org Normal file → Executable file
View File

0
Career Concepts/20260101012549-solid_principles.org Normal file → Executable file
View File

View File

0
Career Concepts/20260115152626-apim.org Normal file → Executable file
View File

0
Career Concepts/20260121173318-api_architecture.org Normal file → Executable file
View File

0
Career Concepts/20260305102210-cicd_example.org Normal file → Executable file
View File

0
Career Concepts/20260305111610-cicd_summary.org Normal file → Executable file
View File

View File

0
Career Concepts/20260305132058-restful_api.org Normal file → Executable file
View File

0
Career Concepts/20260327110908-api_intro_notes.org Normal file → Executable file
View File

View File

View File

0
Career Concepts/20260407102129-mvp_mvt.org Normal file → Executable file
View File

0
Career Concepts/20260410115348-microlise_ess.org Normal file → Executable file
View File

0
Career Concepts/20260410121527-ess_esp_index.org Normal file → Executable file
View File

0
Career Concepts/20260410121719-esp_applications.org Normal file → Executable file
View File

0
Career Concepts/20260410121927-esp_pipeline.org Normal file → Executable file
View File

0
Career Concepts/20260410122116-ess_scripts.org Normal file → Executable file
View File

0
Career Concepts/20260410122303-ess_manifest.org Normal file → Executable file
View File

0
Career Concepts/20260410122425-ess_database.org Normal file → Executable file
View File

0
Career Concepts/20260410122604-ess_deploy_stages.org Normal file → Executable file
View File

0
Career Concepts/20260410122754-esp_known_issues.org Normal file → Executable file
View File

0
Career Concepts/20260410122935-esp_open_questions.org Normal file → Executable file
View File

0
Career Concepts/20260410123131-esp_glossary.org Normal file → Executable file
View File

0
Career Concepts/20260413120825-windows_services.org Normal file → Executable file
View File

0
Career Concepts/20260413154901-dll.org Normal file → Executable file
View File

View File

@@ -0,0 +1,177 @@
:PROPERTIES:
:ID: 0b6e7dc0-1171-4dc4-982e-a5d95765e09c
:END:
#+TITLE: SEB Search Improvement — Couchbase Caching
#+filetags: :couchbase:kafka:
#+DATE: 2025-06-18
* Overview
DBAs are seeing high CPU and memory usage on SQL production servers due to SEB
Search. Free text search uses the =LIKE= operator against RouteID, JourneyAlias,
formatted driver name, consignment references, site names etc. The =LIKE= operator
scans table indexes and is expensive.
By adding a Couchbase caching layer, fewer requests reach SQL Server.
*Scope:* FreeText Search redirection only — NOT Saved Search.
FreeText accounts for *8590%* of all SEB search requests.
** What is Free Text vs Saved Search?
- *Free Text Search* — user types in the Search box AND selects "All Journeys"
- *Saved Search* — user selects any option other than "All Journeys" from the
"Search by preset" dropdown
* Design
Journey details are pushed to Couchbase when journeys are created or modified
in the TMC database, via the Outbox Processor Service → Kafka → Couchbase.
When a WebPortal user searches, the request goes to the multi-tenanted
=SEBSearchWebApi= (deployed on OpenShift), which returns matching Journey IDs.
Those IDs are passed back to the TMC Database for visibility/config filtering,
then journey data is retrieved and displayed.
* Release
- *Available from:* 25.8
- *Feature Flag:* ~SEB Search Improvement~
** Feature Flag Behaviour
- Automatically enabled for existing customers by the Outbox Processor Service
after existing journey cache is built (CERT, UAT, LIVE).
- For *new customers* using SEB: flag must be enabled *before* creating any
journeys.
* Rollout Instructions (TechOps)
** Pre-requisites
1. TMC system upgraded to *25.8*
2. ~SSO.Alchemy.ApiKey~ updated with the IDAM API Key
3. ~SEBSearchWebApi.ApiUrl~ updated with the correct SebSearchWebAPI URL
** Steps
The Outbox Processor Windows service is *disabled by default*.
Enable it for the customer, preferably between *1:00 AM 4:00 AM*.
** SEBSearchWebAPI URLs
| Environment | URL |
|-------------+-----------------------------------------------------------|
| DEV | http://seb-search-web-api-dev.apps.gen.ocp.mms.local/ |
| CERT | http://seb-search-web-api-cert.apps.gen.ocp.mms.local/ |
| UAT | http://seb-search-web-api-uat.apps.gen.ocp.mms.local/ |
| PROD | http://seb-search-web-api-prod.apps.prod.ocp.mms.local/ |
* UAT Refresh Instructions (DBA)
Each time a TMC database is restored from PROD to UAT, run the following as
part of the UAT refresh process. *Do NOT use TRUNCATE.*
#+BEGIN_SRC sql
DELETE FROM dataSync.tbl_SebSearchCachePublishedJourneys
#+END_SRC
This table records journeys cached to Couchbase. Deleting it causes the Outbox
Processor to rebuild the cache for the UAT environment.
* New Components
** Outbox Processor Service
- Reads from ~dataSync.tbl_OutboxEvent~ in the TMC database
- Sends Journey metadata to a Kafka topic
- Polls every *30 minutes* (default) for unpublished journeys
- Deployed on: TMC Application Server
** Kafka Connector (Sink)
- Reads from Kafka topic, writes to Couchbase
- Multi-tenant
- Pipeline name: ~env_niot_journey_sebsearch_couchbase~
- Very fast — consumed 1M messages in 2025 minutes in tests
** SEBSearchWebApi
- Serves journey search requests from WebPortal
- Returns list of Journey IDs
- Secured via IDAM API keys
- Deployed on OpenShift as multi-tenant service
- Capable of automatic horizontal scaling
* Journey Metadata Cached
The following fields are cached (same as existing FreeText search queries):
#+BEGIN_SRC
tbl_Journeys.RouteID
tbl_Journeys.JourneyAlias
fn_GetConcatResourceNameWithFormattedDriver
└─ tbl_Drivers.DisplayName / FullName (depending on DriverNameFormat config)
fn_GetConcatConsignmentReferences
└─ tbl_ConsignmentHeader.OrderRef
└─ tbl_ConsignmentHeader.CustomerOrderRef
└─ tbl_ConsignmentHeader.DocumentID
└─ tbl_ConsignmentHeader.ConHeaderInfo15
tbl_JourneyDrops.DropPointID
tbl_DropPoints.DropName
tbl_SiteType.SiteTypeName
tbl_Journeys.StartTime
tbl_Journeys.EndTime
#+END_SRC
* Performance Data
** Journey Counts (as of 17 June 2025)
- Total journeys across estate (up to archiving period): *8.7 million*
- Top 5 customers by journey count (descending):
1. TMC_EUROCARPARTSSTORES_L
2. TMC_ASDA_GHS
3. TMC_ALLIANCEHEALTHCARE_L
4. TMC_GSFCARPARTS_L
5. TMC_TESCOUK_L
- ASDA and Tesco UK have shorter retention periods than the other top-5
** SEB Search Hit Analysis (as of 18 June 2025)
- *5.5 million* SEB search hits in the prior month (excl. SEB Refresh hits)
- Weekdays > weekends; *Thursday* is peak day
- Peak working hours: *6 AM 6 PM*
- Peak load (9 AM 2 PM): ~15,000 searches/hour across the estate
- ECPS is the biggest contributor during peak hours
- Across the full day: Sainsbury's highest, then Tesco UK
- Max observed: *317 search requests in a single minute* (Thursday)
** Test Results
| Component | Result |
|----------------------+------------------------------------------------------------|
| Outbox Processor | 1M journeys pushed in 34 hours |
| Kafka Sink Connector | 1M messages consumed in 2025 minutes (even after backlog) |
| SEBSearchWebApi | 1,863 req/min capacity vs 438 req/min current load |
* Component Stack (all must be running)
1. OutboxProcessorService
2. TMC Database
3. Couchbase
4. Kafka
5. Sink Connector
6. IDAM API Key Authorisation Service (AKAS)
7. OpenShift cluster
8. SEBSearchWebApi
9. TMC WebPortal
10. Journey groups / user visibility config
* Known Existing SEB Behaviours (pre-feature)
- Clicking the *first* number in "Loaded X of Y journeys" only updates that
number — the search result does not change.
- Clicking the *second* number (Y) loads all Y journeys.
- SEB auto-refresh only refreshes displayed data — new/removed journeys
matching the same criteria are not added/removed dynamically.
* Dashboards & Pipelines
- *SEBSearchWebApi dashboard* — available in monitoring tooling
- *Sink connector pipeline:* ~env_niot_journey_sebsearch_couchbase~
* [[https://microliseuk.sharepoint.com/sites/JourneyManagement/SitePages/SEB-Search-Cache.aspx?ga=1][Links (internal)]]
- Local dev setup (Kafka, connector, Couchbase): [see internal wiki]
- Local dev setup (OutboxProcessorService): [see internal wiki]
- Enable SebSearchCaching on new TMC systems: [see internal wiki]
- Troubleshooting guide: [see internal wiki]

0
Emacs/20241210004247-emacs_moc.org Normal file → Executable file
View File

0
Emacs/20241210004329-org_roam.org Normal file → Executable file
View File

0
Emacs/20241210004453-gtd.org Normal file → Executable file
View File

0
Emacs/20250218174735-emacs_stuff_keybindings.org Normal file → Executable file
View File

0
Emacs/20250326002128-emacs_stuff_elisp.org Normal file → Executable file
View File

0
Emacs/20250329231658-emacs_stuff_magit.org Normal file → Executable file
View File

0
Emacs/20250420012258-emacs_stuff_evil.org Normal file → Executable file
View File

0
Emacs/20250806155335-emacs_stuff_org_publish.org Normal file → Executable file
View File

0
Emacs/20260401100130-emacs_org_noter.org Normal file → Executable file
View File

0
Emacs/20260401100839-emacs_calendar.org Normal file → Executable file
View File

52
Emacs/20260407083539-emacs_config.org Normal file → Executable file
View File

@@ -423,6 +423,58 @@
(define-key org-mode-map (kbd "C-c m") #'org-insert-macro)
#+end_src
* Insert Dailies into ~20260421100223-dailies.org~
#+begin_src emacs-lisp
;; ─── org-roam daily auto-linker ───────────────────────────────────────────
(defvar my/org-roam-last-capture-file nil
"Stores the daily file path captured via org-roam-capture-new-node-hook.")
(defun my/org-roam-capture-store-file ()
"Store file path when a new org-roam node is created."
(when-let ((f (buffer-file-name)))
(setq my/org-roam-last-capture-file f)))
(defun my/org-roam-daily-already-linked-p (index-file date-str)
"Return t if DATE-STR already appears in INDEX-FILE."
(when (file-exists-p index-file)
(with-temp-buffer
(insert-file-contents index-file)
(search-forward date-str nil t))))
(defun my/org-roam-daily-add-link (index-file date-str)
"Append a heading linking DATE-STR daily into INDEX-FILE."
(message " Adding link for %s..." date-str)
(with-current-buffer (find-file-noselect index-file)
(save-excursion
(goto-char (point-max))
(unless (bolp) (insert "\n"))
(insert (format "** [[file:daily/%s.org][%s]]\n" date-str date-str)))
(save-buffer))
(org-roam-db-update-file index-file))
(defun my/org-roam-daily-link-to-index ()
"After capture, link today's daily into the index file."
(let ((captured-file
(or my/org-roam-last-capture-file
(ignore-errors
(plist-get org-capture-current-plist :original-file)))))
(when (and captured-file
(string-match-p (regexp-quote "daily") captured-file))
(let* ((today-date (file-name-base captured-file))
(index-file (expand-file-name
"20260421100223-dailies.org"
org-roam-directory)))
(if (my/org-roam-daily-already-linked-p index-file today-date)
(message " %s already linked, skipping." today-date)
(my/org-roam-daily-add-link index-file today-date)))
(setq my/org-roam-last-capture-file nil))))
(add-hook 'org-roam-capture-new-node-hook #'my/org-roam-capture-store-file)
(add-hook 'org-capture-after-finalize-hook #'my/org-roam-daily-link-to-index)
#+end_src
* Old stuff:
** org image inserter:
#+begin_src emacs-lisp

0
Linux/20250213124335-i3_wm.org Normal file → Executable file
View File

0
Linux/20250417173809-linux_moc.org Normal file → Executable file
View File

0
Linux/20250417173809-linux_stuff.org Normal file → Executable file
View File

0
Linux/20250417173821-wacom_notes.org Normal file → Executable file
View File

0
Linux/20250428133236-systemd_services.org Normal file → Executable file
View File

0
Linux/20250516161728-gpg_encryption.org Normal file → Executable file
View File

0
Linux/20250703183239-linux_arch_linux.org Normal file → Executable file
View File

0
Linux/20250723190927-self_hosting.org Normal file → Executable file
View File

0
Linux/20250727120306-nextcloud.org Normal file → Executable file
View File

0
Linux/20251019114736-server_moc.org Normal file → Executable file
View File

0
Linux/20260104155940-server_backend.org Normal file → Executable file
View File

0
Linux/20260227103506-vaultwarden.org Normal file → Executable file
View File

0
Linux/20260409135127-cloudflare.org Normal file → Executable file
View File

0
Makefile Normal file → Executable file
View File

0
Misc/#20251101123637-backlog.org# Normal file → Executable file
View File

0
Misc/20241210001045-technical_moc.org Normal file → Executable file
View File

0
Misc/20241211161232- job_application_cover_letters.org Normal file → Executable file
View File

0
Misc/20241211161232-applications.org Normal file → Executable file
View File

0
Misc/20250402185735-java_moc.org Normal file → Executable file
View File

0
Misc/20250430001952-microlise_assessment.org Normal file → Executable file
View File

0
Misc/20250717230336-recipes_moc.org Normal file → Executable file
View File

0
Misc/20250719174944-recipes_ideas.org Normal file → Executable file
View File

0
Misc/20250719175023-recipes_done.org Normal file → Executable file
View File

0
Misc/20250723185829-test_driven_development.org Normal file → Executable file
View File

0
Misc/20250723185943-bowling_kata.org Normal file → Executable file
View File

0
Misc/20250723190203-java_portswrigger_test.org Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More