updated the makefile, added new org files (2026), and started working on adding a search feature for the website.

This commit is contained in:
2025-12-30 22:43:25 +00:00
parent 78cfe20d64
commit c15fcda8c6
20 changed files with 4007 additions and 33 deletions

3
.gitignore vendored
View File

@@ -1,2 +1,3 @@
output/
backup/
backup/
*~

View File

@@ -4,6 +4,7 @@
all:
@echo "Building project (full rebuild with search index)..."
emacs -Q --script build-site.el
python search-index-json.py
# Clean output directory
clean:

3475
assets/scripts/lunr.js Normal file

File diff suppressed because it is too large Load Diff

210
assets/scripts/search.js Normal file
View File

@@ -0,0 +1,210 @@
let lunrIndex;
let documents = [];
/* ------------------------------
JSON → documents
-------------------------------- */
function extractDocuments(node, currentPath = "") {
if (node.type === "folder" && node.children) {
const nextPath = currentPath
? `${currentPath}/${node.name}`
: node.name;
node.children.forEach(child => {
extractDocuments(child, nextPath);
});
}
if (node.type === "file") {
const filePath = currentPath
? `${currentPath}/${node.name}`
: node.name;
documents.push({
id: documents.length.toString(),
title: node.name,
content: node.content || "",
path: "/" + filePath.replace(/^output\//, "")
});
}
}
/* ------------------------------
Lunr index
-------------------------------- */
function buildIndex() {
lunrIndex = lunr(function () {
this.ref("id");
this.field("title", { boost: 10 });
this.field("content");
documents.forEach(doc => this.add(doc));
});
console.log("Lunr index built with", documents.length, "documents");
}
async function initSearch() {
const response = await fetch("test.json");
const json = await response.json();
extractDocuments(json);
buildIndex();
}
initSearch();
/* ------------------------------
Fuzzy search
-------------------------------- */
function buildFuzzyQuery(query) {
return query
.split(/\s+/)
.map(term => `${term}~1`)
.join(" ");
}
function search(query) {
if (!lunrIndex) return [];
const results = lunrIndex.search(buildFuzzyQuery(query));
return results.map(r => {
const doc = documents.find(d => d.id === r.ref);
return {
title: doc.title,
path: doc.path,
score: r.score,
preview: doc.content.slice(0, 200) + "…"
};
});
}
/* ------------------------------
DOM elements
-------------------------------- */
const searchInput = document.getElementById("search-input");
const searchBtn = document.getElementById("search-btn");
/* ------------------------------
Live dropdown results
-------------------------------- */
const resultsBox = document.createElement("div");
resultsBox.id = "search-results";
document.body.appendChild(resultsBox);
function showResults(results) {
resultsBox.innerHTML = "";
if (results.length === 0) {
resultsBox.style.display = "none";
return;
}
const rect = searchInput.getBoundingClientRect();
resultsBox.style.top = `${rect.bottom + window.scrollY}px`;
resultsBox.style.left = `${rect.left + window.scrollX}px`;
resultsBox.style.width = `${rect.width}px`;
results.slice(0, 5).forEach(result => {
const item = document.createElement("div");
item.className = "search-result";
item.innerHTML = `
<div class="search-result-title">${result.title}</div>
<div class="search-result-preview">${result.preview}</div>
`;
item.onclick = () => window.location.href = result.path;
resultsBox.appendChild(item);
});
resultsBox.style.display = "block";
}
searchInput.addEventListener("input", () => {
const q = searchInput.value.trim();
if (!q) {
resultsBox.style.display = "none";
return;
}
showResults(search(q));
});
/* ------------------------------
Modal popup
-------------------------------- */
const modal = document.createElement("div");
modal.id = "search-modal";
modal.innerHTML = `
<div class="search-modal-backdrop"></div>
<div class="search-modal-content">
<h2>Search results</h2>
<div id="search-modal-results"></div>
</div>
`;
document.body.appendChild(modal);
const modalResults = modal.querySelector("#search-modal-results");
function openSearchModal(results) {
modalResults.innerHTML = "";
if (results.length === 0) {
modalResults.innerHTML = "<p>No results found.</p>";
}
results.forEach(result => {
const item = document.createElement("div");
item.className = "search-modal-result";
item.innerHTML = `
<div class="search-modal-title">${result.title}</div>
<div class="search-modal-preview">${result.preview}</div>
`;
item.onclick = () => window.location.href = result.path;
modalResults.appendChild(item);
});
modal.style.display = "block";
}
/* ------------------------------
Submit search (Enter / 🔍)
-------------------------------- */
function submitSearch() {
const q = searchInput.value.trim();
if (!q) return;
openSearchModal(search(q));
}
searchInput.addEventListener("keydown", e => {
if (e.key === "Enter") {
e.preventDefault();
submitSearch();
}
});
searchBtn.addEventListener("click", submitSearch);
/* ------------------------------
Close behaviours
-------------------------------- */
document.addEventListener("click", e => {
if (
!resultsBox.contains(e.target) &&
e.target !== searchInput &&
e.target !== searchBtn
) {
resultsBox.style.display = "none";
}
});
modal.addEventListener("click", e => {
if (e.target.classList.contains("search-modal-backdrop")) {
modal.style.display = "none";
}
});
document.addEventListener("keydown", e => {
if (e.key === "Escape") {
modal.style.display = "none";
}
});

View File

@@ -225,3 +225,123 @@ time.countdown.expired {
text-decoration: line-through;
}
/* Make nav a flex container */
nav {
display: flex;
align-items: center;
gap: 0.5rem;
}
/* Push search to the far right */
#search-input,
#search-btn {
margin-left: auto;
}
/* Input styling */
#search-input {
width: 12rem;
padding: 0.3rem 0.5rem;
font-size: 0.9rem;
border: 1px solid var(--border-color, #ccc);
border-radius: 4px;
background: var(--bg-color, #fff);
color: var(--text-color, #000);
}
/* Button styling */
#search-btn {
margin-left: 0;
background: none;
border: none;
cursor: pointer;
font-size: 1.1rem;
}
/* Focus state */
#search-input:focus {
outline: 2px solid var(--accent-color, #5b8cff);
}
@media (max-width: 700px) {
#search-input {
display: none;
}
#search-btn {
font-size: 1.4rem;
padding: 0.2rem;
}
}
#search-results {
position: absolute;
max-height: 60vh;
overflow-y: auto;
background: var(--bg-color, #fff);
border: 1px solid var(--border-color, #ccc);
border-radius: 6px;
box-shadow: 0 8px 20px rgba(0,0,0,0.12);
display: none;
z-index: 9999;
}
.search-result {
padding: 0.6rem 0.8rem;
cursor: pointer;
border-bottom: 1px solid #eee;
}
.search-result:hover {
background: var(--accent-bg, #f2f6ff);
}
.search-result-title {
font-weight: 600;
font-size: 0.9rem;
}
.search-result-preview {
font-size: 0.75rem;
color: #666;
}
#search-modal {
position: fixed;
inset: 0;
display: none;
z-index: 10000;
}
.search-modal-backdrop {
position: absolute;
inset: 0;
background: rgba(0,0,0,0.45);
}
.search-modal-content {
position: relative;
max-width: 700px;
margin: 10vh auto;
padding: 1.2rem;
background: var(--bg-color, #fff);
border-radius: 10px;
box-shadow: 0 20px 60px rgba(0,0,0,0.25);
max-height: 70vh;
overflow-y: auto;
}
.search-modal-result {
padding: 0.8rem;
border-bottom: 1px solid #eee;
cursor: pointer;
}
.search-modal-result:hover {
background: var(--accent-bg, #f2f6ff);
}
.search-modal-title {
font-weight: 600;
}
.search-modal-preview {
font-size: 0.85rem;
color: #666;
}

View File

@@ -0,0 +1,8 @@
#+TITLE: [21-12-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-12-21 Sun 12:12>
#+filetags: :review:
#+WIP: t
#+COMMENTS: t
#+SLUG: 21-12-25-week-review

View File

@@ -6,8 +6,8 @@ See the categories: @@html:<a href="../../categories.html">Categories</a>@@
* 2025
** December 2025
- [[file:12-december/21-12-week-review.org][21-12-week-review]] @@html:<span class="post-date">30-12-2025 10:14</span>@@
- [[file:12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">28-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">21-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]] @@html:<span class="post-date">09-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]] @@html:<span class="post-date">07-12-2025 20:34</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@

View File

@@ -13,6 +13,6 @@
- +Research the xcom thing, and find out what a parquet is and how to use it+
- <2025-12-30 Tue>
- +Finish off the conversion for the parquets (xcom -> parquet)+
- Run a full version with no caps
- fix all the tests
- +Run a full version with no caps+ -> There are some errors that need to be fixed
- +fix all the tests+
- +create a PR for the datamart+

9
blogs/2026/2026-list.org Normal file
View File

@@ -0,0 +1,9 @@
#+TITLE: 2026 List
#+OPTIONS: toc:nil num:nil
See the categories: @@html:<a href="../../categories.html">Categories</a>@@
* 2026
** January 2026
- [[file:01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]] @@html:<span class="post-date">04-01-2026 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@

View File

@@ -5,9 +5,10 @@ See the categories: @@html:<a href="../categories.html">Categories</a>@@
* Blogs:
- [[file:2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]] @@html:<span class="post-date">04-01-2026 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:2025/2025-list.org][2025 List]] @@html:<span class="post-date">30-12-2025 18:24</span>@@
- [[file:2025/12-december/21-12-week-review.org][21-12-week-review]] @@html:<span class="post-date">30-12-2025 10:14</span>@@
- [[file:2026/2026-list.org][2026 List]] @@html:<span class="post-date">30-12-2025 22:33</span>@@
- [[file:2025/2025-list.org][2025 List]] @@html:<span class="post-date">30-12-2025 22:33</span>@@
- [[file:2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">28-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">21-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]] @@html:<span class="post-date">09-12-2025 12:12</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:2025/12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]] @@html:<span class="post-date">07-12-2025 20:34</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@
- [[file:2025/11-november/30-11-week-review.org][[30-11-2025] - Weekly Review]] @@html:<span class="post-date">30-11-2025 17:09</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@

