From 442e3bed97125fc1f9a6999ce2051b363ad0ff6b Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Tue, 5 Mar 2024 16:29:28 +0000 Subject: [PATCH 01/38] Add 360 to CV --- cv.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cv.html b/cv.html index 17d8f9f..cb8e257 100644 --- a/cv.html +++ b/cv.html @@ -38,6 +38,13 @@

Experience/Employment History

+
+

360

+

May 2023 - Current

+

Position: Developer

+

As part of the development team at 360, I spent my time working full-stack on the numerous client sites. This was almost entirely using a Laravel stack, with Bootstrap, Jquery, and vanilla CSS.

+

Skills: PHP Laravel Jquery Bootstrap SQL

+

TJS

April 2021 - January 2023

From 5ed12ffb592c5f740a2d9639be42dc15de48281d Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Tue, 19 Mar 2024 16:09:36 +0000 Subject: [PATCH 02/38] Add placehold.co to websites list --- websites.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/websites.html b/websites.html index bdd765a..d98c078 100644 --- a/websites.html +++ b/websites.html @@ -50,7 +50,8 @@
  • vecta.io/nano
  • tinypng.com
  • webaim.org/resources/contrastchecker/
  • -
  • via.placeholder.com - example
  • +
  • via.placeholder.com (raster) - example
  • +
  • placehold.co (vector) - example
  • From d48b2e8a849f8ee6147c258086bf7430a9cc33fb Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Tue, 30 Apr 2024 20:18:03 +0100 Subject: [PATCH 03/38] Update dark theme BG --- main.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main.css b/main.css index 1335390..79ce9dd 100644 --- a/main.css +++ b/main.css @@ -15,7 +15,7 @@ z-index:9} nav>a{ padding:.2rem 0; display:block; -border-top:1px dotted #101} +border-top:1px dotted #211F1C} nav>a:first-child{border:none} h1,h2,h3,h4,h5,h6{line-height:1} @@ -124,17 +124,17 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} img{width:100%;height:auto} } @media(prefers-color-scheme:dark){ - body{color:#CCC;background:#101} + body{color:#CCC;background:#211F1C} a:link,a:visited{color:#9CF} a:hover,a:visited:hover{color:#C34} - nav{background:#101;border-color:#555} + nav{background:#211F1C;border-color:#555} nav>a{border-color:#555} .burger-container{border:2px solid #555;background:#555;} .burger,.burger::after,.burger::before{background:#EEE} h1{color:#FFF}h2{color:#EEE} h3,h4,h5,h6{color:#DDD} td,th{border-color:#444} - thead tr{background:#101} + thead tr{background:#211F1C} tbody tr:nth-child(odd){background:#222} tbody tr:hover{background:#333} pre{background:#333;color:#EEE;border-color:#555} From 74f4dc54227b267ca21a8f5bd8eef645486e8df8 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 12 May 2024 17:25:11 +0100 Subject: [PATCH 04/38] Update sitemap (also with file extensions) --- sitemap.xml | 192 +++++++++++++++++++++++++++++----------------------- 1 file changed, 106 insertions(+), 86 deletions(-) diff --git a/sitemap.xml b/sitemap.xml index f989e24..1e13cd2 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -9,227 +9,247 @@ https://aney.co.uk/ - 2022-11-18T12:24:40+00:00 + 2024-05-10T21:55:29+00:00 1.00 - https://aney.co.uk/about - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/about.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/projects - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/projects.html + 2024-05-10T21:55:29+00:00 0.80 https://aney.co.uk/blog/ - 2022-11-21T09:35:03+00:00 + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/sitemap - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/sitemap.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/support - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/support.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/equipment - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/equipment.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/blog/reducing-homelab - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/blog/reducing-homelab.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/guides/guide-to-server-hosting - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/guide-to-server-hosting.html + 2024-05-10T21:55:29+00:00 0.80 - https://aney.co.uk/cv - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/cv.html + 2024-05-11T17:32:29+00:00 0.80 https://aney.co.uk/guides/ - 2022-11-18T12:24:40+00:00 + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/web-dev-101 - 2022-11-18T12:48:36+00:00 + https://aney.co.uk/guides/web-dev-101.html + 2024-05-10T21:55:29+00:00 0.64 https://aney.co.uk/recipes/ - 2022-11-18T12:24:40+00:00 + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/blog/burger-menu - 2022-11-21T09:35:03+00:00 + https://aney.co.uk/blog/release-0.9.0.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/blog/blog-thoughts-220822 - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/blog/burger-menu.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/blog/my-steamdeck-arrived - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/blog/blog-thoughts-220822.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/blog/ive-started-a-blog - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/blog/my-steamdeck-arrived.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/websites - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/blog/ive-started-a-blog.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/server-install-debian - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/websites.html + 2024-05-11T17:32:29+00:00 0.64 - https://aney.co.uk/guides/initial-server-setup - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/server-install-debian.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/get-a-domain-name - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/initial-server-setup.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/add-domain-to-server - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/get-a-domain-name.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/nginx-install - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/add-domain-to-server.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/setup-nginx-website - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/setup-qemu-kvm.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/certbot-ssl - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/setup-kvm-bridge.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/nginx-web-optimisation - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/install-kvm-virtual-machine.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/add-php-to-nginx - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/kvm-optimisation.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/install-mysql-mariadb - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/virsh-cheatsheet.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/sql-cheatsheet - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/nginx-install.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/adminer-setup - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/setup-nginx-website.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/backup-mysql-mariadb - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/certbot-ssl.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/backup-with-rsync - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/nginx-web-optimisation.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/backup-with-rdiff - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/add-php-to-nginx.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/backup-with-cron - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/install-mysql-mariadb.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/setup-qemu-kvm - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/sql-cheatsheet.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/setup-kvm-bridge - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/adminer-setup.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/install-kvm-virtual-machine - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/backup-mysql-mariadb.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/virsh-cheatsheet - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/backup-with-rsync.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/vm-seperation-of-concerns - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/backup-with-rdiff.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/nginx-proxy - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/backup-with-cron.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/password-protect-webpage - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/nginx-proxy.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/setup-git-server - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/password-protect-webpage.html + 2024-05-10T21:55:29+00:00 0.64 - https://aney.co.uk/guides/your-first-webpage - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/guides/setup-git-server.html + 2024-05-10T21:55:29+00:00 + 0.64 + + + https://aney.co.uk/guides/webpage-to-website.html + 2024-05-10T21:55:29+00:00 + 0.51 + + + https://aney.co.uk/guides/your-first-webpage.html + 2024-05-10T21:55:29+00:00 + 0.51 + + + https://aney.co.uk/guides/set-static-ip.html + 2024-05-10T21:55:29+00:00 + 0.51 + + + https://aney.co.uk/guides/vm-seperation-of-concerns.html + 2024-05-10T21:55:29+00:00 0.51 - https://aney.co.uk/guides/set-static-ip - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/recipes/woky-beef-stew.html + 2024-05-10T21:55:29+00:00 0.51 - https://aney.co.uk/recipes/woky-beef-stew - 2022-11-18T12:24:40+00:00 + https://aney.co.uk/test.html + 2024-05-10T21:55:29+00:00 0.51 From e99e3d547c30a424604447361d926597c9a6f90b Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 12 May 2024 18:17:05 +0100 Subject: [PATCH 05/38] Accessible anchor, and CSS colour change --- main.css | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/main.css b/main.css index 79ce9dd..173fd18 100644 --- a/main.css +++ b/main.css @@ -5,7 +5,7 @@ header hr{display:none} body{ max-width:768px; margin:auto;padding:0 1.24rem; -font:1.2rem/1.62 sans-serif;color:#444; +font:1.2rem/1.62 sans-serif;color:#556; display:-webkit-flex;display:-ms-flexbox;display:flex; flex-direction:column} main{flex:1 0 auto} @@ -14,16 +14,14 @@ box-sizing:border-box; z-index:9} nav>a{ padding:.2rem 0; -display:block; -border-top:1px dotted #211F1C} -nav>a:first-child{border:none} +display:block} h1,h2,h3,h4,h5,h6{line-height:1} header h1{margin:1.4rem 52px 1.2rem auto} h1{color:#000}h2{color:#111}h3{color:#222} h4,h5,h6{color:#333} -a{text-decoration:none} +a{text-decoration:none; border-bottom: 1px dotted #999} a:link,a:visited{color:#07C} a:hover,a:visited:hover{color:#1AE} @@ -101,8 +99,8 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} @media print{body{max-width:none}} @media(min-width:720px){ body{margin:.2rem auto} - nav>a{margin-left:2rem;padding:auto;display:inline;border:none} - nav>a:first-child{padding:1rem 0;margin-left:0} + nav>a{margin-left:2rem;display:inline;border:none} + nav>a:first-child{margin-left:0} ul li{margin:auto} .burger-container{display:none} #burger-toggle~nav,header hr{display:block} @@ -133,7 +131,7 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} .burger,.burger::after,.burger::before{background:#EEE} h1{color:#FFF}h2{color:#EEE} h3,h4,h5,h6{color:#DDD} - td,th{border-color:#444} + td,th{border-color:#556} thead tr{background:#211F1C} tbody tr:nth-child(odd){background:#222} tbody tr:hover{background:#333} @@ -153,7 +151,7 @@ border:1px solid; padding: 1rem; } input,select,textarea{ -font:1.2rem/1.62 sans-serif;color:#444; +font:1.2rem/1.62 sans-serif;color:#556; border:1px solid #CCC; } textarea{ @@ -162,9 +160,9 @@ resize: vertical; input,select,textarea{ background: #EEE; -border: 2px solid #444; +border: 2px solid #556; box-sizing: border-box; -color: #444; +color: #556; display: block; line-height: 1; vertical-align: top; From c3dabd34aa8db606b9200465490a19a8a2d610b1 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Mon, 13 May 2024 13:22:28 +0100 Subject: [PATCH 06/38] Increase body font size, reduce line height --- main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.css b/main.css index 173fd18..53ba0e9 100644 --- a/main.css +++ b/main.css @@ -5,7 +5,7 @@ header hr{display:none} body{ max-width:768px; margin:auto;padding:0 1.24rem; -font:1.2rem/1.62 sans-serif;color:#556; +font:1.25rem/1.5 sans-serif;color:#556; display:-webkit-flex;display:-ms-flexbox;display:flex; flex-direction:column} main{flex:1 0 auto} From a00fff38831df257255e9deaafe6d65877f0ea81 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 16 Jun 2024 19:56:11 +0100 Subject: [PATCH 07/38] CSS changes, and seperation --- css/test.css | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ main.css | 55 ++-------------------------------------------------- 2 files changed, 54 insertions(+), 53 deletions(-) create mode 100644 css/test.css diff --git a/css/test.css b/css/test.css new file mode 100644 index 0000000..bd2e308 --- /dev/null +++ b/css/test.css @@ -0,0 +1,52 @@ +/* Form stuff */ +/* If I do a CSS framework, it'll need to have a reset too... */ +/* e.g. https://github.com/necolas/normalize.css/blob/master/normalize.css +https://byby.dev/normalize-css#:~:text=css%23css%2Dresets-,Normalize.,experience%20for%20each%20web%20browser. +https://www.joshwcomeau.com/css/custom-css-reset/ +*/ +form{ +border:1px solid; +padding: 1rem; +} +input,select,textarea{ +font:1.2rem/1.62 sans-serif;color:#556; +border:1px solid #CCC; +} +textarea{ +resize: vertical; +} + +input,select,textarea{ +background: #EEE; +border: 2px solid #556; +box-sizing: border-box; +color: #556; +display: block; +line-height: 1; +vertical-align: top; +transition-duration:.2s; +} +input,textarea{ +width:100%; +} +input[type="checkbox"]{ +display:inline-block; +} +input:focus,select:focus,textarea:focus { + border-color: #9CF; +} +@media(min-width:720px){ + input,select,textarea{ + display:inline-block; + max-width:50%; /* so half it can be, with margins factored in... */ + max-width:346.8px; + } + input,textarea{ + width:auto; + } +} +@media(prefers-color-scheme:dark){ + input,select,textarea{ + background:#CCC;border-color:#CCC; + } +} diff --git a/main.css b/main.css index 53ba0e9..a5474f4 100644 --- a/main.css +++ b/main.css @@ -65,6 +65,7 @@ background:#FFF;z-index:10} clip:auto;overflow:auto; height:auto;width:auto} .tblcon{overflow-x:auto} +footer {padding-bottom:.7rem} footer p{margin:0} table{text-align:left;width:100%; @@ -137,58 +138,6 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} tbody tr:hover{background:#333} pre{background:#333;color:#EEE;border-color:#555} code{background:#333} - .tag{border-color:#555} + .tag{border-color:#555;cursor:default} } -/* Form stuff */ -/* If I do a CSS framework, it'll need to have a reset too... */ -/* e.g. https://github.com/necolas/normalize.css/blob/master/normalize.css -https://byby.dev/normalize-css#:~:text=css%23css%2Dresets-,Normalize.,experience%20for%20each%20web%20browser. -https://www.joshwcomeau.com/css/custom-css-reset/ -*/ -form{ -border:1px solid; -padding: 1rem; -} -input,select,textarea{ -font:1.2rem/1.62 sans-serif;color:#556; -border:1px solid #CCC; -} -textarea{ -resize: vertical; -} - -input,select,textarea{ -background: #EEE; -border: 2px solid #556; -box-sizing: border-box; -color: #556; -display: block; -line-height: 1; -vertical-align: top; -transition-duration:.2s; -} -input,textarea{ -width:100%; -} -input[type="checkbox"]{ -display:inline-block; -} -input:focus,select:focus,textarea:focus { - border-color: #9CF; -} -@media(min-width:720px){ - input,select,textarea{ - display:inline-block; - max-width:50%; /* so half it can be, with margins factored in... */ - max-width:346.8px; - } - input,textarea{ - width:auto; - } -} -@media(prefers-color-scheme:dark){ - input,select,textarea{ - background:#CCC;border-color:#CCC; - } -} From 77ab0c0e58d588c499f33d98cfd2149c097d7a7d Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 16 Jun 2024 19:56:40 +0100 Subject: [PATCH 08/38] Add newly seperated CSS --- test.html | 1 + 1 file changed, 1 insertion(+) diff --git a/test.html b/test.html index 16d9eff..d8f4b27 100644 --- a/test.html +++ b/test.html @@ -8,6 +8,7 @@ + HTML element test page From de8594c69cdfd5e6af63f9af08efe4bcfe928b1c Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 16 Jun 2024 19:57:48 +0100 Subject: [PATCH 09/38] Page corrections --- cv.html | 2 +- guides/guide-to-server-hosting.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cv.html b/cv.html index cb8e257..7f01e1c 100644 --- a/cv.html +++ b/cv.html @@ -42,7 +42,7 @@

    360

    May 2023 - Current

    Position: Developer

    -

    As part of the development team at 360, I spent my time working full-stack on the numerous client sites. This was almost entirely using a Laravel stack, with Bootstrap, Jquery, and vanilla CSS.

    +

    As part of the development team at 360, I spend my time working full-stack on the numerous client sites. This is almost entirely using a Laravel stack, with Bootstrap, Jquery, and vanilla CSS.

    Skills: PHP Laravel Jquery Bootstrap SQL

    diff --git a/guides/guide-to-server-hosting.html b/guides/guide-to-server-hosting.html index 447293a..48f377a 100644 --- a/guides/guide-to-server-hosting.html +++ b/guides/guide-to-server-hosting.html @@ -16,7 +16,7 @@
    Jump directly to main content -

    Aney' guide to server hosting

    +

    Aney's guide to server hosting


    @@ -53,7 +53,7 @@
  • TODO:Install a virtual machine
  • TODO:Optimisate KVM Virtual Machines
  • TODO:Virsh cheatsheet
  • -
  • Example of Separation of Concerns (SoC)
  • +
  • Example of Separation of Concerns (SoC)
  • Nginx Webserver

    From f6c76b435246dc233da5430c9215168a99cd1c0c Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 16 Jun 2024 20:06:57 +0100 Subject: [PATCH 10/38] Home/About/Equipment Content Update --- about.html | 19 ++++------ equipment.html | 96 ++++++++++++++++++++++++++++---------------------- index.html | 10 ++---- 3 files changed, 63 insertions(+), 62 deletions(-) diff --git a/about.html b/about.html index 47f6f78..290c2a5 100644 --- a/about.html +++ b/about.html @@ -33,21 +33,18 @@

    Who are you

    -

    I'm Aney, a developer, and self-hoster that enjoys art/design, automation, Unix, and those pesky Japanese cartoons. Yes, that's a straight up rip from the homepage, why re-invent the wheel right?

    - -

    I set this website up as a means to share information to educate, and help people, as well as to easily point people to my answers for common questions.

    +

    A developer, and self-hoster that enjoys art/design, automation, Unix, and intentional living.

    What do you do?

    -

    I'm currently taking some time away from work, but looking for places I believe I'd be a good fit. I love solving problems, optimising sites, and creating designs/experiences, so I'm kind of a developer at heart.

    -

    Outside of work I practise minimalism, frugalism (to an extent), and work towards Financial Independance (FI/RE). I also love the idea of OneBagging, self-sufficiency, and travelling, so these are things I'm trying to work towards.

    +

    I'm a web developer. Currently working for 360. For more details, and previous employement check my CV.

    -

    What else do you do?

    -

    Ok sure, I'm (extremely) slowly working on the basic infrastructure, and website for aNetwork, a gaming community, and public game server host. I'm also working on writing guides on server hosting, and web development.

    -

    If there's ever anything else, you can find out more on my projects page, or on my blog.

    +

    What do you do, that isn't work?

    +

    Outside of work I work on writing guides on server hosting, and web development.

    +

    I keep a little Blog, work on other Projects, and often play video games with friends, read, or watch video media. I try to walk a few times each day, and do some very minor exercise.

    What do you own?

    -

    Following up on the minimalism, it seem you've almost got to do an "everything I own" to prove you only have 6 items in your possession. I'm not that bad, yet, but I honestly feel like that's like my little hidden goal.

    -

    I've got a few pages about this on the site, so if you do want to know, check out:

    + +

    Maybe this seems a little odd, but as I also practise minimalism, frugalism, and work towards OneBagging, Financial Independance (FI/RE), no-waste, and intentional living. I thought I'd add this, so I can have some public facing 'accountability' as such.

    -

    Why are you telling me this?

    -

    I figured it'd make for an easy introduction for anyone who stumbles across my site.

    diff --git a/equipment.html b/equipment.html index d5e5ff8..4d15d3e 100644 --- a/equipment.html +++ b/equipment.html @@ -38,79 +38,91 @@

    Daily Driver

    -

    Undetermined. I'm looking for something super thin, and light that runs linux for dev, and ~3-5 VMs.

    +

    I use a Latitude 7320, with an i7-1185G7, 16GB RAM, and a 500GB Samsung Evo Plus NVME, running Windows 11 Pro.

    Peripherals

    -

    Monitor: Philips E-Line 227E4LHAB 21.5" LCD

    -

    Keyboard: Razer Blackwidow Lite

    -

    Mouse: Logitech MX Master

    -

    Microphone: Blue Yeti

    -

    Speakers: Logitech Z200

    -

    Backup USB: 64GB Sandisk

    -

    USB C Hub: Lemorele 6-in-1

    -

    Laptop Stand: Non-brand, basic-bitch stand

    +
      +
    • Secondary Monitor: ARZOPA Portable Monitor, S1 Table 15.6" 1920x1080
    • +
    • Monitor Stand: Urlixin Tablet Stand
    • +
    • Mouse: Logitech MX Master 3
    • +
    • Backup SD: 32GB Sandisk Ultra
    • +
    • Backup USB: 64GB Sandisk Ultrafit
    • +
    • Laptop Stand: K-MART adjustable laptop stand
    • +
    • Mouse Mat: A Dota 2 mousemat from a bundle years yonder
    • +
    • Charger: Anker Nano II and a 3M Anker 100W USB-C Cable
    • +

    Misc.

    -

    Mobile: Google Pixel 4a

    -

    Power Bank: 10,000mAh PowerAdd Pilot 2GS

    -

    Wireless Earphones: Tozo T12

    +
      +
    • Mobile: Google Pixel 8a
    • +
    • Power Bank: Anker PowerCore III 19K
    • +
    • Travel Adapter: MOMAX 70w Universal Travel Adapter
    • +
    • Bluetooth Speaker: Soundcore Mini 3
    • +
    • Bluetooth Earphones: Kovebble Bluetooth Headphones
    • +
    • 3.5mm Earphones: Blukar Headphones
    • +
    • USB C Hub: Lemorele 6-in-1
    • +
    • Cables: 5 assorted lengths of USB-A/USB-C to USB-C cables
    • +
    • Adapter: Google USB A to USB C adapter
    • +
    • Seconday SD: RPI 16GB MicroSD to SD card
    • +
    • Router: TP-Link AX3000
    • +
    • PowerLine Adapter(s): TP-Link Passthrough
    • +
    -
    -

    Gaming PC

    -

    Red, a custom built machine sporting an R5 2600X, 16GB RAM, a 500GB EVO 970 NVME, and a Vega 64. This is my only device running Windows.

    -

    I currently still have this to play Windows exclusive games/games without Linux Anti-Cheat enabled (Smite namely) with friends. Once HiRez sort their shit, it's gone.

    -

    Steam Deck

    -

    I also have a Steamdeck, which will 100% be my gaming PC once games I need Windows for get sorted.

    +
    +

    Gaming

    + +

    Acer Nitro AN515-57

    +

    Nitro 5, with an i5-11400H, 16GB RAM, RTX 3050, 512GB+250GB NVME

    + +

    Steam Deck

    +

    I also have a 256GB Steam Deck (Original), with a 512GB SD card, for couch, and chill games. This is often accompied (for couch gaming) with a PS4 controller, and a Dock.

    Media Consumption

    -
    -

    TV

    -

    A basic non-smart TV from the good ol' days. I got it for my 16th Birthday, around 10 years ago.

    -

    Fire TV Stick 4K

    -

    Since my TV is useless alone, and I don't watch traditional television, this is plugged in to give me access to Netflix, Amazon Video, and Jellyfin.

    -
    - -
    -

    Amazon Echo 4

    -

    I don't use this for anything other than playing music. It stays next to the TV waiting for me to say "Alexa, play We like to party, by the Vengaboys." - -

    Amazon Echo 3

    -

    Same as above, but this one's upstairs so the music plays uninterupted through the house

    -
    +

    For shows, I use an old TV I got from my 16th birthday, that fuzzes when it's on paired with an Amazon Fire Stick 4K.

    +

    Youtube, and other 'non-regular' media is watched straight from my laptop, or phone.

    +

    As for music I use my phone connected to my Soundcore Mini 3, or just listen from my laptop.

    Servers

    + +
    +

    Local/Physical

    +

    pi1: Raspberry Pi 5 8GB, with a 240GB SSD.

    +

    pi2: Raspberry Pi 4B 4GB, with an 8GB USB, and 4TB Seagate BarraCude HDD connected by a WavLink Sata Dock.

    +
    +
    -

    lilman

    -

    An HP 290 G1 MT, with an i5-7500, and 32GB RAM. This was my primary server, acting as my virtualisation host, NAS, adBlock, and media server. It also runs git, my game servers, and anything else I feel like hosting at the time. A consideration is upgrading to a 7700/7700K, but UK energy issues had me switching to RPIs for a while.

    +

    Offsite/VPS

    +

    rn2: Racknerd, 1C E5-2680, 768M RAM, 12GB SSD

    +

    av1: AlphaVPS, 1C E5, 512M RAM, 128GB HDD

    Unused/Spares

    -

    Besides what I've listed, I also have the following PCs;

    +

    Besides what I've listed, I also have the following;

      -
    • 1U Server
    • -
    • Thinkpad x220 - Broken currently
    • -
    • Thinkpad x201
    • Thinkpad x200
    • +
    • Thinkpad x201
    • +
    • Thinkpad x220
    • Thinkpad t420
    • -
    • rpi3B+
    • -
    • rpi3B
    • -
    • ThinkCentre (i5 4460, 16GB)
    • +
    • Raspberry Pi Zero W
    • +
    • Blue Yeti
    • +
    • Logitech Z200
    • +
    • 2x Switches
    • +
    • Spare router
    -

    I use these for one-off testing, and projects, but they are not permanent fixtures in my day-to-day life.

    diff --git a/index.html b/index.html index 7e3b55b..0ffc584 100644 --- a/index.html +++ b/index.html @@ -33,8 +33,7 @@

    I'm Aney

    -

    Somehow you've landed on my website, welcome!

    -

    I'm a developer, and self-hoster that enjoys art/design, automation, Unix, and those pesky Japanese cartoons.

    +

    A developer, and self-hoster that enjoys art/design, automation, Unix, and intentional living.

    What this, then?

    It's my little place on the world wide web. It serves the purpose of being a one-stop location I can refer people to when they ask things, like:

    -

    Where are the pictures?

    -

    I've written this website with the intention to keep it minimal, quick, small, and easily self-hosted. I decided that there was little reason to bloat the pages with images, that add little value, as all they will do is prevent people with poor internet from visiting.

    - -

    Wow! You're so cool, how can I support you?

    -

    Thanks, although I disagree.

    -

    You can support me by sharing any posts, and/or pages you enjoy to your friends, or by donating to me via my Support page.

    +

    If you've found my site useful, you can support me by sharing any posts, and/or pages you enjoy to your friends, or by donating to me via my Support page.

    From 04fc61bcd9caf0457c4cfd65935b5a3702a51aed Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Mon, 17 Jun 2024 14:19:52 +0100 Subject: [PATCH 11/38] Create 'bedroom' page --- about.html | 2 +- bedroom.html | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 bedroom.html diff --git a/about.html b/about.html index 290c2a5..121f0e0 100644 --- a/about.html +++ b/about.html @@ -48,7 +48,7 @@
    • My hardware/tech
    • My kitchen
    • -
    • Living Room and Bedroom
    • +
    • Living Room and Bedroom
    • Collectables and Sentimental
    • Misc
    diff --git a/bedroom.html b/bedroom.html new file mode 100644 index 0000000..d8205cf --- /dev/null +++ b/bedroom.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + My Bedroom Belonging + + + +
    + Jump directly to main content +

    Aney's Bedroom

    + + +
    + +
    +
    + +
    +
    +

    My Bedroom Belongings

    + +

    The items that typically live in my bedroom, assuming I'm currently staying in the house.

    + +
    +

    Bed

    +

    My bed, made up of a base, memory foam topped mattress, a duvet, two pillows, and a headboard.

    + +

    Atop the bed:

    +
      +
    • Buc-ee's throw
    • +
    • Pyjama bottoms
    • +
    • Croca (my teddy crocodile)
    • +
    + +

    On/around the headboard:

    +
      +
    • Reading lamp/torch
    • +
    • Sleeping mask
    • +
    +
    + +
    +

    Bedside Cabinet

    +

    A generic 3 tiered bedside cabinet my Grandad gave me.

    + +

    Atop the cabinet:

    +
      +
    • Lamp
    • +
    • Current book I'm reading
    • +
    • Croca (my teddy crocodile)
    • +
    + +

    First drawer:

    +
      +
    • Pocket notebook(s)
    • +
    • Travel Toiletry bag (with any toiletries not currently in use)
    • +
    • Hayfever/wet wipes
    • +
    • Tablets, vitamins, beard cream, chewing gum
    • +
    • Grip strengthener
    • +
    + +

    Second drawer:

    +
      +
    • 1x pair of jeans
    • +
    • 2x t-shirts
    • +
    • 1x pyjama bottoms
    • +
    + +

    Third drawer:

    +
      +
    • 2x bamboo socks
    • +
    • 2x bombas socks
    • +
    • 2x bamboo underwear
    • +
    • Merino wool gloves
    • +
    • Merino wool buff
    • +
    • Wooly hat
    • +
    + +

    Beneath:

    +
      +
    • Rpi5 8GB **
    • +
    • 240GB SSD (with USB to Sata adapter) **
    • +
    • Router **
    • +
    +
    + +
    +

    Hanger

    +

    This is a small 4 knobbed hanger attached to the boiler door.

    +
      +
    • 2x Jumpers
    • +
    • Sling/Bumbag *
    • +
    +
    + +
    +

    Cabinet

    +

    A medium sized four tiered plastic cabinet, it cost ~£10.

    + +

    Atop:

    +
      +
    • Pencil case *
    • +
    + +

    First drawer:

    +
      +
    • SAD Lamp
    • +
    • Small sewing kit
    • +
    + +

    Second drawer:

    +
      +
    • 7.5m auto locking tape
    • +
    + +

    Third drawer:

    +
      +
    • Skipping rope
    • +
    • Second monitor, and stand
    • +
    + +

    Fourth drawer:

    +
      +
    • Jigsaw (puzzle)
    • +
    • Rubicks Cube
    • +
    • Light ankle weights
    • +
    • 3x medium packing cubes
    • +
    +
    + +
    +

    Makeshift Table

    +

    Next to the plastic draw, a 'table' constisting of two stools with a 1U server chassic atop.

    + +

    Atop:

    +
      +
    • Pencil holder
    • +
    + +

    Beneath:

    +
      +
    • Small rubbish bin
    • +
    +
    + +
    +

    Workspace

    +

    This sits near the window, where I can get sunlight while staring at a screen.

    + +
      +
    • Foldable desk
    • +
    • Foldable chair
    • +
    + +

    When these are not in use, they're folded up and put behind the 'table', and plastic cabinet.

    +
    + +
    +

    Other/Misc.

    + +
      +
    • Dip bar
    • +
    • TP-Link Powerline Adapter
    • +
    • Scales (No battery)
    • +
    • Backpack
    • +
    • Soundcore Mini 3 **
    • +
    • Kovebble Bluetooth Headphones **
    • +
    + +

    When these are not in use, they're folded up and put behind the 'table', and plastic cabinet.

    +
    + +
    + +
    +

    Stuff that moves around

    +

    I have a few things that don't have a 'home', but follow me where I am spending my time, whether at my desk(s), in bed, or in my pocket if I'm not in the room.

    +
      +
    • Water bottle
    • +
    • Phone, and phone stand
    • +
    • Bullet Journal (and pen)
    • +
    • Inhaler(s)
    • +
    • Allergy tablets
    • +
    • Toilet roll
    • +
    +
    + +
    +

    (*) Has more detail, but I'll likely add that to my 'OneBag' page when I get around to writing that.

    +

    (**) Listed elsewhere on the site.

    +
    + +
    + + + + + From 025cfba26cbd6a4aa82ecbfc91124c01bd5fadd1 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Wed, 19 Jun 2024 10:35:06 +0100 Subject: [PATCH 12/38] Fix deadlink --- guides/webpage-to-website.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/webpage-to-website.html b/guides/webpage-to-website.html index 6ab5494..a2f5695 100644 --- a/guides/webpage-to-website.html +++ b/guides/webpage-to-website.html @@ -112,7 +112,7 @@ footer{

    From here there are a few different directions. You could:

      -
    1. Follow along to the rest of my web-dev 101
    2. +
    3. Follow along to the rest of my web-dev 101
    4. Venture to the internet and learn everything you can about web development
    5. Setup a server, pop what you've got on the worldwide web, and call it a day
    From 8e139f98bc0527491825bfe2ca941fa54bf43cc1 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Wed, 19 Jun 2024 11:48:57 +0100 Subject: [PATCH 13/38] Add tortilla recipe --- recipes/index.html | 1 + recipes/tortillas.html | 104 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 recipes/tortillas.html diff --git a/recipes/index.html b/recipes/index.html index 39fd3ee..8f63e8a 100644 --- a/recipes/index.html +++ b/recipes/index.html @@ -37,6 +37,7 @@
    diff --git a/recipes/tortillas.html b/recipes/tortillas.html new file mode 100644 index 0000000..7bf6636 --- /dev/null +++ b/recipes/tortillas.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + Tortillas + + + +
    + Jump directly to main content +

    Tortillas

    + + +
    + +
    +
    + +
    + +
    +

    Requirements

    +

    Time: ~30 minutes

    +
      +
    • Scales
    • +
    • Wooden Spoon
    • +
    • Mixing Bowl
    • +
    • Pan
    • +
    • Stovetop
    • +
    +
    +
    +

    Ingredients

    +

    These are the ingredients for four small torillas

    +
      +
    • 100g Flour
    • +
    • 2g Coarse Salt
    • +
    • 2g Baking Powder
    • +
    • 18g Melted Butter, or 18g oil/melted lard
    • +
    • 60ml(/g) Warm Water
    • +
    +
    +
    +

    Instructions

    +
      +
    1. +

      Combine the dry ingredients

      +

      ~ 30seconds-1min

      +

      Add the flour, salt, and baking powder to a bowl.

      +

      Mix to combined.

      +
    2. +
    3. +

      Mix in the wets

      +

      ~ 1min

      +

      Melt the butter/lard.

      +

      Create a well in the centre of the dry mix, and pour in the butter, and warm water.

      +

      Mix the liquids in the well from the bottom up until it is all combined, and a dough is formed.

      +
    4. +
    5. +

      Knead, seperate, and rest

      +

      ~ 25min

      +

      Knead the dough, first in the bowl, then on a lightly floured surface.

      +

      Divide the dough into four equal portions, and coat lightly with flour.

      +

      Leave the doughballs to rest for 20mins to an hour, in a warm area.

      +
    6. +
    7. +

      Make them 'tillas

      +

      ~ 5mins

      +

      Bring your pan to a medium heat.

      +

      Roll each of the balls out into a circle, approx 6-7inches.

      +

      When the pan is hot, add each tortilla to the pan one at a time.

      +

      Cook one side for ~45s-1m, flip and cook the other for ~15-30seconds.

      +
    8. +
    +
    +
    + + + + + From 17a38b0c6ee67d23dff2bb497a1b17b2274cb7da Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Wed, 10 Jul 2024 18:11:24 +0100 Subject: [PATCH 14/38] Add affiliate links to equipment --- equipment.html | 51 +++++++++++++++++++++++++------------------------- main.css | 2 ++ 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/equipment.html b/equipment.html index 4d15d3e..174ff3f 100644 --- a/equipment.html +++ b/equipment.html @@ -38,38 +38,39 @@

    Daily Driver

    -

    I use a Latitude 7320, with an i7-1185G7, 16GB RAM, and a 500GB Samsung Evo Plus NVME, running Windows 11 Pro.

    +

    I use a Latitude 7320, with an i7-1185G7, 16GB RAM, and a 500GB Samsung Evo Plus NVME, running Windows 11 Pro.

    Peripherals

    Misc.

    @@ -89,7 +90,7 @@

    Media Consumption

    For shows, I use an old TV I got from my 16th birthday, that fuzzes when it's on paired with an Amazon Fire Stick 4K.

    Youtube, and other 'non-regular' media is watched straight from my laptop, or phone.

    -

    As for music I use my phone connected to my Soundcore Mini 3, or just listen from my laptop.

    +

    As for music I use my phone connected to my Soundcore Mini 3, or just listen from my laptop.

    @@ -97,14 +98,13 @@

    Local/Physical

    -

    pi1: Raspberry Pi 5 8GB, with a 240GB SSD.

    -

    pi2: Raspberry Pi 4B 4GB, with an 8GB USB, and 4TB Seagate BarraCude HDD connected by a WavLink Sata Dock.

    +

    pi1: Raspberry Pi 5 8GB, with an NVME board, and 256GB NVME, and 4TB Seagate BarraCude HDD connected by a WavLink Sata Dock.

    Offsite/VPS

    -

    rn2: Racknerd, 1C E5-2680, 768M RAM, 12GB SSD

    -

    av1: AlphaVPS, 1C E5, 512M RAM, 128GB HDD

    +

    rn2: Racknerd, 1C E5-2680, 768M RAM, 12GB SSD

    +

    av1: AlphaVPS, 1C E5, 512M RAM, 128GB HDD

    @@ -117,11 +117,12 @@
  • Thinkpad x201
  • Thinkpad x220
  • Thinkpad t420
  • +
  • Raspberry Pi 4 4GB
  • Raspberry Pi Zero W
  • -
  • Blue Yeti
  • -
  • Logitech Z200
  • +
  • Blue Yeti (and mic stand)
  • 2x Switches
  • Spare router
  • +
  • Generic router provided by ISP
  • diff --git a/main.css b/main.css index a5474f4..42e6c1d 100644 --- a/main.css +++ b/main.css @@ -24,6 +24,7 @@ h4,h5,h6{color:#333} a{text-decoration:none; border-bottom: 1px dotted #999} a:link,a:visited{color:#07C} a:hover,a:visited:hover{color:#1AE} +a.ref,a.ref:visited{color:#554} ul{padding-left:0;margin-left:0;list-style:inside} ul li{margin:.35rem} @@ -128,6 +129,7 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} a:hover,a:visited:hover{color:#C34} nav{background:#211F1C;border-color:#555} nav>a{border-color:#555} + a.ref,a.ref:visited{color:#DDD} .burger-container{border:2px solid #555;background:#555;} .burger,.burger::after,.burger::before{background:#EEE} h1{color:#FFF}h2{color:#EEE} From 710bc7006993c88729a88aaa38fbcbc47d0ce8d5 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sat, 14 Sep 2024 14:54:24 +0100 Subject: [PATCH 15/38] Prevent wrap on inline-code --- main.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.css b/main.css index 42e6c1d..c36c2c0 100644 --- a/main.css +++ b/main.css @@ -40,7 +40,8 @@ white-space:pre-wrap;overflow-x:auto; border:1px solid #DDD;border-radius:6px} code{ background:#EEE;padding:.2rem; -border:1px solid #DDD;border-radius:6px} +border:1px solid #DDD;border-radius:6px; +white-space:pre} pre code{border:none} blockquote{ margin:0 .2rem; From c84b2ea68aa75aa8c650a8751b121a526b78e3da Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sat, 14 Sep 2024 16:56:48 +0100 Subject: [PATCH 16/38] Add new guide, and 2024 guide section --- guides/index.html | 4 + guides/linux-file-permissions.html | 113 +++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 guides/linux-file-permissions.html diff --git a/guides/index.html b/guides/index.html index ec2480f..17701e4 100644 --- a/guides/index.html +++ b/guides/index.html @@ -38,6 +38,10 @@
  • Guide to server hosting
  • Web Development 101
  • +

    2024

    +

    2022

    • Webpage to website - 22/11/2022
    • diff --git a/guides/linux-file-permissions.html b/guides/linux-file-permissions.html new file mode 100644 index 0000000..e861d54 --- /dev/null +++ b/guides/linux-file-permissions.html @@ -0,0 +1,113 @@ + + + + + + + + + + + + + Linux File Permissions + + + +
      + Jump directly to main content +

      Linux File Permissions

      + + +
      + +
      +
      + +
      +
      +

      Having multiple users and groups with access to the same linux PC/server is great, but not everyone should have access to everything, eh.

      + +

      For this, we'll use an example file, and switch ownership between root, and our user. So run the following snippet if your're using this as a tutorial, otherwise just read on.

      +
      mkdir ~/permsExample && cd ~/permsExample && sudo touch FILENAME
      + +

      Basic File Permisssion Breakdown

      +

      For certain things, such as computers with only a few users/groups this works splendid.

      +

      If we run a ls -l FILENAME, we'll see something along the lines of the below.

      +
      -rw-r--r-- 1 root root 0 Sep 14 13:02 FILENAME
      +

      -rw-r--r-- being the permissions for User, Group, and Others which can be rwx for read, write, and executable permissions. Set in groups of 3s for User/Group/Others respectively.

      +

      root root refers to the owner user and owner group.

      + + +

      Set User/Group Ownership

      +

      Each file, and directory within UNIX has an owner user, and owner group.
      + By default when you create a file your user will be the owner, and your usergroup will be the owner group.

      + +

      This can be changed with a simple command (that may need to be run with sudo).

      +
      chown USER FILENAME
      +chown :GROUP FILENAME
      +chown USER:GROUP FILENAME
      + +

      The above snippet has the chown command run three different times with different purposes. + The first is to change just the owner user, second to change just the owner group, + and third to change both at the same time.

      + +

      So to change the owner user for FILENAME to our own user, we'd run sudo chown $USER FILENAME, then verify the change by running ls -l FILENAME.

      + +

      Set Permissions for User/Group/Others

      +

      Now we'll take a look at the file permissions that will affect the owners, and all other users.

      +

      If we look back at the ls -l FILENAME mentioned earlier you'll recall the brief -rw-r--r-- mention.

      + +

      Intro to the rw-r--r-- meaning

      +

      There are 10 dashes (-) that can be set, ignoring the first for now leaves us with 9, seperated by 3s.

      +

      The first group of three rw- in this example shows that the owner user has read/write permissons, but no executable permissions. +
      The second group r--, shows the owner group only has read permissions, not write/executable permissions. +
      And the third group r--, shows that other users have read permissions, but cannot write/execute the files.

      + +

      Set permissions

      + +

      The below commands will set read, write, and execute permissions for the user, and group and give all other users read permissions for filename.file.

      +
      chmod ug+rwx FILENAME
      +chmod o+r FILENAME
      + +

      First thing after the chmod command (and a space) can be any combination of ugoa. Referring to user, group, other, and all.

      +

      Second, immediately after the letters can be one of +,-,= which are used to add, remove, or set (exact) permissions.

      +

      Third, any combination of rwx for read, write, executable permissions.

      +

      Follow this up with a space and the file/directory name and poof, permissions are set. If you'd like to set permissions for all files within a directory (and not just new ones created), also add a -R at the end of the command.

      + +

      Set permissions by number

      +

      Many guides, examples, snippets, and such do not give their demonstration of setting permissions in the same manner as above, instead they'll use numbers, such as the below.

      +
      chmod 755 FILENAME
      + +

      This chmod command will give rwx permissions to the owner user, and rx to the owner group, and other.

      + +

      The numbers are much simpler to understand than you'd think: +
      4 = Read +
      2 = Write +
      1 = Execute/executable +

      +

      These numbers get added up and grant those permissions to the users. So 7 = rwx, 6 = rw, 5 = rx, 3 = wx, 0 = no permissions, etc.

      +

      You'll also spot that there are 3 numbers, 7,5,5. These are for user, group, and other respectively. So each rwx number up to 7 sets the permissions for different users.

      + + +

      Chmod directories

      +

      The chmod command can also be used on directories. The following example will give all permissions to all users for that directory, and all its child files/directories.

      +
      chmod a=rwx directoryName -R
      + +
      +
      + + + + + From 0546dd87450093d508b2d9a294d32b1324ed1d52 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Mon, 16 Sep 2024 10:12:09 +0100 Subject: [PATCH 17/38] Add docker install guide --- guides/docker-install.html | 119 +++++++++++++++++++++++++++++++++++++ guides/index.html | 1 + 2 files changed, 120 insertions(+) create mode 100644 guides/docker-install.html diff --git a/guides/docker-install.html b/guides/docker-install.html new file mode 100644 index 0000000..ad4f07c --- /dev/null +++ b/guides/docker-install.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + Docker Install (inc. Portainer) + + + +
      + Jump directly to main content +

      Docker Install (inc. Portainer)

      + + +
      + +
      +
      + +
      +
      +

      Docker's pretty cool. Containers are a simple way to, well containerise applications. They're essentially a virtual machine with less overhead.

      +

      This guide assumes you have a debian install, either physical or a VM (I recommend a VM).

      + +

      Installing Docker

      +

      The following is the script I use for my docker installations. Copy/Paste or throw into a file and execute it.

      + +
      sudo apt-get install ca-certificates curl gnupg
      +
      +sudo install -m 0755 -d /etc/apt/keyrings 
      +  curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      +
      +sudo chmod a+r /etc/apt/keyrings/docker.gpg
      +
      +echo \
      +  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
      +  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
      +  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      +
      +sudo apt-get update
      +
      +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      + +

      This will download add the required keyring, download the correct docker version for your PCs arhitecture, and the sources, and download the required packages.

      +

      With this docker is now installed and ready to go!

      + +

      Installing your first container, Portainer

      +

      Portainer is a web-GUI for managing docker containers, so I figure it's a good place to start.

      + +

      Docker Run

      +

      Not recommended. Use compose.

      +
      docker run -d \
      +-p 9443:9443 \
      +--name portainer \
      +--restart unless-stopped \
      +-v data:/data \
      +-v /var/run/docker.sock:/var/run/docker.sock \
      +portainer/portainer-ce:latest
      + +

      Docker Compose

      +

      My preferred way of setting up, and running containers. It makes it more managable, and easier to follow. + There are a few more 'steps' here, but that's more-so for managing the containers than a requirement.

      + +

      First off we'll create a 'docker' directory, with a 'portainer' directory within it in our home directory.

      +
      mkdir -p ~/docker/portainer && cd ~/docker/portainer && touch docker-compose.yml
      + +

      Next from within the portainer directory, open up/create docker-compose.yml. + Use your preferred text editor here, I like vim, so I'll be using it in the snippet.

      + +

      Paste the following into the file, and save it.

      +
      services:
      +  portainer:
      +    image: portainer/portainer-ce:latest
      +    container_name: portainer
      +    restart: unless-stopped
      +    security_opt:
      +      - no-new-privileges:true
      +    volumes:
      +      - /etc/localtime:/etc/localtime:ro
      +      - /var/run/docker.sock:/var/run/docker.sock:ro
      +      - ./data:/data
      +    ports:
      +      - 9443:9443
      + +

      Next we'll run docker compose, which will do as the run command did, pulling the container (if not already done so), and running it.

      + +
      sudo docker compose up -d
      + +

      Accessing Portainer

      +

      Once this has been run successfully you should be able to access portainer using the IP of the docker host, or localhost (if running docker on the same PC).

      + +

      https://localhost:9443

      +

      https://192.168.0.100:9443

      +

      + +
      +
      + + + + + diff --git a/guides/index.html b/guides/index.html index 17701e4..c970de1 100644 --- a/guides/index.html +++ b/guides/index.html @@ -40,6 +40,7 @@

    2024

    2022

    From 8afc88020bd7c4a03a6a086b41da9bbe74cd9c70 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Thu, 19 Sep 2024 17:03:40 +0100 Subject: [PATCH 18/38] Set code whitespace only for 320-719 --- main.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.css b/main.css index c36c2c0..2caa85c 100644 --- a/main.css +++ b/main.css @@ -40,8 +40,7 @@ white-space:pre-wrap;overflow-x:auto; border:1px solid #DDD;border-radius:6px} code{ background:#EEE;padding:.2rem; -border:1px solid #DDD;border-radius:6px; -white-space:pre} +border:1px solid #DDD;border-radius:6px} pre code{border:none} blockquote{ margin:0 .2rem; @@ -116,6 +115,7 @@ transition:transform 300ms cubic-bezier(.4,1,.5,1)} padding:85px 1.24rem 1.24rem; background:#FFF;border-left:1px solid #EEE; z-index:8} + code{white-space:pre} } @media(max-width:320px){ #burger-toggle~nav{display:block} From 1713ecd31e3a79f743bcd759f19de8de5d30a128 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Fri, 20 Sep 2024 17:12:21 +0100 Subject: [PATCH 19/38] Add Linux ACL guide --- guides/index.html | 1 + guides/linux-acl.html | 93 ++++++++++++++++++++++++++++++ guides/linux-file-permissions.html | 3 + 3 files changed, 97 insertions(+) create mode 100644 guides/linux-acl.html diff --git a/guides/index.html b/guides/index.html index c970de1..5b8fc5c 100644 --- a/guides/index.html +++ b/guides/index.html @@ -40,6 +40,7 @@

    2024

    diff --git a/guides/linux-acl.html b/guides/linux-acl.html new file mode 100644 index 0000000..0b7dca4 --- /dev/null +++ b/guides/linux-acl.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + Linux Access Control Lists (ACL) + + + +
    + Jump directly to main content +

    Linux Access Control Lists (ACL)

    + + +
    + +
    +
    + +
    +
    +

    Sometime linux filesystem permissions and ownership can only get you so far, for more complicated, or fine-tuned permissions we'll to use need another method, ACLs.

    +

    If you don't know much about linux file permissions I recommend you check my first guide on Linux File Permissions first, as this guide will only be covering the how-to, and not the why.

    + +

    What are ACLs?

    +

    Access Control Lists, ACL for short are essentially a filter that can be set for files and directories to allow/disallow permissions for multiple users and groups without the need to change ownerships.

    + +

    Install ACL

    +
    sudo apt install acl
    + +

    Create ACL Entries/Permissions

    + +

    Directory ACL

    +

    Like default linux permissions, the same deal applies for u,g,o/rwx. + The main difference being that alternate users/groups can be defined by name such as u:username:rw, and g:groupname:x.

    +
    setfacl -dm "u:user:rwx" DIRECTORY # New Files
    +setfacl --recursive -m "u:user:rwx" DIRECTORY # Existing Files
    +

    The above will change the permissions for the directory, and any new children created within it to be rwx for the user "user". The second part of the above will then change all existing child files/directories of the directory to those same ACL permissions.

    + +

    File ACL

    +

    Much like directory ACL, except for files. Any standalone files, or those within directories with an ACL set.

    +
    setfacl -m "u:user:rwx" FILENAME
    + + +

    View ACL Entries

    +

    Sometimes you need to check the permissions, and a ls -l will no longer cut it with ACL in use, so getfacl should be used.

    +
    getfacl FILENAME
    +

    The above will show something along the lines of:

    +
    # file: FILENAME
    +# owner: root
    +# group: root
    +user::rwx
    +user:user:rwx
    +group::r-x
    +mask::rwx
    +other::r-x
    + +

    The owner, group, user::, group::, and other::, are self-explanitory as they're basic Linux File Permission bits 'n' bobs.

    +

    mask::rwx sets the maximum permissions that can be used for the other user/groups that aren't the owners. So having rwx allows different user/groups to be able to have all permissions.

    +

    user:user:rwx shows that the user "user" has rwx permissions for the file.

    + +

    Remove ACL Entries

    + +

    If you're don't want the ACLs anymore, you can always remove them for a file/directory. Adding -R to the command will recursively remove ACL from any children too.

    +
    setfacl -b FILENAME
    + +

    Remove ACL entry for a specific user/group

    +
    setfacl -x "u:user" FILENAME
    + +
    +
    + + + + + diff --git a/guides/linux-file-permissions.html b/guides/linux-file-permissions.html index e861d54..f33f637 100644 --- a/guides/linux-file-permissions.html +++ b/guides/linux-file-permissions.html @@ -101,6 +101,9 @@ chmod o+r FILENAME

    The chmod command can also be used on directories. The following example will give all permissions to all users for that directory, and all its child files/directories.

    chmod a=rwx directoryName -R
    +

    Extra

    +

    Access Control Lists (ACL) Permissions for a guide to access control lists.

    + From 6e4272b9bf1f0b07e53ade89fa3e8441a73a9c21 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Mon, 23 Sep 2024 15:44:12 +0100 Subject: [PATCH 20/38] Add protein oat cookie recipe --- recipes/index.html | 3 +- recipes/protein-oat-cookies.html | 112 +++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 recipes/protein-oat-cookies.html diff --git a/recipes/index.html b/recipes/index.html index 8f63e8a..fb56306 100644 --- a/recipes/index.html +++ b/recipes/index.html @@ -36,8 +36,9 @@
    diff --git a/recipes/protein-oat-cookies.html b/recipes/protein-oat-cookies.html new file mode 100644 index 0000000..7dec11d --- /dev/null +++ b/recipes/protein-oat-cookies.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + Protein Oat Cookies + + + +
    + Jump directly to main content +

    Protein Oat Cookies

    + + +
    + +
    +
    + +
    + +
    +

    Requirements

    +

    Time: 10-15 mins

    +
      +
    • Scales
    • +
    • Wooden Spoon
    • +
    • Mixing Bowl
    • +
    • Pan
    • +
    • Baking Tray
    • +
    • Stovetop
    • +
    • Oven
    • +
    +
    +
    +

    Ingredients

    +

    These are the ingredients for five cookies.

    +

    Dry ingredients (can be measured together in same bowl)

    +
      +
    • 200g Oats (Whole Preferred)
    • +
    • 2½1/2 (~80-90g) Scoops Protein Powder
    • +
    • ~20g/5tsp Chia Seeds
    • +
    • ~20g/5tsp Ground Almond
    • +
    • 50g Chocolate (Optional)
    • +
    +

    Other Ingredients

    +
      +
    • 60g Sultanas
    • +
    • 100g Honey
    • +
    • 100g Butter/Lard
    • +
    • 100ml Warm Water
    • +
    +
    +
    +

    Instructions

    +
      +
    1. +

      Heat up the mixture

      +

      Add the Sultanas, Honey, and Butter to a pan.

      +

      Put the pan on a low-medium heat, and stir occassionally until the butter and honey is liquified.

      +
    2. +
    3. +

      Combine the dry ingredients

      +

      In a bowl add the Oats, Protein Powder, Chia Seeds, and Almond Powder.

      +

      Mix to combined.

      +
    4. +
    5. +

      (Optional) Add the Chocolate

      +

      Smash some chocolate to oblivion, or use choc. chips.

      +

      Add the chocolate into the dry ingredients.

      +
    6. +
    7. +

      Combine all the ingredients

      +

      Create a well in the dry ingredients bowl, and pour in the heated mixture.

      +

      Mix well to combined.

      +
    8. +
    9. +

      Slam 'em in the oven

      +

      Seperate the mixture into 5 equally sized balls/piles on the baking tray.

      +

      Press each ball down lightly with the back of the spoon.

      +

      Put in the oven for around 7 minutes, at 180°C

      +
    10. +
    +
    +
    + + + + + From 6a970cc4af46766f92a281cbd219e9568811899f Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Fri, 27 Sep 2024 13:56:12 +0100 Subject: [PATCH 21/38] Add new blog article: return of the me --- blog/index.html | 7 +++- blog/return-of-the-me.html | 78 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 blog/return-of-the-me.html diff --git a/blog/index.html b/blog/index.html index c1c6bb4..e0649a9 100644 --- a/blog/index.html +++ b/blog/index.html @@ -37,7 +37,12 @@
    -

    2022

    +

    2024

    + + +

    2023

    diff --git a/blog/return-of-the-me.html b/blog/return-of-the-me.html new file mode 100644 index 0000000..02973dc --- /dev/null +++ b/blog/return-of-the-me.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + Return of the Me + + + +
    + Jump directly to main content +

    Return of the Me

    + + +
    + +
    +
    + +
    +

    It's been a little while, but I've returned, at least for a while.

    + +

    Where did you go?

    +

    I just got pre-occupied with life, namely work and the general stresses of it all. + The website, my projects, and personal development took a large hit, and I sort of just, fell off. + I had a bunch of cool things planned, which I'm going to ignore until I can get back into the swing of writing + for the site, but once I can get back to it I'll be doing some fancy bits. +

    + +

    What's the plan?

    +

    The focus for now will be to add new content to the site in the form of guides, recipes, and articles. + I'll be trying to get two 'posts' of those varieties out a week, on mondays and fridays (hey look, this is one of them). And I have done this for a little while already, however I'm already starting to struggle with this. +

    + +

    When I get comfortable making the weekly posts, I'll be going back through the 'existing' articles that I've left unfinished, or just there with no content, and finish those up. + Then I'll be making improvements to the site such as adding some new content, and also re-focussing on my projects, especially those not currently listed. +

    + +

    Sellout!

    +

    There are now affiliate links around the site to attempt to get a little cash. + I'm not expecting a lot, or really anything from them, and I'm not intending to make them obstrusive at all, + but if I reference a service, item, etc. I will throw a link to it, and if I can I will use an affiliate code within the link. +

    + +

    I'm also going to be adding some Javascript too, only a tiny bit to improve the user experience, things such as code snippet copying and basic filter searching on articles, et cetera. + +

    Why are you back?

    +

    This website is something I wanted to do, and I still do. My lack of energy for it doesn't mean I want to stop working on it.

    +

    If all goes well, I'd love to prioritise the site, and ideally start my own web-dev pursuit instead of working for someone else, so we'll see.

    +

    If you're reading this, and visit my site at all, thank you.

    +

    +
    + + + + + From 053d69c331e0acd3217e8d1074ad8c52a3d54ddb Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 29 Sep 2024 16:52:04 +0100 Subject: [PATCH 22/38] Alter padding for code elements --- main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.css b/main.css index 2caa85c..673cc13 100644 --- a/main.css +++ b/main.css @@ -39,7 +39,7 @@ background:#EEE;padding:1rem; white-space:pre-wrap;overflow-x:auto; border:1px solid #DDD;border-radius:6px} code{ -background:#EEE;padding:.2rem; +background:#EEE;padding:.05rem .4rem; border:1px solid #DDD;border-radius:6px} pre code{border:none} blockquote{ From 376b033c6b8fdfb8afbe42a1886b31bc7c306099 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Sun, 29 Sep 2024 16:56:58 +0100 Subject: [PATCH 23/38] Add article for at command --- guides/at-one-off-cronjobs.html | 93 +++++++++++++++++++++++++++++++++ guides/backup-with-cron.html | 4 +- guides/index.html | 1 + 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 guides/at-one-off-cronjobs.html diff --git a/guides/at-one-off-cronjobs.html b/guides/at-one-off-cronjobs.html new file mode 100644 index 0000000..0b558e8 --- /dev/null +++ b/guides/at-one-off-cronjobs.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + at, for one-off cronjobs + + + +
    + Jump directly to main content +

    at, for one-off cronjobs

    + + +
    + +
    +
    + +
    +
    +

    Scheduling a cronjob is great, but sometimes you only want it to run once. You could add, then remove the job, or write a script that executes once, but there is a better way.

    + +

    Install at

    +
    sudo apt install at
    + +

    Schedule a script with at

    +

    The below examples show two different ways to run a script with at.

    +
    echo /script/to/run | at 20:30
    +
    at 20:30 -f ./script/to/run
    +

    For this, the script needs to exist, and needs executable permissions for your user, sudo chmod +x /script/to/run, if you need a lil' hint.

    + +

    The time/date passed 20:30 in this example, can then be passed in a few assorted ways.

    + +
      +
    • at now +5 minutes
    • +
    • at 11:00 today
    • +
    • at 11:00 tomorrow
    • +
    • at 20:30
    • +
    • at 20:30 093024
    • +
    • at 08:30PM Sep 30
    • +
    • at 08:30PM Sep 30 2024
    • +
    • at 08:30PM Sep 30 24
    • +
    + +

    Batch a script

    +

    Similar to the regular means of scheduling, except the batch will wait for the system load drops to a set point.

    +
    echo /script/to/run | at -b 20:30
    +

    You can also run batch, as follows.

    +
    echo /script/to/run | batch 20:30
    + +

    Check Queue

    +
    atq
    +

    Running the command above, will show you something akin to...

    +
    10      Sun Sep 29 14:14:00 2024 a user
    +

    Which broken down shows the ID 10, the date/time the item will run Sun Sep 29 14:14:00 2024, + the queue the item is in a, and the user executing the item user

    + + +

    Remove from Queue

    +

    You can remove an item from the queue, with the atrm command, passing just the ID.

    +
    atrm 3
    + +

    Mail the user

    +

    Like cron, at also allows the ability to mail the user about the task once executed. By default, if the command produces an output, at will mail the user, you can override this with:

    +
    at -M
    +

    This will prevent mail being sent to the user. You can also force a mail sent even if there is no output with:

    +
    at -m
    + +
    +
    + + + + + diff --git a/guides/backup-with-cron.html b/guides/backup-with-cron.html index 4ae952c..d5d3410 100644 --- a/guides/backup-with-cron.html +++ b/guides/backup-with-cron.html @@ -47,7 +47,7 @@ rdiff-backup --force --remove-older-than 2W $DIRECTORY_TO_BACKUP_TO

    Now make the script executable

    chmod +x ~/scripts/backup_script.sh
    -

    Add a cronjob

    +

    Add a cronjob

    Now for the automation part. Using cron we can set this script to run at many time variations. I recommend crontab guru to learn more about the expressions used for cron.

    Edit the cron table (crontab)

    crontab -e
    @@ -104,6 +104,8 @@ fi

    This script can easily be used for many different directories, on each server without needing to change the script itself. All that's needed is to change the cronjob, and/or add another cronjob changing the values it takes.

    +

    One off scheduling

    +

    If you only want something to happen once at a specific date/time, you should look into using at, for one off scheduling rather than cron.

    diff --git a/guides/index.html b/guides/index.html index 5b8fc5c..7989a39 100644 --- a/guides/index.html +++ b/guides/index.html @@ -40,6 +40,7 @@

    2024

      +
    • at, for one off cronjobs - 20/09/2024
    • Linux Access Control Lists (ACL) - 20/09/2024
    • Docker Install - 16/09/2024
    • Linux File Permissions - 14/09/2024
    • From 3c226159dab5b72f48df01cc938c5643b617cb6d Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Fri, 4 Oct 2024 15:23:33 +0100 Subject: [PATCH 24/38] Add 'Prioritising my project' article --- blog/index.html | 3 +- blog/prioritising-my-project.html | 67 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 blog/prioritising-my-project.html diff --git a/blog/index.html b/blog/index.html index e0649a9..7209688 100644 --- a/blog/index.html +++ b/blog/index.html @@ -39,7 +39,8 @@

      2024

      2023

      diff --git a/blog/prioritising-my-project.html b/blog/prioritising-my-project.html new file mode 100644 index 0000000..98ff5c2 --- /dev/null +++ b/blog/prioritising-my-project.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + Prioritising my project + + + +
      + Jump directly to main content +

      Prioritising my project

      + + +
      + +
      +
      + +
      +

      It's Friday, so according to my last article, I should have something posted for you.

      + +

      Ok, and?

      +

      Well, I do have something, this post. This however is more-so, a last second realisation that + I should post something.

      +

      Today, I've been working on a project of mine. It's a secret for now, until I have something to show, + otherwise I won't complete it, or have it anywhere near. I know this because I originally started it 1-2 years ago. +

      + +

      Why are you back on it?

      +

      It's a project I wanted to work on for a while. I am not however "back on it", I started from scratch, as I couldn't + remember where I was, or what was what. Thankfully (kind of), I didn't get far on before. +

      +

      I may keep y'all updated on this, on my blog, or elsewhere on my site once I get somewhere. I was thinking, + perhaps I could do updates every week or so, but of something I did a few weeks prior to then.

      + +

      What about other content?

      +

      That's why I opted to write this. Just a quick bit to let you know what's occuring, as I may not post articles for a while, or + may seem to be 'ignoring' my site again. I kind of will be, but there is reason, and I hope it goes somewhere, or leads to + other projects/tasks getting done! +

      + +

      Thanks for reading, and understanding. Apologies if this is a terribly written article, I have written in in 5-10 minutes in the midst + of working on the project I mentioned. +

      +
      + + + + + From 1c7c6742153b7ad8621a89a1c81dc8c21e7fd4e6 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Mon, 7 Oct 2024 14:46:55 +0100 Subject: [PATCH 25/38] Add blog post Project1 Part1 --- blog/index.html | 1 + blog/p1-the-stack-and-rooms.html | 76 ++++++++++++++++++++++++++++++++ projects.html | 22 ++++++--- 3 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 blog/p1-the-stack-and-rooms.html diff --git a/blog/index.html b/blog/index.html index 7209688..6efb9be 100644 --- a/blog/index.html +++ b/blog/index.html @@ -39,6 +39,7 @@

      2024

      diff --git a/blog/p1-the-stack-and-rooms.html b/blog/p1-the-stack-and-rooms.html new file mode 100644 index 0000000..829e3a6 --- /dev/null +++ b/blog/p1-the-stack-and-rooms.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + Project 1: The Stack, and Rooms + + + +
      + Jump directly to main content +

      Project 1: The Stack, and Rooms

      + + +
      + +
      +
      + +
      +

      The plan is to make a multiplayer PvP game, with defined turns, and per-player customisable elements. + I'm being a little vague, but I'm sure you can figure it out from that.

      + +

      The Stack

      +

      First I needed to select a stack I could use for this, with decent documentation to starting off an async multiplayer experience.

      +

      After looking about I landed on a JS stack consisting of JS, and HTML Canvas for the front-end, and JS, NodeJS, SocketIO, and MySQL for the back-end. This stack should allow me to work on the game itself, rather than look into TCP interfacing (which may be simple, but I have enough stuff on at current to not want to look into this, at least for the time being).

      + +

      Rooms

      +

      To get the swing of the multiplayer aspect, I opted to start with rooms. + Well that, and the Socket.IO guide I used to start this off with had basic room functionality (add player to room, start the game, etc).

      + +

      What is a Room?

      +

      + A room/instance (in my project at least), is a means to have multiple game instances running on the same server. Since there will be XvX players during a game, but there can be more than 2X players on the server, the servers resources can be better utilised by running many smaller instances, that manage themselves on the host. +

      + +

      Current Room Functionality

      +

      + Each room will eventually manage the state of the game being played in said room. For the time, I currently have a room in the most basic form, it has a count of the players in said room, a specific (non-unique) identifier, and name. As I mentioned, very basic, but it sets the field for what will be needed in the future. +

      +

      + Along with the room itself, I have a number of helper functions that are triggered in the client with socket emits, and return data to the client from the server with socket.to, and socket.on. +

      +

      These helper functions include:

      + +
        +
      • Requesting all existing rooms
      • +
      • Creating a new room (if there is space to do so)
      • +
      • Joining an existing room via ID (again if there is space to do so)
      • +
      + +

      + The first two are near-final I assume, but joining a room currently just uses a numeric counter to log the players already connected, so it allows the same player to join the same, and multiple different rooms at the same time. This will be changed later down the line, but for now there's a decent proof-of-concept to show me that what I want it feasible without too much difficulty. +

      +
      + + + + + diff --git a/projects.html b/projects.html index 914fb25..24f2cfa 100644 --- a/projects.html +++ b/projects.html @@ -34,19 +34,29 @@

      Current Projects

      +
      +

      aNetwork

      +

      A gaming community, and public server host. Halted, and to be restarted from scratch.

      +

      This will consist of a website, server hosting, and community/server administration.

      +

      Skills: HTML CSS JS Linux System Administration

      +
      + +
      +

      Project 1

      +

      You can read a little about it on my Project 1 Devlog.

      +

      Skills: JS HTML Canvas NodeJS Socket.IO SQL

      +
      + +

      'Completed' Projects

      Personal Website

      A basic website to let me have my own little place on the internet.
      You may recognise it, because you're using it right now!

      Skills: HTML CSS

      + -
      -

      aNetwork

      -

      A gaming community, and public server host.

      -

      This consists of a website, server hosting, and community/server administration.

      -

      Skills: HTML CSS JS Linux System Administration

      -
      +
      From e3fa30627d156c068c069bb64557e4a6b6b32ba5 Mon Sep 17 00:00:00 2001 From: Nathan Steel Date: Fri, 11 Oct 2024 11:45:35 +0100 Subject: [PATCH 26/38] Add P1-P2 article --- blog/index.html | 1 + blog/p1-basic-drawing-and-interaction.html | 97 ++++++++++++++++++++++ blog/p1-the-stack-and-rooms.html | 2 + main.css | 3 +- projects.html | 2 - 5 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 blog/p1-basic-drawing-and-interaction.html diff --git a/blog/index.html b/blog/index.html index 6efb9be..44f53cb 100644 --- a/blog/index.html +++ b/blog/index.html @@ -39,6 +39,7 @@

      2024

        +
      • Project 1 Part 2: Basic Drawing and Interaction - 11/10/2024
      • Project 1 Part 1: The Stack, and Rooms - 07/10/2024
      • Prioritising my project - 04/10/2024
      • Return of the me - 27/09/2024
      • diff --git a/blog/p1-basic-drawing-and-interaction.html b/blog/p1-basic-drawing-and-interaction.html new file mode 100644 index 0000000..d90c945 --- /dev/null +++ b/blog/p1-basic-drawing-and-interaction.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + Project 1: Basic Drawing and Interaction + + + +
        + Jump directly to main content +

        Project 1: Basic Drawing and Interaction

        + + +
        + +
        +
        + +
        +

        Switching away from the server-side stuff after getting the stack setup, I've opted to the basic game 'drawn', and 'playable', if you can call it those.

        + +

        Drawing

        +

        Since I'm using JS and HTML canvas I need to draw each shape onto the canvas setting each individual shapes co-ordinates and size. This sounds simple, but the more shapes you draw, and the more you don't want them to overlap, or to add zoomed in/out shapes it gets much more complicated than you'd think. This is a prime example of why a solid grasp on basic mathematics is good for developers.

        + +

        Shape class

        +

        Repeating the setting of context data, and the drawing of each shape became tedious and took a big chunk of my code-base after not long, so I decided to simplify by creating a Path2D extended class.

        +
        class Shape extends Path2D{
        +	constructor(params){
        +		super();
        +		this.shape = params.shape || 'rectangle';
        +		this.name = params.name;
        +		this.x = params.x || 0;
        +		this.y = params.y || 0;
        +		this.width = params.width || 0;
        +		this.height = params.height || 0;
        +		this.fillStyle = params.fillStyle || "#FFFFFF";
        +	}
        +	draw(){
        +		context.fillStyle = this.fillStyle;
        +		if(this.shape == 'circle'){
        +			context.beginPath();
        +			context.arc(this.x, this.y, this.width/2, 0, 2 * Math.PI);
        +			context.fill();
        +			context.closePath();
        +		}else if(this.shape == 'semi'){
        +			context.beginPath();
        +			context.arc(this.x, this.y, this.width/2, Math.PI, 0);
        +			context.fill();
        +			context.closePath();
        +		}else if (this.shape == 'rectangle'){
        +			context.fillRect(this.x, this.y, this.width, this.height);
        +		}
        +		context.fillStyle = defaultFillStyle; // Reset back to default
        +	}
        +}
        +

        Pretty simple, I pass the shape I want to draw, x,y co-ordinates, width and height, and the fill. Not included above, but the class also accepts, and draws the shape stroke.

        +

        I then call the draw method of the new Shape, and it sorts everything for me.

        + +

        Interaction with Event Handlers

        +

        Next up, for the game to be a game and not just some visual media, we need to be able to interact with it.

        +

        Basic interaction is simple enough, I threw in a 'click' EventListener, then take the event/click's X/Y position and subtract the canvas's offset from the HTML body (to have 0,0 set to the top-left of the canvas, and not the HTML page).

        +

        This new X/Y, which I will just call X/Y is then compared to the X/Y locations of each shape. If the event X/Y occurs in a location greater (or equal) than the shape X/Y, and less than (or equal) Shape X/Y plus the shape Width/Height I then do whatever action I require.

        +

        This is another thing I've simplified by creating a function:

        +
        function clickableCheck(x,y,shape){
        +	if(
        +		y > shape.y && y < shape.y + shape.height
        +		&& x > shape.x && x < shape.x + shape.width)
        +	{
        +		return true;
        +	}
        +	return false;
        +}
        +

        The function above is even simpler too, as all you need to do to check for a click, is pass a Shape object, created by the Shape class earlier in this post!

        +

        Fun Fact! Shape here, is actually called clickable in my code-base, but I've changed it to make more sense without context.

        +
        + + + + + diff --git a/blog/p1-the-stack-and-rooms.html b/blog/p1-the-stack-and-rooms.html index 829e3a6..7ce6818 100644 --- a/blog/p1-the-stack-and-rooms.html +++ b/blog/p1-the-stack-and-rooms.html @@ -65,6 +65,8 @@

        The first two are near-final I assume, but joining a room currently just uses a numeric counter to log the players already connected, so it allows the same player to join the same, and multiple different rooms at the same time. This will be changed later down the line, but for now there's a decent proof-of-concept to show me that what I want it feasible without too much difficulty.

        + +

        Next up is Basic Drawing and Interation.