added makefile and cleaned backups

This commit is contained in:
2025-12-30 18:33:47 +00:00
parent 04f2f7b845
commit 78cfe20d64
56 changed files with 103 additions and 11 deletions

View File

@@ -1,25 +0,0 @@
#+TITLE: Benefits of Reading
#+OPTIONS: num:nil tags:t
#+DATE: <2025-08-14 Thu 23:36>
#+FILETAGS: :reading:insights:
* Benefits [fn:1]
At times, I find myself being able to digest material more quickly and efficiently, and so I thought to myself as to what the probable cause of this was. The answer transpired to be the inculcating of reading in my daily routine. As humans, we are constantly surrounded with information, some are noisy, some are useful. We can choose to /filter/ out noisy information by limiting exposure of their avenues, however the topic I wanted to briefly touch upon is what are the (cognitive and non-cognitive) benefits of increasing the intake of useful information through the medium of reading?
** Mental Stimulation
The brain is a muscle, in order to keep any muscle strong and healthy, it needs stimulation and attention. Thus, reading is an excellent way of ensuring the brain is /fit and healthy/.
** Stress Reduction
A well written novel or informative book can go a long way in making you forget about the worries of the world.
** Increase in Knowledge
Reading will always fill your head with new information.
** Entertainment
A plethora of genres can keep anyone entertained!
** Better writing skills
Being exposed to different writing styles allows you to be influenced to obtaining your own unique writing style.
[fn:1] Check the following [[https://www.crawshawacademy.org.uk/seecmsfile/?id=165][link]]

View File

@@ -1,8 +0,0 @@
#+TITLE: Hilbert's Hotel
#+OPTIONS: num:nil tags:t
#+DATE: <2025-08-11 Mon 18:39>
#+FILETAGS: :maths:insights:
I recently stumbled across a thought experiment in mathematics, where the counterintuitive nature of infinity is portrayed. There is a hotel with an infinite number of rooms, all of which are occupied with a guest. There is a paradox upon the arrival of a new guest, the hotel is still shown to be able to accomodate this guest, despite it being previously coined as /full/.
See: [[https://plus.maths.org/content/hilberts-hotel][this link]] for more details on the full experimental thought and the proofs alongside.

View File

@@ -1,36 +0,0 @@
#+TITLE: 09-08-2025: Website Changes
#+OPTIONS: num:nil toc:nil
#+DATE: <2025-08-09 Sat>
#+FILETAGS: :emacs:website:
* What was worked on
I saw a few websites that used marginal notes on the right side of the screen like [[https://ogbe.net/blog/emacs_org_static_site][this one]], so I decided to try and implement this feature in this wesbite. In my mind I thought of using an external pre-configured CSS that I can just insert and ta-da it would work.
How wrong I was.
See, this website is published with ~org-publish~, meaning the org files that are written are converted to HTML through a transcoder. And as I already had a ~org.css~[fn:1] stylesheet which was primarily used for syntax highlighting, it caused some layout and formatting issue when I tried to use something like ~tufte.css~[fn:2]. Anyways, long story short, the main thing I worked on today was styling this website, and ensuring certain macros worked:
#+BEGIN_SRC emacs-lisp
(setq org-export-global-macros
(append
'(("sidenote"
. "@@html:<label for=\"sn$1\" class=\"margin-toggle sidenote-number\"></label><input type=\"checkbox\" id=\"sn$1\" class=\"margin-toggle\"/><span class=\"sidenote\">$2</span>@@")
("epigraph" . "@@html:<div class=\"epigraph\"><blockquote>$1<footer>$2</footer></blockquote></div>@@")
("epigraph_single" . "@@html:<div class=\"epigraph\"><blockquote>$1</blockquote></div>@@")
("epigraph3" . "@@html:<div class=\"epigraph\"><blockquote>$1<footer>$2, <cite>$3</cite></footer></blockquote></div>@@")
("kbd" . "@@html:<kbd>$1</kbd>@@@@latex:\\texttt{$1}@@")
("margimg"
. "@@html:<aside class=\"marginnote\"><figure class=\"mn-fig\"><img src=\"$1\" alt=\"$2\" class=\"mn-img\" loading=\"lazy\" decoding=\"async\"/>$3</figure></aside>@@")
org-export-global-macros)))
#+END_SRC
This worked quite nicely, and I made sure to make these changes accessible on smaller devices. Anyways, I quite like this style of posting. Nothing formal nor technical, just a bunch of rambling on about random things.
Oh, and also there's a darkmode theme switch now for you night owls.
[fn:1] See: https://gongzhitaao.org/orgcss/
[fn:2] See: https://edwardtufte.github.io/tufte-css/

View File

@@ -1,18 +0,0 @@
#+TITLE: Third Time
#+OPTIONS: num:nil tags:t
#+DATE: <2025-08-28 Thu 17:08>
#+FILETAGS: :insights:
* A more structured way of working
{{{sidenote(1, Useful for people who don't like the constrained working limit of 25 minutes for instance.)}}}
Whilst researching for different ways to use pomodoro [fn:1] on Emacs [fn:2], I came across this package titled: ~pomm.el~. In this package it had an interesting feature called /pomm-third-time/[fn:3]. The ideology behind is as follows:
- You work as long as you want.
- Your break is calculated using the formula: ~Time of break = 1/3 x Time of work~.
- If you take a shorter break, the remaining break time is accumulated and added to the next break (within the same session).
[fn:1] - https://en.wikipedia.org/wiki/Pomodoro_Technique
[fn:2] - https://www.gnu.org/software/emacs/
[fn:3] - https://www.lesswrong.com/posts/RWu8eZqbwgB9zaerh/third-time-a-better-way-to-work

View File

@@ -1,18 +0,0 @@
#+TITLE: Wacom With Arch
#+DATE: <2025-08-08 Fri>
#+OPTIONS: toc:nil num:nil
#+FILETAGS: :insights:
* Setting up Wacom Tablet in Arch Hyprland
I purchased a [[https://www.wacom.com/en-gb/products/one-by-wacom][One by Wacom]] tablet almost 2 years ago now and it works flawlessly in both Windows and MacOS and even in most Linux distros with some configuration.
However with Arch and Hyprland, there were some issues related to the ~xserver~ it was running on. The X input driver module (e.g. xf86-input-wacom) is linked into the X server which in turn is in charge of rendering and generic input events. Hyprland on the other hand uses the Wayland display server protocol (replacement for the X protocol) hence why there is difficulty in input mapping.
I came across this issue as I was able to get the tablet to work across multiple monitors (mapping to a single one) through the ~xsetwacom~ function - which, at the time I was using Ubuntu. But with Hyprland there needs to be some manual intervention. I came across this [[https://thomaspurnell.com/003_wacom_graphics_hyprland/wacom_hyprland.html][post]] which explains nicely how to map the tablet to a single monitor. I took this approach with a slight configuration; in my ~hyprland.conf~ file, I simply added the following line:
#+BEGIN_SRC
exec-once = hyprctl keyword "device[wacom-one-by-wacom-m-pen]:output" "DP-1"
#+END_SRC
which mapped the device to the primary monitor DP-1.

View File

@@ -1,29 +0,0 @@
#+TITLE: What Do I Want To Do With Emacs
#+DATE: <2025-08-08 Fri>
#+OPTIONS: toc:nil num:nil
#+FILETAGS: :emacs:review:
I first started using Emacs (and Linux for that matter) since around the end of 2023, and it's been well over a year of trial and error with this text editor. At first I was using this for all sorts of things such as:
- Dashboard
- Agenda
- Text editing
- Magit (version controlling)
- Syncthing Management
... and the list goes on.
One thing I realised is just how powerful Emacs really is, just recently I found out that you can use the ~emoji-insert~ to insert emojis! Some have even gone to say it's an operating system in its own right. So this prompted the question today, what do /I/ want from Emacs?
After some thinking I narrowed it down and collated it in the following diagram:
[[../../../assets/sketchnotes/2025-08-08-emacs.svg]]
Of course this is the current workflow, where the text in red are items I /currently/ use Emacs for (high percentage likelihood this will increase), and the items in blue text are ones I plan on adding to my workflow. The main thing I want from this is to ensure consistency in daily practices.
- Org-roam bodies a huge aspect of the daily workflow, as it is a second brain where all information is stored.
- Learning elisp is primarily done in the scratch buffer and through projects.
- Java/Python IDE for when I'm leetcoding or doing any arbitrary project.
- Text editing mainly relates to config files for the arch setup.
- Org-agenda (more on this [[file:org-agenda-usage.org][here]]).
- Org-publish: see [[file:../../../setup.org][setup]].

View File

@@ -1,21 +0,0 @@
#+TITLE: Zettelkasten Method
#+DATE: <2025-08-07 Thu>
#+OPTIONS: toc:nil num:nil
#+FILETAGS: :education:
* The Zettelkasten Method
This Zettelkasten method is growing in popularity for taking notes. Ever felt as though there's too much pieces of information but you don't know how to deal with it? This method solves exactly that problem and more. Think of it as forming a /second brain/, where you can jot down ideas and information whilst simultaneously being able to connect them together.
The [[https://zettelkasten.de/introduction/][official website]] describes in detail exactly what the Zettelkasten method is, providing use cases and benefits to this method. The part I wanted to highlighted in this is the following paragraph, where the author depicts how this concept would be explained to someone unfamiliar with it:
{{{epigraph_single(A Zettelkasten is a personal tool for thinking and writing. It has hypertextual features to make a web of thoughts possible. The difference to other systems is that you create a web of thoughts instead of notes of arbitrary size and form\, and emphasize connection\, not a collection.
)}}}
A Zettelkasten is a personal tool for thinking and writing. It has hypertextual features to make a web of thoughts possible. The difference to other systems is that you create a web of thoughts instead of notes of arbitrary size and form, and emphasize connection, not a collection.
This web of thoughts is exactly what makes it useful, it takes on the seemingly cluttered /mess of information/ and is able to link the nodes together to create something meaningful and useful.
There are many personal knowledge management systems' (PKMS) out there that allow you to practice this method; the most common ones being [[https://obsidian.md/][Obsidian]] and [[https://www.orgroam.com/][Org Roam]]. After using Org Roam with Emacs for about a year or so, I realised how useful this method really is. A random idea can be jotted down and later connected to a bigger project or note system. The following picture below is a screenshot of a graph generated UI for all the nodes created in my Org Roam folder:
[[../../../assets/images/org-roam-ui-graph.png]]

View File

@@ -1,20 +0,0 @@
#+TITLE: [02-11-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-11-02 Sun>
#+filetags: :review:
[Was a mid week file, then moved it to a review file]
* Mid Week Review
- Mostly work related updates. Working from home on monday 10th (for trial, so we get used to it and connecting to the VPN)
- Subsequently we will be able to work from home on mondays and fridays for the following weeks (beginning either 17th or 24th?)
- Still working on powerbi (not a fan)
- Upskilling needs to take more this week and the next
- Probation meeting on thursday next week [06/11]
- It's getting darker earlier and more windy
* TODOS
** DONE
Write the retrospective notes
** DONE
More competencies

View File

@@ -1,42 +0,0 @@
#+TITLE: [09-11-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE:<2025-11-09 Sun 20:08>
#+filetags: :review:
* Weekly review
- Week 5 work finished!
- Working from home on monday 10th.
- Maybe do weekly work retrospectives? Using the start stop continue model.
- Probation meeting went quite well Alhamdulillah. Keep doing what you're doing was the message.
- Should start to record successes, either here or on post-it notes. Helps with imposter syndrome.
- Led a meeting for the first time (07/11). Was with Lloyd and Oli from team monopoly (SecDevOps). They understood the problem statement clearly and everything was explained properly to them.
- Bowling Kata was reduced to 29 minutes.
Some thoughts about the nginx reverse proxying architecture. This week I transferred all the docker services to a subdomain.
[[../../../assets/sketchnotes/09-11-2025-nginx-architecture.svg]]
Weekly retrospective using the start stop continue model:
[[../../../assets/sketchnotes/09-11-2025-retrospectives.svg]]
Here is the current state of the competencies (20.5%):
[[../../../assets/images/competencies/competencies-09-11-25.png]]
During the meeting, we were told to achieve 60% by the end of January.
And here is the dev plan:
[[../../../assets/images/competencies/dev-plan-09-11-25.png]]
* Next week:
- Competencies to do:
- Aware of the Benefits of Normalisation
- Aware of PowerShell, Python, Bash and Pester
- Aware of Lean, Agile & extreme programming Principles
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP

View File

@@ -1,87 +0,0 @@
#+TITLE: [16-11-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE:<2025-11-10 Mon 17:44>
#+filetags: :review:
#+WIP:
* Previous Week List:
- Competencies to do:
- +Aware of the Benefits of Normalisation+
- Aware of PowerShell, Python, Bash and Pester
- +Aware of Lean, Agile & extreme programming Principles+
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP
- +Understands responsive design+
- +Understands Network design+
* Weekly review:
- <2025-11-10 Mon>:
- Got assigned to create a database that can help the whole company. Value added work! The database will have system names linked to the team names. In other words, which teams are working under which systems? Also it will have the repo names and which teams own which repos.
- <2025-11-11 Tue>
- Worked on getting the DB for the system-team-repo. Met with Jez and he said to get the IPT names and use them instead. [reminder to attatch the links for this].
- Created a powershell script to load all the data into the SQL server (local)
- <2025-11-12 Wed>
- Met with the whole team monopoly (+ others). -> First time being in a group huddle
- Was interesting to see how [[https://www.yworks.com/][yworks]] is used
- <2025-11-13 Thu>
- Angular training. Was taught about the new Angular 19 changes and how to use them. Things like the the ~@~ decorator was discussed.
- <2025-11-14 Fri>
- Training on datamarts and airflow. Learnt a lot about how they can be used. I wrote a few slack messages explaining to the team what it is, and also got clarification from Filipo. Also sent a request to create a new repository for this project.
Was able to complete 4/5 competencies this week. The reason for not completing them is that Friday was used mainly for meetings and other admin tasks. In hindsight, I /could/ have completed them, as there were times when I chose to not do value added work.
[[../../../assets/sketchnotes/16-11-2025-retrospectives.svg]]
Daily retrospectives:
[[../../../assets/images/reviews/16-11-25-daily-retros.jpg]]
One thing that really helped this week is ~guac~. I was able to use this whilst at work, very handy when wanting to refer to some notes/files that is only located at home.
[[../../../assets/images/reviews/15-11-2025-guac.png]]
* Other
** Airflow/Datamart
[[../../../posts/career/airflow.org][Airflow Post]]
*** Diagram
*A work colleague has written the following and made this diagram*
[[../../../assets/images/diagrams/airflow.png]]
1. AZDO repo for our datamart to go in. Clone the data mart example template
2. Datamart, can use one big one that has different tables for everything that we need.
3. Local airflow that calls api and gets data. continuation tokens can be used. there is a good example
4. Upload everything to microlise servers where it is run automatically
5. Power bi, change data sources to be references to our sql. Can have all tables in power bi. Use filters
*** Summary that I wrote in slack:
- https://azdo.microlise.com/MicroliseCollection/Microlise/_git/DataMart.SQLServer: very useful link explaining what datamarts are, ELT (extract, load, transform) orchestration and how to set this up
- https://azdo.microlise.com/MicroliseCollection/Microlise/_git/DataMart.DataEngineering.InsightReadiness: an example of what a datamart repo looks like. in the template repo, the two important files are tsqlt and DataMartTemplate (in this instance its called InsightReadiness )
- tsqlt coverage should be above 60%
- https://microliseuk.sharepoint.com/sites/msteams_bb7636: This link is the CoP (community of practice) for the airflow. You'll find useful information regarding what apache airflow is and how to set things up.
- https://microliseuk.sharepoint.com/sites/msteams_bb7636/SitePages/Getting-started-with-Airflow.aspx: This link tells you how to set airflow up locally. Once you're done, this will be published to an airflow scheduler platform. Keep in mind that when you want to publish this, document that it succeeds in the PR.
- Just a summary from Filippo:
- A DataMart it's simply a database that is made ad-hoc to contain a certain subset of data (Specific tables with specific columns).
- Once that is created Airflow is used to put data in that database. So it extract data from other sources (APIS, databases) and loads it into the datamart we have created.
- Once you get Airflow locally working and a new Datamart (deployed locally) you can then write a dag to load data into the Mart.
- http://airmastqa01.mms.local:8080/home: this link shows all the DAGs that are currently running in a testing environment, and when they are scheduled. Login using MSUP (edited)
- http://airmastprd01.mms.local:8080/home: This link is the prod version
- https://azdo.microlise.com/MicroliseCollection/Microlise/_git/DevDocs?path=/Airflow/HowTo/PowerBiReportRefresh.md&version=GBmain&_a=preview: Might prove to be useful when we do the powerbi refresh thing...
* Next week:
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP
- Aware of PowerShell, Python, Bash and Pester

View File

@@ -1,76 +0,0 @@
#+TITLE: [23-11-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-11-17 Mon 18:05>
#+filetags: :review:
#+WIP:
* Previous Week List:
- Competencies to do:
- +Aware of PowerShell, Python, Bash and Pester+
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP
There wasn't much time to do competencies this week because the new sprint started. We were told that this project should ideally be finished within the next two weeks so that we can start working on some other things (Angular related; Kevin did say that it would be related to creating a system that shows who makes the commits, how often and the relationship between committers).
* Weekly Review
- <2025-11-17 Mon>:
- Created a new repository for the team using the #help-azdo channel.
- Set up this repo by renaming references etc.
- Played around with datamarts, got the team and system tables working, although haven't yet written the ~tSQLt~ tests for them yet.
- <2025-11-18 Tue>
- Demo-ed the STR (system team repo) database.
- Started to create the tables for the Mean time to restore and lead time for change.
- <2025-11-19 Wed>
- Finished off creating the data tables for MTTR and LTTC
- <2025-11-20 Thu>
- Started creating Airflows for the repositories table
- <2025-11-21 Fri>
- Data science training, Research Operations, Kafka, Airflow
** Daily retrospectives:
[[../../../assets/images/reviews/23-11-25-daily-retros.jpg]]
** Weekly retrospectives
[[../../../assets/sketchnotes/23-11-2025-retrospectives.svg]]
* Other
** Books
As I finished another book and also spent some time adding more services, I wanted to collate a list of books (of a wide genre) to read. One I came across is [[https://theinvisiblementor.com/ikigai-the-japanese-secret-to-a-long-and-happy-life-summary/][Ikigai]].
** reader.zainezq.com
Something interesting I found when I wanted to take notes on the book called /The Toyota Way/; this is a service that lets you read books as well as convert a ~pdf~ file to ~epub~.
[[../../../assets/images/reviews/23-11-2025-reader.png]]
** booksvnc.zainezq.com
In order to add books, edit metadata and start the server for the ~reader.zainezq.com~
[[../../../assets/images/reviews/23-11-2025-vnc.png]]
** netdata.zainezq.com
One thing I wanted to have information for is:
#+BEGIN_SRC bash
uname -a
hostnamectl
cat /etc/os-release
lscpu
free -h
lsblk -f
df -h
ip a
#+END_SRC
[[../../../assets/images/reviews/23-11-2025-netdata.png]]
* Next Week
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP

View File

@@ -1,165 +0,0 @@
#+TITLE: [30-11-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-11-30 Sun 17:09>
#+filetags: :review:
#+WIP:
* Previous Week List:
- Competencies to do:
- +Aware of relational databases+
- +Aware of TLS and SSL+
- +Aware of good error handling and logging+
- Understanding of TCP/IP
- Understands Server Operating Systems (might be tough)
Been extremely busy with this sprint, getting the work delivered in a timely manner; there wasn't as much time to focus on competencies.
* Weekly Review
- <2025-11-24 Mon>:
- Got the news the company is reducing staff. See this [[https://www.thebusinessdesk.com/eastmidlands/news/2104597-microlise-issues-profit-warning-after-weaker-than-expected-trading][article]]
- Got the DAG for PR's to work
- <2025-11-25 Tue>
- Worked mainly on threads and commits DAGs
- <2025-11-26 Wed>
- We had a meeting with Kevin on the scoring system for the redundancy thing
- Finished creating and testing all the DAG's
- <2025-11-27 Thu>
- Refinement meeting
- Started creating base case tests for SQL
- Made a script to automate the creation of testing files
- <2025-11-28 Fri>
- Finished base case tests
- Training with Lloyd on SRE and Techops
** Daily retrospectives:
[[../../../assets/images/reviews/30-11-25-daily-retros.jpg]]
** Weekly retrospectives
[[../../../assets/sketchnotes/30-11-2025-retrospectives.svg]]
* Other
** Powershell script:
Here is the powershell script that generates the files for testing:
#+BEGIN_SRC ps1
# Define the base folders
$securityFolder = "C:\Users\zqayyum\Source\Repos\DataMart.Academy.DoraMetrics\tsqlt\Security"
$scriptsFolder = "C:\Users\zqayyum\Source\Repos\DataMart.Academy.DoraMetrics\tsqlt"
# Create base folders if they don't exist
if (!(Test-Path $securityFolder)) { New-Item -ItemType Directory -Path $securityFolder }
if (!(Test-Path $scriptsFolder)) { New-Item -ItemType Directory -Path $scriptsFolder }
# Define main file names (schemas)
$fileNames = @(
"testMergeStagingDataCommits.sql",
"testMergeStagingDataEnvironments.sql",
"testMergeStagingDataPullRequests.sql",
"testMergeStagingDataReleases.sql",
"testMergeStagingDataRepositories.sql",
"testMergeStagingDataThreads.sql"
)
# Define stored procedure test files
$storedProcFiles = @(
"Test changed rows are logged.sql",
"Test changed rows are not logged as inserted.sql",
"Test changed rows are updated.sql",
"Test errors are logged.sql",
"Test import date on changed rows is updated.sql",
"Test new rows are inserted.sql",
"Test new rows are not logged as updated.sql"
)
foreach ($name in $fileNames) {
# Create .sql file under Security
$filePath = Join-Path $securityFolder $name
$schemaName = [System.IO.Path]::GetFileNameWithoutExtension($name)
# Content for schema file
$schemaContent = @"
CREATE SCHEMA [$schemaName]
AUTHORIZATION [dbo];
GO
EXECUTE sp_addextendedproperty
@name = N'tSQLt.TestClass',
@value = 1,
@level0type = N'SCHEMA',
@level0name = N'$schemaName';
GO
"@
Set-Content -Path $filePath -Value $schemaContent
# Create schema folder under Scripts
$schemaFolderPath = Join-Path $scriptsFolder $schemaName
if (!(Test-Path $schemaFolderPath)) {
New-Item -ItemType Directory -Path $schemaFolderPath | Out-Null
}
# Create Stored Procedures subfolder
$storedProcFolderPath = Join-Path $schemaFolderPath "Stored Procedures"
if (!(Test-Path $storedProcFolderPath)) {
New-Item -ItemType Directory -Path $storedProcFolderPath | Out-Null
}
# Create stored procedure files with dynamic content
foreach ($procFile in $storedProcFiles) {
$procFilePath = Join-Path $storedProcFolderPath $procFile
$procName = [System.IO.Path]::GetFileNameWithoutExtension($procFile)
$procContent = @"
CREATE PROCEDURE $schemaName.[$procName]
AS
BEGIN
SET NOCOUNT ON;
-- Assemble
DECLARE @RowsUpdated INT;
EXEC tsqlt.FakeTable @SchemaName = 'staging', @TableName = 'tbl_TemplateTable';
EXEC tsqlt.FakeTable @SchemaName = 'data', @TableName = 'tbl_TemplateTable';
EXEC tsqlt.FakeTable @SchemaName = 'logging', @TableName = 'tbl_ExecutionCounts';
INSERT INTO data.tbl_TemplateTable(UnitDescription, TrunionDisplacementInMM)
VALUES('UT7000', '9');
INSERT INTO staging.tbl_TemplateTable(UnitDescription, TrunionDisplacementInMM)
VALUES('UT7000', '6');
-- Act
EXEC staging.pr_MergeStagingData;
-- Assert
SELECT @RowsUpdated = RowsUpdated FROM logging.tbl_ExecutionCounts;
EXEC tsqlt.AssertEquals
@Actual = @RowsUpdated,
@Expected = 1;
END
"@
Set-Content -Path $procFilePath -Value $procContent
}
}
Write-Host "All files and folders created successfully with dynamic procedure content"
#+END_SRC
** Finances
I decided to spin up a docker container to manage finances. For the moment there is no way to connect to a Bank without using an intermediary (privacy concerns).
[[../../../assets/images/reviews/30-11-2025-acutal.png]]
* Next Week
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP

View File

@@ -1,64 +0,0 @@
#+TITLE: [07-12-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-12-07 Sun 20:34>
#+filetags: :review:
#+WIP:
* Previous Week List:
- Understands Server Operating Systems (might be tough)
- Understanding of TCP/IP
* Weekly Review:
This week has been so busy with getting the airflow working and the datamarts tested. Our team suggested to use the Friday as a 'training day', I told myself I'd work until lunch, then use the afternoon to tick off some competencies and reading, however it took me all day to finish off the DAG's.
- <2025-12-01 Mon>:
- I continued working on the Datamart testing, getting majority of the tables tested
- <2025-12-02 Tue>
- Started to work on the airflow testing
- Had our retros, demos and refinement sessions
- <2025-12-03 Wed>
- Created and finished off the suite testing for the airflows. Started to look into pipelines
- <2025-12-04 Thu>
- Fixing some airflow tests
- Started to get the STR (System Team Repo) merged into a datamart/airflow
- Made a pipeline with the help of Oliver Gamble (main and gated)
- <2025-12-05 Fri>
- Completed the airflow DAG for repositories
** Daily retrospectives:
[[../../../assets/images/reviews/07-12-25-daily-retros.jpg]]
** Weekly retrospectives:
[[../../../assets/sketchnotes/07-12-2025-retrospectives.svg]]
* Other
- In the Weekly List, I need to document things outside of competencies. The weekly review should not be limited to work.
- I added a new docker service for running a self hosted VPN (~wg-easy~). The link for this is [[https:wgeasy.zainezq.com][here]].
- I used to use a reading tracker to see which books I'm reading and have read. I want to get this back in use. An entry looks like:
#+BEGIN_SRC elisp
,* Book Title
:PROPERTIES:
:Author:
:Status:
:Group:
:STARTED:
:FINISHED:
:Category:
:END:
#+END_SRC
- The current amount of time it takes to build this website can be found using the following command: ~time emacs -Q --script build-site.el~. And currently it outputs:
#+BEGIN_SRC zsh
real 0m8.468s
user 0m7.316s
sys 0m1.068s
#+END_SRC
The old website used to take a full minute to build, so this isn't too bad (also considering the other website was much /smaller/ in comparison to this one).

View File

@@ -1,21 +0,0 @@
#+TITLE: [14-12-2025] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2025-12-09 Tue 12:12>
#+filetags: :review:
#+WIP:
* Week List:
- +Can Measure Computer Performance on Disk, CPU, RAM, Network+
- +Tests SQL queries and tSQL code+
- +Aware of Basic Infrastructure as Code Concepts+
- +Aware of Distributed Systems+
- +Can Measure Computer Performance on Disk, CPU, RAM, Network+
- +Tests SQL queries and tSQL code+
- +Aware of Archiving Procedures+
* Weekly Review:
Not much to show this week, I've been really busy trying to finalise the project, although I reckon it may take another week. I did get to do a lot more competencies at the start of the week however.
* Other

View File

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

View File

@@ -6,6 +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/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

@@ -0,0 +1,18 @@
#+TITLE: [04-01-2026] - Weekly Review
#+OPTIONS: num:nil
#+DATE: <2026-01-04 Sun 12:12>
#+filetags: :review:
#+WIP: t
#+COMMENTS: t
#+SLUG: 04-01-26-week-review
* Week To Do List:
** Probation Objectives:
* Weekly Review:
- <2025-12-29 Mon>
- +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
- +create a PR for the datamart+

View File

@@ -4,7 +4,10 @@
See the categories: @@html:<a href="../categories.html">Categories</a>@@
* Blogs:
- [[file:2025/2025-list.org][2025 List]] @@html:<span class="post-date">28-12-2025 22:00</span>@@
- [[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: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/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

@@ -1,86 +0,0 @@
#+TITLE: How to publish pages using Org Publish
#+OPTIONS: num:nil
#+DATE: <2025-11-08 Sat 10:57>
#+filetags: :website:
* How to publish web pages using ~org-publish~
This website is heavily inspired by some people who have decided to use ~org-publish~ as a way to convert ~org~ files into ~html~. I came across a few that took the plunge and decided to migrate from platforms like Wordpress and instead opted for a more transparent, text-based workflow.
The Org website[fn:1] now looks a lot better than it used to.
There is a [[https://en.wikipedia.org/wiki/Unix_philosophy][Unix philosophy]] that emphasises building simple and compact code that can be easily maintainable, and following this approach (do one thing well) aligns with this philosophy.
So how does one go about publishing web pages through Emacs's ~org-publish~? The answer is quite simple. You probably will need to have some familiarity with ~elisp~[fn:2] although it's not a must.
The first thing we will want to do is edit our ~init.el~ file, which is the *initialization* file. In this file we want to add the following:
/This is a simple and quick way of getting this setup, although there is a better and more scalable approach to this, where we have a build script that runs each time we want to generate the project. See [[file:setup.org][here]] for more details./
#+begin_src emacs-lisp
(setq org-publish-project-alist
'(("org-notes"
:base-directory "~/web"
:base-extension "org"
:publishing-directory "~/web"
:recursive t
:publishing-function org-html-publish-to-html
:with-author nil
:with-creator nil
:html-validation-link nil
:with-toc t
:section-numbers t
:html-head "<link rel=\"stylesheet\" href=\"style.css\" />"
)
("org-static"
:base-directory "~/web"
:base-extension "css\\|js\\|png\\|jpg\\|gif"
:publishing-directory "~/web/output"
:recursive t
:publishing-function org-publish-attachment)
("website" :components ("org-notes" "org-static"))))
#+end_src
What this snippet of code is doing is it is telling ~org-publish~ what **configurations** we want to use when we end up running the publish command. Under ~~/web~ is where we want to include our files. Let us take a simple example and create an ~index.org~ file:
#+begin_src emacs-lisp
,#+TITLE: Website Name
,#+OPTIONS: toc:nil num:nil
,* Welcome!
This is a simple website
#+end_src
There are some metadata at the very top as we can see, these help us customise each page the way we want to. Here I disabled the Table of Contents and section numbers just for this file. We can also create a simple ~styles.css~ file in the same directory.
After doing this, we can run the command:
#+begin_src emacs-lisp
M-x org-publish RET website
#+end_src
This will generate a html file inside the ~~/web/output/~ directory, and we can serve this file using any static site generation tools; I recommend python due to it's simplicity:
#+begin_src bash
cd ~/web/output
python3 -m http.server 8000
#+end_src
And there we go! The files are now being hosted on ~http://localhost:8000/~ and we have a fully functioning workflow for converting org files into a static website.
* Contact
Feel free to reach out on GitHub: https://github.com/zainezq
[fn:1] See: https://orgmode.org/manual/Publishing.html
[fn:2] Emacs Lisp is a Lisp dialect made for Emacs. See: https://en.wikipedia.org/wiki/Emacs_Lisp