View File

@@ -49,10 +49,12 @@
<link rel=\"stylesheet\" href=\"/assets/styles/media.css\" />
<script src=\"/assets/scripts/script.js\" defer></script>
<script src=\"/assets/scripts/lunr.js\" defer></script>
<script src=\"/assets/scripts/competency-status-board.js\" defer></script>
<script src=\"/assets/scripts/notes.js\" defer></script>
<script src=\"/assets/scripts/comments.js\" defer></script>
<script src=\"/assets/scripts/bigger-picture.min.js\" defer></script>
<script src=\"/assets/scripts/search.js\" defer></script>
<script src=\"/assets/scripts/svg-pan-zoom.min.js\" defer></script>
<script src=\"/assets/scripts/gallery-init.js\" defer></script>
"
@@ -85,6 +87,10 @@
<a href=\"/blogs/blogs-list.html\">Blogs | </a>
<a href=\"/posts/career/career-list.html\">Career | </a>
<a href=\"/home/services.html\">Services</a>
<input type=\"search\\\" id=\"search-input\" placeholder=\"Search…\" aria-label=\"Search notes\" />
<button id=\"search-btn\" aria-label=\"Search\">🔍</button>
</nav>
<button class=\"theme-toggle\" id=\"theme-toggle\" type=\"button\" aria-label=\"Toggle dark mode\">🌗 Theme</button>
@@ -319,6 +325,25 @@ A file has comments if:
:sitemap-sort-files anti-chronologically
:html-head ,z-shared-head
)
("org-2026"
:base-directory "~/master-folder/org_files/org_web/blogs/2026/"
:publishing-directory "~/master-folder/org_files/org_web/output/blogs/2026/"
:recursive t
:base-extension "org"
:publishing-function z/z-publish-to-html
:with-author nil
:with-creator nil
:html-validation-link nil
:html-preamble ,z-preamble
:html-postamble ,z-postamble
:auto-sitemap t
:sitemap-filename "2026-list.org"
:sitemap-title "2026 List"
:sitemap-style list
:sitemap-function z/2026-sitemap
:sitemap-sort-files anti-chronologically
:html-head ,z-shared-head
)
("org-career"
:base-directory "~/master-folder/org_files/org_web/posts/career/"
:publishing-directory "~/master-folder/org_files/org_web/output/posts/career/"

View File

@@ -10,5 +10,5 @@
- [[file:tags/maths.org][@@html:<span class="post-tag">maths</span>@@]] (1)
- [[file:tags/notes.org][@@html:<span class="post-tag">notes</span>@@]] (11)
- [[file:tags/reading.org][@@html:<span class="post-tag">reading</span>@@]] (1)
- [[file:tags/review.org][@@html:<span class="post-tag">review</span>@@]] (11)
- [[file:tags/review.org][@@html:<span class="post-tag">review</span>@@]] (12)
- [[file:tags/website.org][@@html:<span class="post-tag">website</span>@@]] (2)

View File

@@ -171,6 +171,61 @@
output))
(defun z/2026-sitemap (title list)
"Sitemap that lists 2026 blogs grouped by month, with dates and FILETAGS."
(let ((output (concat
"#+TITLE: " title "\n"
"#+OPTIONS: toc:nil num:nil \n\n"
"See the categories: @@html:<a href=\"../../categories.html\">Categories</a>@@\n\n"
"* 2026\n"))
(current-month nil))
(dolist (entry (cdr list))
(when (consp entry)
(let* ((link (car entry))
(filename (if (string-match "\\[\\[file:\\([^]]+\\)\\]" link)
(match-string 1 link)
link))
(full-path (expand-file-name
filename
"~/master-folder/org_files/org_web/blogs/2026/"))
(date (when (file-exists-p full-path)
(org-publish-find-date full-path org-publish-project-alist)))
(date-str (if date
(format-time-string "%d-%m-%Y %H:%M" date)
"no date"))
(month-str (if date
(format-time-string "%B %Y" date)
"No date"))
(tags-str ""))
(when (file-exists-p full-path)
(with-temp-buffer
(insert-file-contents full-path)
(org-mode)
(let ((tags (cadr (assoc "FILETAGS"
(org-collect-keywords '("FILETAGS"))))))
(when tags
(setq tags-str
(mapconcat
(lambda (tag)
(format "@@html:<a href=\"/tags/%s.html\"> \
<span class=\"post-tag\">%s</span> </a>@@" tag tag))
(split-string tags ":" t)
" "))))))
(unless (equal month-str current-month)
(setq current-month month-str)
(setq output (concat output "\n** " month-str "\n")))
(setq output
(concat output
(format "- %s @@html:<span class=\"post-date\">%s</span>@@ %s\n"
link date-str tags-str))))))
output))
(defun z/career-sitemap (title list)
"Sitemap that lists careers posts grouped by month, with dates and FILETAGS."
@@ -183,12 +238,9 @@
))
(current-month nil))
;; `list` is what org-publish passes in; we skip its car (top-level title node)
(dolist (entry (cdr list))
;; In this setup each ENTRY is usually (LINK . OTHER-STUFF)
(when (consp entry)
(let* ((link (car entry))
;; Extract relative filename from the [[file:...][...]] link
(filename (if (string-match "\\[\\[file:\\([^]]+\\)\\]" link)
(match-string 1 link)
link))
@@ -205,7 +257,6 @@
"No date"))
(tags-str ""))
;; Collect FILETAGS from the file
(when (file-exists-p full-path)
(with-temp-buffer
(insert-file-contents full-path)
@@ -226,7 +277,6 @@
(setq current-month month-str)
(setq output (concat output "\n** " month-str "\n")))
;; Insert the actual entry
(setq output
(concat output
(format "- %s @@html:<span class=\"post-date\">%s</span>@@ %s\n"

View File

@@ -2,11 +2,16 @@
#+date: <2025-11-05 wed 20:46>
#+OPTIONS: num:nil tags:t toc:t
#+filetags: :learning:notes:
#+WIP: t
#+WIP:
#+COMMENTS: t
#+SLUG: lean
* What Lean aims to do
Deliver more value with less waste by shortening feedback loops, improving flow, and continually learning.
- Lean is a management philosophy focused on **maximising value** for the customer while **minimising waste**.
- It originated from the **Toyota Production System** in manufacturing.
- The core goal is to **do more with less** (time, effort, resources, cost).
- Lean identifies and eliminates **non-value-adding activities** (waste).
- Common waste types include overproduction, waiting, defects, and excess motion.
- It emphasises **continuous improvement** (*kaizen*).
- Decision-making is driven by **customer value** and real-world process data.
- Lean promotes **efficient flow**, standardised work, and empowered teams.

View File

@@ -4,7 +4,7 @@
See the categories: @@html:<a href="../categories.html">Categories</a>@@
* Posts:
- [[file:career/career-list.org][Career List]] @@html:<span class="post-date">30-12-2025 18:24</span>@@
- [[file:career/career-list.org][Career List]] @@html:<span class="post-date">30-12-2025 22:33</span>@@
- [[file:career/probation-objectives.org][Probation Objectives:]] @@html:<span class="post-date">08-12-2025 17:55</span>@@ @@html:<a href="/tags/review.html"> <span class="post-tag">review</span> </a>@@ @@html:<a href="/tags/notes.html"> <span class="post-tag">notes</span> </a>@@
- [[file:career/airflow.org][Datamarts, Airflow and DAG's]] @@html:<span class="post-date">15-11-2025 18:37</span>@@ @@html:<a href="/tags/learning.html"> <span class="post-tag">learning</span> </a>@@ @@html:<a href="/tags/notes.html"> <span class="post-tag">notes</span> </a>@@
- [[file:career/normalisation.org][Benefits of Normalisation]] @@html:<span class="post-date">10-11-2025 18:04</span>@@ @@html:<a href="/tags/learning.html"> <span class="post-tag">learning</span> </a>@@ @@html:<a href="/tags/notes.html"> <span class="post-tag">notes</span> </a>@@

View File

@@ -2,9 +2,10 @@
#+OPTIONS: toc:nil num:nil
* Recently Updated (top 26 files - per lima's request)
- [[file:blogs/2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]] @@html:<span class="post-date">2025-12-30 15:10</span>@@
- [[file:posts/career/lean.org][Lean]] @@html:<span class="post-date">2025-12-30 21:04</span>@@
- [[file:blogs/2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]] @@html:<span class="post-date">2025-12-30 19:28</span>@@
- [[file:blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">2025-12-30 18:47</span>@@
- [[file:blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">2025-12-30 10:15</span>@@
- [[file:blogs/2025/12-december/21-12-week-review.org][21-12-week-review]] @@html:<span class="post-date">2025-12-30 10:14</span>@@
- [[file:posts/career/probation-objectives.org][Probation Objectives:]] @@html:<span class="post-date">2025-12-29 08:11</span>@@
- [[file:home/backlog.org][Backlog]] @@html:<span class="post-date">2025-12-18 22:43</span>@@
- [[file:home/notes.org][Notes]] @@html:<span class="post-date">2025-12-18 22:30</span>@@
@@ -17,7 +18,6 @@
- [[file:posts/career/owasp.org][OWASP Top Ten]] @@html:<span class="post-date">2025-12-16 21:43</span>@@
- [[file:posts/career/normalisation.org][Benefits of Normalisation]] @@html:<span class="post-date">2025-12-16 21:43</span>@@
- [[file:posts/career/management-of-self.org][Management of self training]] @@html:<span class="post-date">2025-12-16 21:43</span>@@
- [[file:posts/career/lean.org][Lean]] @@html:<span class="post-date">2025-12-16 21:43</span>@@
- [[file:posts/career/invest-principles.org][Invest Principles]] @@html:<span class="post-date">2025-12-16 21:43</span>@@
- [[file:posts/career/career-intro.org][Career Introduction]] @@html:<span class="post-date">2025-12-16 21:42</span>@@
- [[file:posts/career/airflow.org][Datamarts, Airflow and DAG's]] @@html:<span class="post-date">2025-12-16 21:42</span>@@

64
search-index-json.py Normal file
View File

@@ -0,0 +1,64 @@
import os
import json
from bs4 import BeautifulSoup
def strip_html_tags(html):
soup = BeautifulSoup(html, "html.parser")
# Remove script and style elements completely
for tag in soup(["script", "style"]):
tag.decompose()
# Extract plain text
text = soup.get_text(separator="\n")
# Clean up whitespace
lines = [line.strip() for line in text.splitlines() if line.strip()]
return "\n".join(lines)
def create_folder_structure_json(path):
result = {
'name': os.path.basename(path),
'type': 'folder',
'children': []
}
if not os.path.isdir(path):
return result
for entry in os.listdir(path):
entry_path = os.path.join(path, entry)
if os.path.isdir(entry_path):
result['children'].append(
create_folder_structure_json(entry_path)
)
elif entry.lower().endswith('.html'):
file_entry = {
'name': entry,
'type': 'file',
'content': None
}
try:
with open(entry_path, 'r', encoding='utf-8') as f:
html = f.read()
file_entry['content'] = strip_html_tags(html)
except Exception as e:
file_entry['content'] = f"<unreadable: {e}>"
result['children'].append(file_entry)
return result
folder_path = 'output/'
folder_json = create_folder_structure_json(folder_path)
output_file = 'output/test.json'
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(folder_json, f, indent=4, ensure_ascii=False)
print("JSON saved to", output_file)

View File

@@ -41,6 +41,12 @@
- [[file:blogs/blogs-list.org][Blogs List]]
- 2025
- [[file:blogs/2025/2025-list.org][2025 List]]
- 11-november
- [[file:blogs/2025/11-november/02-11-week-review.org][[02-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/09-11-week-review.org][[09-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/16-11-week-review.org][[16-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/23-11-week-review.org][[23-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/30-11-week-review.org][[30-11-2025] - Weekly Review]]
- 08-august
- [[file:blogs/2025/08-august/zettelkasten.org][Zettelkasten Method]]
- [[file:blogs/2025/08-august/wacom-with-arch.org][Wacom With Arch]]
@@ -49,17 +55,15 @@
- [[file:blogs/2025/08-august/hilberts.hotel.org][Hilbert's Hotel]]
- [[file:blogs/2025/08-august/benefits-of-reading.org][Benefits of Reading]]
- [[file:blogs/2025/08-august/third-time.org][Third Time]]
- 11-november
- [[file:blogs/2025/11-november/02-11-week-review.org][[02-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/09-11-week-review.org][[09-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/16-11-week-review.org][[16-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/23-11-week-review.org][[23-11-2025] - Weekly Review]]
- [[file:blogs/2025/11-november/30-11-week-review.org][[30-11-2025] - Weekly Review]]
- 12-december
- [[file:blogs/2025/12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]]
- [[file:blogs/2025/12-december/21-12-week-review.org][21-12-week-review]]
- 2026
- [[file:blogs/2026/2026-list.org][2026 List]]
- 01-january
- [[file:blogs/2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]]
- books
- [[file:books/books-list.org][Books List]]
- clean-code
@@ -67,11 +71,11 @@
- tags
- [[file:tags/learning.org][Tag: learning]]
- [[file:tags/introduction.org][Tag: introduction]]
- [[file:tags/education.org][Tag: education]]
- [[file:tags/website.org][Tag: website]]
- [[file:tags/notes.org][Tag: notes]]
- [[file:tags/review.org][Tag: review]]
- [[file:tags/emacs.org][Tag: emacs]]
- [[file:tags/education.org][Tag: education]]
- [[file:tags/website.org][Tag: website]]
- [[file:tags/reading.org][Tag: reading]]
- [[file:tags/maths.org][Tag: maths]]
- [[file:tags/insights.org][Tag: insights]]
- [[file:tags/insights.org][Tag: insights]]
- [[file:tags/maths.org][Tag: maths]]

View File

@@ -4,6 +4,7 @@
* Posts tagged review
- [[file:../blogs/2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]]
- [[file:../blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]]
- [[file:../blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]]
- [[file:../blogs/2025/12-december/14-12-week-review.org][[14-12-2025] - Weekly Review]]
- [[file:../posts/career/probation-objectives.org][Probation Objectives:]]
- [[file:../blogs/2025/12-december/07-12-week-review.org][[07-12-2025] - Weekly Review]]

View File

@@ -4,6 +4,6 @@
* Work in progress
- [[file:blogs/2026/01-january/04-01-week-review.org][[04-01-2026] - Weekly Review]] @@html:<span class="post-date">04-01-2026 12:12</span>@@
- [[file:blogs/2025/12-december/28-12-week-review.org][[28-12-2025] - Weekly Review]] @@html:<span class="post-date">28-12-2025 12:12</span>@@
- [[file:blogs/2025/12-december/21-12-week-review.org][[21-12-2025] - Weekly Review]] @@html:<span class="post-date">21-12-2025 12:12</span>@@
- [[file:posts/career/probation-objectives.org][Probation Objectives:]] @@html:<span class="post-date">08-12-2025 17:55</span>@@
- [[file:posts/career/invest-principles.org][Invest Principles]] @@html:<span class="post-date">06-11-2025 21:08</span>@@
- [[file:posts/career/lean.org][Lean]] @@html:<span class="post-date">05-11-2025 20:46</span>@@
- [[file:posts/career/invest-principles.org][Invest Principles]] @@html:<span class="post-date">06-11-2025 21:08</span>@@