{"@attributes":{"version":"2.0"},"channel":{"title":"William's Blog","link":"https:\/\/williamsmale.com\/","description":"Recent content on William's Blog","generator":"Hugo -- 0.147.4","language":"en-us","lastBuildDate":"Thu, 28 May 2026 00:00:00 +0000","item":[{"title":"GitOps Ate My Homelab: ArgoCD, Sealed Secrets, and Everything That Broke","link":"https:\/\/williamsmale.com\/blog\/tech\/gitops-ate-my-homelab\/","pubDate":"Thu, 28 May 2026 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/gitops-ate-my-homelab\/","description":"How I rebuilt my K3s homelab around ArgoCD and Sealed Secrets, with a public GitOps repo, sync waves, app-of-apps, rclone FUSE mounts, and the usual amount of self-inflicted pain."},{"title":"AppArmor Ate My Mealie: Permission Denied","link":"https:\/\/williamsmale.com\/blog\/tech\/mealie-permission-denied\/","pubDate":"Mon, 27 Apr 2026 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/mealie-permission-denied\/","description":"Mealie throwing Permission denied as root, inside a root container. Not file permissions. AppArmor blocking uvloop syscalls before the kernel even checked credentials. Here is how to fix it."},{"title":"Windows 11 Has Been Lying to Your Games","link":"https:\/\/williamsmale.com\/blog\/tech\/windows-11-lying-to-games\/","pubDate":"Sun, 15 Mar 2026 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/windows-11-lying-to-games\/","description":"Windows 11 quietly broke the way games request higher timer resolution \u2014 and it&#39;s been causing microstutter on desktop PCs ever since. Here&#39;s what changed, why Microsoft did it, and the single registry key that fixes it permanently."},{"title":"Reflections: Safe Agile is a Scam","link":"https:\/\/williamsmale.com\/blog\/story_time\/safe-agile-is-a-scam-reflections\/","pubDate":"Thu, 26 Feb 2026 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/safe-agile-is-a-scam-reflections\/","description":"After publishing my critique of SAFe Agile, the response surprised me \u2014 not with simple agreement or dismissal, but with genuinely sharp pushback that forced me to reconsider my blind spots. In this follow-up, I address three core challenges to my original argument: my unexamined assumption that efficiency is a universal motivator, the real constraints of collaborating across global time zones, and the question of whether product-thinking even applies to operations and security roles. My position on SAFe hasn&#39;t changed \u2014 but I was too dogmatic, and good-faith debate sharpened the argument. This is what substantive discourse looks like."},{"title":"I Rewrote My Media Server in Kubernetes and Only Cried Twice","link":"https:\/\/williamsmale.com\/blog\/tech\/deploy-jellyfin-on-kubernetes\/","pubDate":"Fri, 23 Jan 2026 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/deploy-jellyfin-on-kubernetes\/","description":"Step-by-step guide to deploying Jellyfin, Sonarr, Radarr, and Prowlarr on k3s with Traefik, cert-manager, and a wildcard Let&#39;s Encrypt cert."},{"title":"SAFe Agile is a SCAM","link":"https:\/\/williamsmale.com\/blog\/story_time\/safe-agile-is-a-scam\/","pubDate":"Thu, 11 Dec 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/safe-agile-is-a-scam\/","description":"A blunt, humorous look at how agile went from a startup superpower to a corporate circus. This post breaks down story points, sprints, planning increments, meeting overload, and why SAFe agile often kills real productivity. A raw take on what engineers actually need to get meaningful work done."},{"title":"Docker Just Isn't Cutting It","link":"https:\/\/williamsmale.com\/blog\/tech\/migrating-from-docker-to-kubernetes\/","pubDate":"Mon, 03 Nov 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/migrating-from-docker-to-kubernetes\/","description":"A developer shares their journey migrating from Docker to Kubernetes using K3s, covering why Docker fell short, how K3s simplifies multi-node setups, lessons from running Plex on Kubernetes, and why Jellyfin is the better choice for a container-native media server."},{"title":"Adding comments to my Hugo Blog","link":"https:\/\/williamsmale.com\/blog\/story_time\/adding-comments-to-my-blog\/","pubDate":"Thu, 24 Jul 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/adding-comments-to-my-blog\/","description":"<p>I&rsquo;ve been looking around the interwebs of how to add commenting functionality to my Hugo blog for my one reader. Yes you buddy I love you \u2764\ufe0f<\/p>\n<p>My requirements were simple, the solution needed to be free. I&rsquo;m not going to start paying for something that I can engineer my way out of!<\/p>\n<h2 id=\"v1---utterances\">V1 - Utterances<\/h2>\n<p>My initial forays found me using, <a href=\"https:\/\/utteranc.es\/\">https:\/\/utteranc.es\/<\/a>.<\/p>\n<p>Utterances leverages Githubs issues page of a repo as the storage location for commenting. A new issue is created for each of your posts and readers can login using their Github profiles and leave comments.\nI set this up and gave it a go but it never felt quite right. The prompting for login felt like a scam and the fact that is was marked as an &lsquo;issue&rsquo; being stored off on Github just didn&rsquo;t feel quite right.\nI don&rsquo;t want to go to Github issues to respond to a commentor.<\/p>"},{"title":"Nobara Linux Gaming in 2025: The Good, the Meh, and the Ugly","link":"https:\/\/williamsmale.com\/blog\/tech\/linux-gaming-in-2025\/","pubDate":"Sat, 28 Jun 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/linux-gaming-in-2025\/","description":"Linux gaming in 2025 is viable \u2014 if you can live with the anti-cheat wall. Here&#39;s my full Nobara setup, what worked, what broke, and my honest verdict."},{"title":"Ollama + AMD GPU in 2026: Local LLMs Without the NVIDIA Tax","link":"https:\/\/williamsmale.com\/blog\/tech\/setup-ai-homelab-with-amd-gpu\/","pubDate":"Sun, 01 Jun 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/setup-ai-homelab-with-amd-gpu\/","description":"AMD GPU not detected by Ollama? Here&#39;s how to get local LLMs running on an AMD APU or GPU on Linux using ROCm \u2014 including the bits the official docs skip."},{"title":"How to Fix Common Steam Issues on Linux","link":"https:\/\/williamsmale.com\/blog\/tech\/fix-steam-issues-on-linux\/","pubDate":"Sat, 26 Apr 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/fix-steam-issues-on-linux\/","description":"Struggling with Steam on Linux? Learn how to properly mount your NTFS drive, fix Proton issues, and start gaming smoothly with this step-by-step guide."},{"title":"Hack the Box #7 - Code without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_7_code\/","pubDate":"Mon, 07 Apr 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_7_code\/","description":"<p>This was a fun little box that was on the season 7 rotation of Hack the Box that involved some python manipulation.<\/p>\n<h2 id=\"enumeration\">Enumeration<\/h2>\n<p>After starting up the box lets see what we are dealing with.<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>\u2514\u2500$ nmap -sV -p- 10.10.11.62\n<\/span><\/span><span style=\"display:flex;\"><span>Starting Nmap 7.95 <span style=\"color:#f92672\">(<\/span> https:\/\/nmap.org <span style=\"color:#f92672\">)<\/span> at 2025-03-28 10:42 EDT\n<\/span><\/span><span style=\"display:flex;\"><span>...\n<\/span><\/span><span style=\"display:flex;\"><span>PORT     STATE SERVICE VERSION\n<\/span><\/span><span style=\"display:flex;\"><span>22\/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.12 <span style=\"color:#f92672\">(<\/span>Ubuntu Linux; protocol 2.0<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>5000\/tcp open  http    Gunicorn 20.0.4\n<\/span><\/span><span style=\"display:flex;\"><span>Service Info: OS: Linux; CPE: cpe:\/o:linux:linux_kernel\n<\/span><\/span><span style=\"display:flex;\"><span>...\n<\/span><\/span><\/code><\/pre><\/div><p>So we got 2 ports, namely 22 and 5000. 22 will be for the SSH to the box so what does this seeming http server on 5000 have in store?<\/p>"},{"title":"A Ballad of Lament","link":"https:\/\/williamsmale.com\/blog\/story_time\/a-ballad-of-lament\/","pubDate":"Sat, 15 Feb 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/a-ballad-of-lament\/","description":"An epic, satirical tale of engineers resisting a Confluence-to-SharePoint migration. Insightful, hilarious, and painfully relatable for every tech team."},{"title":"Certifications & Studies","link":"https:\/\/williamsmale.com\/certifications\/","pubDate":"Thu, 16 Jan 2025 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/certifications\/","description":"<style>\n    #program_list {\n        width: 800px;\n    }\n\n    #program_item {\n        width: 100%;\n        overflow: hidden;\n        float: none;\n        padding: 10px 0;\n        border-bottom: 1px solid #666;\n    }\n    #credential {\n        padding: inherit;\n        margin:auto;\n        display: block;\n    }\n<\/style>\n<hr>\n\n \n \n <a href=\"https:\/\/www.credly.com\/badges\/2d1da0a3-67c2-4784-883d-d046796cda6c\/public_url\" target=\"_blank\"><img  height=\"300\" src=\".\/giac-cloud-security-automation-certification-gcsa.png\" alt=\"GCSAcertification\" id=\"credential\"\/><\/a>\n \n \n\n<hr>\n<p><img alt=\"Alt\" loading=\"lazy\" src=\"https:\/\/williamsmale.com\/certifications\/immersive_labs_logo.webp#center\"><\/p>\n<p>This part of the page is generated from a custom script I wrote. The script scrapes my Immersive Labs achievements page and rebuilds it for my personal website. If you are interested checkout my <a href=\"https:\/\/williamsmale.com\/blog\/tech\/coding-convenience-immersive-labs-achievements-scraper\/\">post<\/a> on it!<\/p>\n <ul id=\"program_list\"> \n       <li id=\"program_item\"> \n  \n  \n  \n  <a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/ae731907f40b20fb8314dd49f4742351\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Cloud_Engineer_a_Practical.webp\" alt=\"Cloud Engineer \u2013 Practical\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n  \n  \n \n \n \n \n <a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/7d8f39e25cce73cf469e606e8a7b1e4b\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Web_App_Pen_Tester_a_Beginner.webp\" alt=\"Web App Pen Tester \u2013 Beginner\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n \n \n \n \n \n \n <a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/78aa82f893cf0c6b926a53b38bdcce63\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Cloud_Engineer_a_Theory.webp\" alt=\"Cloud Engineer \u2013 Theory\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n \n \n \n\n\n\n<a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/dc26ac10927ee3526afb5beca25c5894\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Management_Risk_and_Compliance.webp\" alt=\"Management, Risk, and Compliance\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n\n\n \n  \n  \n  \n  <a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/b1a8eb522ebd12336a57ce3db0f8004e\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Threat_Hunter_a_Beginner.webp\" alt=\"Threat Hunter \u2013 Beginner\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n  \n  \n \n \n \n \n <a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/9c1c7ae6d464ac9cfe40e20376fd898f\" target=\"_blank\"><img  height=\"240\" src=\".\/badge_images\/Cyber_Fundamentals.webp\" alt=\"Cyber Fundamentals\" loading=\"lazy\" style=\"float:left\"\/><\/a>\n \n \n \n <\/li> \n<li id=\"program_item\"> \n<details>\n  <summary><b>Cloud Security<\/b><\/summary>\n  <p><a href=\"https:\/\/niq.immersivelabs.online\/share\/achievement\/60ded0b6158ad035441ddfde69506ca9\" target=\"_blank\"><img  height=\"155\" src=\".\/badge_images\/Kubernetes_a_Offensive_Security.webp\" alt=\"Kubernetes \u2013 Offensive Security\" loading=\"lazy\" style=\"float:left\"\/><\/a><\/p>"},{"title":"Set up a Pi hole on your headless Raspberry Pi","link":"https:\/\/williamsmale.com\/blog\/tech\/pi-hole-on-headless-raspberry-pi\/","pubDate":"Sat, 09 Nov 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/pi-hole-on-headless-raspberry-pi\/","description":"Learn how to set up a Pi Hole on your home network to block ads at the DNS level and enjoy an ad-free browsing experience on all devices. This step-by-step guide covers Pi Hole installation using Docker, router configuration, and adding advanced blocklists for enhanced protection."},{"title":"Hack the Box #6 - Greenhorn without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_6_greenhorn\/","pubDate":"Mon, 07 Oct 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_6_greenhorn\/","description":"Detailed Hack the Box Greenhorn write-up where I share the full process of enumeration, exploitation, and privilege escalation. From cracking MD5 hashes to leveraging a PoC for a reverse shell, and even using a de-pixelling tool for root access, this guide takes you through the challenges and solutions of this HTB box. Perfect for CTF enthusiasts looking for in-depth insights and a step-by-step breakdown of exploiting Greenhorn!"},{"title":"SANS 540 DevSecOps Review: 5 Lessons for Building Secure and Efficient Pipelines","link":"https:\/\/williamsmale.com\/blog\/tech\/devsecops-lessons-from-sans-540\/","pubDate":"Tue, 17 Sep 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/devsecops-lessons-from-sans-540\/","description":"Thinking about taking the SANS 540 DevSecOps course? Read this review with 5 practical lessons, exam prep tips, and real-world pipeline security insights."},{"title":"Set Up a Plex Server on your headless Raspberry Pi","link":"https:\/\/williamsmale.com\/blog\/tech\/plex-server-on-headless-raspberry-pi\/","pubDate":"Tue, 27 Aug 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/plex-server-on-headless-raspberry-pi\/","description":"<h2 id=\"introduction\">Introduction<\/h2>\n<p>In an era where streaming platforms are increasingly introducing ads, looking at you Amazon Prime &amp; Disney+ even Netflix are getting their feet wet. Setting up your own Plex server on a Raspberry Pi offers an ad-free viewing experience for your movies and series. With this guide, you\u2019ll create a Plex server on your local network, ensuring that your media is always accessible without interruptions, all while keeping your content secure within your home network.<\/p>"},{"title":"Hack the Box #5 - Blurry without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_5_blurry\/","pubDate":"Tue, 20 Aug 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_5_blurry\/","description":"<p>I woke up this morning breathed in that sweet morning air. I could feel it, to days the day ima hack a box and come to the sun setting I had pwned this box by getting an AI model to execute a reverse shell that got me root! Here we go<\/p>\n<p><img alt=\"ChewingStraw\" loading=\"lazy\" src=\"https:\/\/media4.giphy.com\/media\/v1.Y2lkPTc5MGI3NjExamtrYXIyajJ5NjFtNzRzc25mdmQzbTFsNG9xamtqbHJpZXZudXhydyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw\/lqqB7E9CdSG76\/200.webp#center\"><\/p>\n<hr>\n<h2 id=\"enumeration\">Enumeration<\/h2>\n<p>What can nmap tell us about this target<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>\u2514\u2500$ nmap -A -p- 10.10.11.19 -oN nmap.scan\n<\/span><\/span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"># Nmap 7.94SVN scan initiated Sat Aug 10 11:14:11 2024 as: nmap -A -p- -oN nmap.scan 10.10.11.19<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>Nmap scan report <span style=\"color:#66d9ef\">for<\/span> 10.10.11.19\n<\/span><\/span><span style=\"display:flex;\"><span>Host is up <span style=\"color:#f92672\">(<\/span>0.046s latency<span style=\"color:#f92672\">)<\/span>.\n<\/span><\/span><span style=\"display:flex;\"><span>Not shown: <span style=\"color:#ae81ff\">65533<\/span> closed tcp ports <span style=\"color:#f92672\">(<\/span>conn-refused<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>PORT   STATE SERVICE VERSION\n<\/span><\/span><span style=\"display:flex;\"><span>22\/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u3 <span style=\"color:#f92672\">(<\/span>protocol 2.0<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>| ssh-hostkey: \n<\/span><\/span><span style=\"display:flex;\"><span>|   <span style=\"color:#ae81ff\">3072<\/span> 3e:21:d5:dc:2e:61:eb:8f:a6:3b:24:2a:b7:1c:05:d3 <span style=\"color:#f92672\">(<\/span>RSA<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>|   <span style=\"color:#ae81ff\">256<\/span> 39:11:42:3f:0c:25:00:08:d7:2f:1b:51:e0:43:9d:85 <span style=\"color:#f92672\">(<\/span>ECDSA<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>|_  <span style=\"color:#ae81ff\">256<\/span> b0:6f:a0:0a:9e:df:b1:7a:49:78:86:b2:35:40:ec:95 <span style=\"color:#f92672\">(<\/span>ED25519<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>80\/tcp open  http    nginx 1.18.0\n<\/span><\/span><span style=\"display:flex;\"><span>|_http-server-header: nginx\/1.18.0\n<\/span><\/span><span style=\"display:flex;\"><span>|_http-title: Did not follow redirect to &lt;http:\/\/app.blurry.htb\/&gt;\n<\/span><\/span><span style=\"display:flex;\"><span>Service Info: OS: Linux; CPE: cpe:\/o:linux:linux_kernel\n<\/span><\/span><span style=\"display:flex;\"><span>\n<\/span><\/span><span style=\"display:flex;\"><span>Service detection performed. Please report any incorrect results at &lt;https:\/\/nmap.org\/submit\/&gt; .\n<\/span><\/span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"># Nmap done at Sat Aug 10 11:14:36 2024 -- 1 IP address (1 host up) scanned in 25.45 seconds<\/span>\n<\/span><\/span><\/code><\/pre><\/div><p>Lets add <code>app.blurry.htb<\/code> to our hosts file and run some subdomain enumeration tool to see what else is out there<\/p>"},{"title":"Docker on headless Raspberry pi","link":"https:\/\/williamsmale.com\/blog\/tech\/docker-on-headless-raspberry-pi\/","pubDate":"Fri, 16 Aug 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/docker-on-headless-raspberry-pi\/","description":"Learn how to install Docker on a headless Raspberry Pi with this step-by-step guide. Avoid common errors in official Docker documentation by following our tailored instructions for Raspbian OS. Discover the benefits of using a headless OS and understand Docker&#39;s role in containerization. This guide covers prerequisites, adding the correct Docker repository, and successfully installing Docker without a GUI. Perfect for Raspberry Pi users looking to deploy containerized apps on a minimal, efficient setup. Start your headless Docker journey now!"},{"title":"Hack the Box #4 - BoardLight without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_4_boardlight\/","pubDate":"Thu, 08 Aug 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_4_boardlight\/","description":"<p>This evening I felt like cutting my teeth a little bit more. So lets spin up this box and give it a poke.<\/p>\n<hr>\n<h2 id=\"enumeration\">Enumeration<\/h2>\n<p>Kicking off this baby with an nmap\n<img alt=\"https:\/\/i.imgur.com\/EOD1dhH.png\" loading=\"lazy\" src=\"https:\/\/i.imgur.com\/EOD1dhH.png#center\"><\/p>\n<p>In doing so we find port 22 and 80 are the only ones open. <em>I did a full port scan after to the avail of no extra dice<\/em><\/p>\n<p>Browsing the website we don&rsquo;t find much. All links are get requests to the server so nothing there. We do get the website URL however <em><strong>Board.htb<\/strong><\/em> that we can add to our hosts file.<\/p>"},{"title":"Hack the Box #3 - PermX without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_3_permx\/","pubDate":"Tue, 30 Jul 2024 00:00:00 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_3_permx\/","description":"<p>I&rsquo;ve been messing with retired boxes on Hack the box and thought i would finally try my hand on one of the active ones!<\/p>\n<hr>\n<h2 id=\"enumeration\">Enumeration<\/h2>\n<p>So as per lets start with an nmap scan.<\/p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span><span style=\"color:#75715e\"># Nmap 7.94SVN scan initiated Sat Jul 27 09:05:17 2024 as: nmap -sV -p- -o nmap.scan 10.10.11.23<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>Nmap scan report <span style=\"color:#66d9ef\">for<\/span> permx.htb <span style=\"color:#f92672\">(<\/span>10.10.11.23<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>Host is up <span style=\"color:#f92672\">(<\/span>0.062s latency<span style=\"color:#f92672\">)<\/span>.\n<\/span><\/span><span style=\"display:flex;\"><span>Not shown: <span style=\"color:#ae81ff\">65533<\/span> closed tcp ports <span style=\"color:#f92672\">(<\/span>reset<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>PORT   STATE SERVICE VERSION\n<\/span><\/span><span style=\"display:flex;\"><span>22\/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 <span style=\"color:#f92672\">(<\/span>Ubuntu Linux; protocol 2.0<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>80\/tcp open  http    Apache httpd 2.4.52\n<\/span><\/span><span style=\"display:flex;\"><span>Service Info: Host: 127.0.0.1; OS: Linux; CPE: cpe:\/o:linux:linux_kernel\n<\/span><\/span><span style=\"display:flex;\"><span>\n<\/span><\/span><span style=\"display:flex;\"><span>Service detection performed. Please report any incorrect results at &lt;https:\/\/nmap.org\/submit\/&gt; .\n<\/span><\/span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"># Nmap done at Sat Jul 27 09:06:05 2024 -- 1 IP address (1 host up) scanned in 48.48 seconds<\/span>\n<\/span><\/span><\/code><\/pre><\/div><p>In doing so we find ports 22, 80 open. Both versions seem secure so lets have a look at the website.<\/p>"},{"title":"Coding Convenience: Immersive labs achievements scraper","link":"https:\/\/williamsmale.com\/blog\/tech\/coding-convenience-immersive-labs-achievements-scraper\/","pubDate":"Wed, 17 Apr 2024 12:09:31 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/coding-convenience-immersive-labs-achievements-scraper\/","description":"Create a personalized achievements page for your website using a Python web-scraping bot to extract and display your accomplishments. This guide walks you through saving your achievements page, parsing it with Beautiful Soup, and generating a custom webpage using Hugo Go shortcodes. Learn how to fetch, process, and display your achievements effectively, and discover how to solve common issues like expired image URLs by downloading and locally hosting images. Perfect for showcasing your milestones in a professional, visually appealing way."},{"title":"Deploy secure headless Raspberry Pi on your home network","link":"https:\/\/williamsmale.com\/blog\/tech\/secure-headless-raspberry-pi-on-your-home-network\/","pubDate":"Sat, 23 Mar 2024 12:04:48 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/secure-headless-raspberry-pi-on-your-home-network\/","description":"Setting up a Raspberry Pi 4 with a headless OS is a streamlined process that allows you to manage the device via terminal without a GUI. Start by burning a lightweight Raspberry Pi OS to your SD card, configuring SSH, and enabling it manually. Next, configure your PowerShell for easy SSH access. Once connected, lock down the Pi by restricting SSH access to your specific user. This setup ensures a secure, minimal environment, perfect for future projects. Explore more detailed steps and guidance in the full guide."},{"title":"Deploying PostgreSQL Database on Azure Using Terraform with Key Vault Integration","link":"https:\/\/williamsmale.com\/blog\/tech\/deploying-postgresql-database-with-key-vault-integration-on-azure-using-terraform\/","pubDate":"Sun, 10 Mar 2024 20:41:28 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/deploying-postgresql-database-with-key-vault-integration-on-azure-using-terraform\/","description":"Deploying a PostgreSQL database on Azure? Use Terraform to automate the setup in a private VNet, including infrastructure like resource groups, virtual networks, and key vaults for storing credentials. The guide walks through creating subnets, DNS zones, and deploying the database securely, without relying on the Azure GUI. The final setup links the database to your application, with credentials managed via the key vault. Check out the full project details and code on GitHub to streamline your deployment process."},{"title":"Hack the Box #2 - Analytics without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_2_analytics\/","pubDate":"Wed, 06 Mar 2024 17:27:24 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_2_analytics\/","description":"<h2 id=\"introduction\">Introduction<\/h2>\n<p>This is my first Hack the Box machine <a href=\"https:\/\/www.hackthebox.com\/achievement\/machine\/1695260\/569\">pwned<\/a> and it\u2019s called Analytics. Here is a mock write-up of the lab because as we all know. It\u2019s great being able to pwn things but if we can\u2019t communicate the remediations to what we have done then there is no benefit past that juicy dopamine hit when you get root \ud83d\ude00<\/p>\n<h2 id=\"executive-summary\">Executive summary<\/h2>\n<p>The attacker achieved an initial foothold by abusing a pre-authentication remote code execution exploit to achieve a reverse shell. User credentials we then found in the environment variables and used to establish a user shell. This can be prevented by upgrading Metabase to the latest version and removing the environment variables with user account details if possible as a secondary objective.<\/p>"},{"title":"Coding Convenience: How I Automated Our Digs Expenses with Python and Zapier","link":"https:\/\/williamsmale.com\/blog\/tech\/coding-convenience-how-i-automated-our-digs-expenses-with-python-and-zapier\/","pubDate":"Tue, 09 Jan 2024 12:09:31 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/coding-convenience-how-i-automated-our-digs-expenses-with-python-and-zapier\/","description":"Automate your utility expenses with a Python script that integrates bank transactions, Google Sheets, and Zapier to streamline bill splitting with your housemates. This guide details the architecture and setup, including how to fetch direct debits, sync with Google Sheets, and trigger automated Splitwise expenses. Perfect for anyone looking to simplify group expenses and free up time for more enjoyable activities. Explore the full project on [GitHub](https:\/\/github.com\/M4NU5\/ExpenseAutomation\/tree\/master) and consider future enhancements like automated payment notifications."},{"title":"Set Up Windows Remote Desktop (RDP) and Secure Access with VPN","link":"https:\/\/williamsmale.com\/blog\/tech\/configure-remote-desktop-on-windows-between-my-laptop-and-desktop\/","pubDate":"Tue, 12 Dec 2023 08:51:09 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/configure-remote-desktop-on-windows-between-my-laptop-and-desktop\/","description":"Learn how to set up Windows Remote Desktop Protocol (RDP) for seamless access to your powerful desktop from a laptop, even while traveling or dealing with power outages. This guide covers enabling RDP on Windows Pro, resolving common RDP issues like the black screen, and securing remote access with Tailscale VPN. Perfect for those needing a remote connection to their desktop without relying on third-party software, ensuring a smooth, reliable experience wherever you are. Simplify remote access and stay productive on the go."},{"title":"Proving Grounds #1 - Zino","link":"https:\/\/williamsmale.com\/blog\/tech\/proving_grounds_1_zino\/","pubDate":"Tue, 28 Nov 2023 00:55:24 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/proving_grounds_1_zino\/","description":"<p>This was my first proving grounds lab of my OSCP. Took longer than I would have liked but I was able to pwn it in the end with a joyful fist pump and woop from my side. Any advice or comments on how I could improve this write-up would be appreciated.<\/p>\n<h4 id=\"executive-summary\">Executive summary<\/h4>\n<p>The attacker was able to achieve privileged remote code execution on the target box. Issues found can be easily remediated by updating the software Booked Scheduler to V3.7.9 and restricting write permissions of a scheduled cron job.<\/p>"},{"title":"Hack the Box #1 - Lame without Metasploit","link":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_1_lame\/","pubDate":"Fri, 24 Nov 2023 17:27:24 +0000","guid":"https:\/\/williamsmale.com\/blog\/tech\/hack_the_box_1_lame\/","description":"The blog post discusses the process of exploiting a Hack the Box machine named &#34;Lame&#34;. Starting with a port scan, the guide explores potential vulnerabilities in a target system. It details attempts to exploit FTP on port 21 using known vulnerabilities in vsftpd 2.3.4, though these attempts fail. Moving to SMB on ports 129 and 445, the guide successfully exploits a vulnerability (CVE-2007-2447) using a Python script. After preparing a netcat listener, the exploit yields a root shell, allowing access to system flags. The process concludes with a successful hack and a recommendation to take a break."},{"title":"whoami","link":"https:\/\/williamsmale.com\/whoami\/","pubDate":"Fri, 15 Sep 2023 11:30:03 +0000","guid":"https:\/\/williamsmale.com\/whoami\/","description":"<div class=\"term\" data-host=\"will@williamsmale\" data-fs=\"{&#34;dev&#34;:{&#34;coffee&#34;:&#34;cortado\\n&#34;,&#34;null&#34;:&#34;&#34;,&#34;random&#34;:&#34;@random&#34;},&#34;etc&#34;:{&#34;hostname&#34;:&#34;williamsmale\\n&#34;,&#34;motd&#34;:&#34;Welcome to Hallownest. Mind the gap.\\n&#34;,&#34;passwd&#34;:&#34;root:x:0:0:root:\/root:\/bin\/bash\\nwill:x:1000:1000:William Smale:\/home\/will:\/bin\/fakesh\\nnobody:x:65534:65534:nobody:\/nonexistent:\/usr\/sbin\/nologin\\n&#34;,&#34;shadow&#34;:&#34;@denied root:$6$nice$try:19000:0:99999:7:::&#34;},&#34;home&#34;:{&#34;will&#34;:{&#34;.bash_history&#34;:&#34;ls\\ncd blog\\ncat .flag\\nsudo cat .flag\\nchmod &#43;r .flag\\nrm -rf \/ --no-preserve-root\\nhistory -c\\n&#34;,&#34;.flag&#34;:&#34;@denied You little hacker you.\\nThat&#39;ll cost you a coffee: https:\/\/buymeacoffee.com\/williamsmale\\n&#34;,&#34;.profile&#34;:&#34;NAME=\\&#34;William Smale\\&#34;\\nLOCATION=\\&#34;London, UK\\&#34;\\nROLE=\\&#34;Senior Application Security Engineer\\&#34;\\nEXPERIENCE=\\&#34;8 years\\&#34;\\nLANGUAGES=\\&#34;Go Python Bash\\&#34;\\nINTERESTS=\\&#34;coding hacking diving photography philosophy\\&#34;\\n&#34;,&#34;.ssh&#34;:{&#34;authorized_keys&#34;:&#34;@denied ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE1pbmQgdGhlIGdhcC4gTmljZSB0cnku will@laptop&#34;,&#34;config&#34;:&#34;Host homelab\\n  HostName 10.0.0.42\\n  User will\\n  IdentityFile ~\/.ssh\/id_ed25519\\n&#34;},&#34;blog&#34;:{&#34;.url&#34;:&#34;\/blog\/&#34;,&#34;story_time&#34;:{&#34;.url&#34;:&#34;\/blog\/story_time\/&#34;,&#34;a-ballad-of-lament.md&#34;:&#34;@page \/blog\/story_time\/a-ballad-of-lament\/|A Ballad of Lament|2025-02-15|Engineers have a curious relationship with their tools. Take Confluence, a platform many love to hate. It\u2019s clunky, inconsistent, and often a source of frustration. As engineers curse its name when \u2026&#34;,&#34;adding-comments-to-my-blog.md&#34;:&#34;@page \/blog\/story_time\/adding-comments-to-my-blog\/|Adding comments to my Hugo Blog|2025-07-24|I\u2019ve been looking around the interwebs of how to add commenting functionality to my Hugo blog for my one reader. Yes you buddy I love you \u2764\ufe0f My requirements were simple, the solution needed to be \u2026&#34;,&#34;lockpicking-a-rooftop-cargo-carrier.md&#34;:&#34;@page \/blog\/story_time\/lockpicking-a-rooftop-cargo-carrier\/|Lockpicking a Rooftop Cargo Carrier|2020-10-30|So my uncle forgot his keys to his roof rack\u2026 Ok when you have just left home. Not so ok when you at 5 hours from it! He was travelling with his family to the Kruger National Park. His trip takes him \u2026&#34;,&#34;safe-agile-is-a-scam-reflections.md&#34;:&#34;@page \/blog\/story_time\/safe-agile-is-a-scam-reflections\/|Reflections: Safe Agile is a Scam|2026-02-26|After publishing my critique of SAFe Agile, I received feedback that went far beyond what I expected. Rather than simple agreement or dismissal, people came back with some fire takes that genuinely \u2026&#34;,&#34;safe-agile-is-a-scam.md&#34;:&#34;@page \/blog\/story_time\/safe-agile-is-a-scam\/|SAFe Agile is a SCAM|2025-12-11|The Age of Agile We live in the agile age in the tech world. It traces back to the Agile Manifesto in 2001 - almost 24 years ago. In those formative years, startups used agile techniques to ship \u2026&#34;,&#34;simple-homemade-bread.md&#34;:&#34;@page \/blog\/story_time\/simple-homemade-bread\/|Simple Homemade Bread|2021-04-15|A family recipe that was passed down through the generations. Thank you for this one granny ^^ Enjoy, this recipe is super flexible. In my family this recipe is known as the kitchen sink bread , go \u2026&#34;,&#34;why-you-should-run-a-half-marathon.md&#34;:&#34;@page \/blog\/story_time\/why-you-should-run-a-half-marathon\/|Why you should run a half marathon|2023-04-25|Because running ~21km sounds tough but in truth, IT\u2019S FUCKING EASY. I have walked that in a day, so running it will be a breeze right?! The difficulty doesn\u2019t come from setting your goal. The \u2026&#34;},&#34;tech&#34;:{&#34;.url&#34;:&#34;\/blog\/tech\/&#34;,&#34;coding-convenience-how-i-automated-our-digs-expenses-with-python-and-zapier.md&#34;:&#34;@page \/blog\/tech\/coding-convenience-how-i-automated-our-digs-expenses-with-python-and-zapier\/|Coding Convenience: How I Automated Our Digs Expenses with Python and Zapier|2024-01-09|Introduction I\u2019ve recently moved in with some mates. As with all things moving you need to setup debit orders and subscriptions with your respective utility providers and whatever monthly things you \u2026&#34;,&#34;coding-convenience-immersive-labs-achievements-scraper.md&#34;:&#34;@page \/blog\/tech\/coding-convenience-immersive-labs-achievements-scraper\/|Coding Convenience: Immersive labs achievements scraper|2024-04-17|Introduction You ever look at your achievements page on X Y or Z website and think \u201cI would love to show this whole page and not just piece meal my LinkedIn account resulting in just unprofessional \u2026&#34;,&#34;configure-remote-desktop-on-windows-between-my-laptop-and-desktop.md&#34;:&#34;@page \/blog\/tech\/configure-remote-desktop-on-windows-between-my-laptop-and-desktop\/|Set Up Windows Remote Desktop (RDP) and Secure Access with VPN|2023-12-12|So I\u2019m visiting my family back in my home country which is currently experiencing daily power cuts, FUN! And as much as i love my chonky desktop there is not a flying fuck im lugging it all the way \u2026&#34;,&#34;deploy-jellyfin-on-kubernetes.md&#34;:&#34;@page \/blog\/tech\/deploy-jellyfin-on-kubernetes\/|I Rewrote My Media Server in Kubernetes and Only Cried Twice|2026-01-23|What We\u2019re Building This post walks through deploying a full home media server on k3s. The stack includes Jellyfin for media streaming, the arr ecosystem (Sonarr, Radarr, Prowlarr) for automation, all \u2026&#34;,&#34;deploying-postgresql-database-with-key-vault-integration-on-azure-using-terraform.md&#34;:&#34;@page \/blog\/tech\/deploying-postgresql-database-with-key-vault-integration-on-azure-using-terraform\/|Deploying PostgreSQL Database on Azure Using Terraform with Key Vault Integration|2024-03-10|So you want to deploy a PostgreSQL database in a private vnet and link it to your custom application in Azure. You have developed this awesome app thrown it into a container image and now you need to \u2026&#34;,&#34;devsecops-lessons-from-sans-540.md&#34;:&#34;@page \/blog\/tech\/devsecops-lessons-from-sans-540\/|SANS 540 DevSecOps Review: 5 Lessons for Building Secure and Efficient Pipelines|2024-09-17|Introduction I recently completed the SANS 540 course in person, and what an intense and rewarding journey it was! SANS 540, officially titled \u201cCloud Security and DevSecOps Automation,\u201d is a five-day, \u2026&#34;,&#34;docker-on-headless-raspberry-pi.md&#34;:&#34;@page \/blog\/tech\/docker-on-headless-raspberry-pi\/|Docker on headless Raspberry pi|2024-08-16|Introduction This guide outlines the steps required to install docker on a headless Raspberry Pi. Reason I\u2019m putting this together is the generally found official documentation doesn\u2019t work for the \u2026&#34;,&#34;fix-steam-issues-on-linux.md&#34;:&#34;@page \/blog\/tech\/fix-steam-issues-on-linux\/|How to Fix Common Steam Issues on Linux|2025-04-26|So you want to join the cool kids club and be a Linux gamer. You have found your distro of choice and installed it. If you\u2019re interested in a distro find my review of one here. In your infinite wisdom \u2026&#34;,&#34;gitops-ate-my-homelab.md&#34;:&#34;@page \/blog\/tech\/gitops-ate-my-homelab\/|GitOps Ate My Homelab: ArgoCD, Sealed Secrets, and Everything That Broke|2026-05-28|I wanted to deploy ArgoCD to manage my K3s cluster. After all, GitOps is what all the cool kids are doing these days. Who wouldn\u2019t want Kubernetes to manage itself? Mostly. My previous post covered \u2026&#34;,&#34;hack_the_box_1_lame.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_1_lame\/|Hack the Box #1 - Lame without Metasploit|2023-11-24| Enumeration Lets kick off with a port scan to get a better idea of our target. There are a couple of interesting finds here. So lets start digging! FTP - port 21 FTP Exploit attempt FTP allows for \u2026&#34;,&#34;hack_the_box_2_analytics.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_2_analytics\/|Hack the Box #2 - Analytics without Metasploit|2024-03-06|Introduction This is my first Hack the Box machine pwned and it\u2019s called Analytics. Here is a mock write-up of the lab because as we all know. It\u2019s great being able to pwn things but if we can\u2019t \u2026&#34;,&#34;hack_the_box_3_permx.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_3_permx\/|Hack the Box #3 - PermX without Metasploit|2024-07-30|I\u2019ve been messing with retired boxes on Hack the box and thought i would finally try my hand on one of the active ones! Enumeration So as per lets start with an nmap scan. # Nmap 7.94SVN scan \u2026&#34;,&#34;hack_the_box_4_boardlight.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_4_boardlight\/|Hack the Box #4 - BoardLight without Metasploit|2024-08-08|This evening I felt like cutting my teeth a little bit more. So lets spin up this box and give it a poke. Enumeration Kicking off this baby with an nmap In doing so we find port 22 and 80 are the only \u2026&#34;,&#34;hack_the_box_5_blurry.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_5_blurry\/|Hack the Box #5 - Blurry without Metasploit|2024-08-20|I woke up this morning breathed in that sweet morning air. I could feel it, to days the day ima hack a box and come to the sun setting I had pwned this box by getting an AI model to execute a reverse \u2026&#34;,&#34;hack_the_box_6_greenhorn.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_6_greenhorn\/|Hack the Box #6 - Greenhorn without Metasploit|2024-10-07|I would be lying if I said I posted this Hack the Box Greenhorn writeup within the same week of me exploiting it. In truth life happened. I did a SANs and a couple of late nights out. But here it is, \u2026&#34;,&#34;hack_the_box_7_code.md&#34;:&#34;@page \/blog\/tech\/hack_the_box_7_code\/|Hack the Box #7 - Code without Metasploit|2025-04-07|This was a fun little box that was on the season 7 rotation of Hack the Box that involved some python manipulation. Enumeration After starting up the box lets see what we are dealing with. \u2514\u2500$ nmap \u2026&#34;,&#34;linux-gaming-in-2025.md&#34;:&#34;@page \/blog\/tech\/linux-gaming-in-2025\/|Nobara Linux Gaming in 2025: The Good, the Meh, and the Ugly|2025-06-28|So you\u2019re thinking about switching to Linux. We\u2019ve all had those moments. For me, the first time was during my honours year. At the start of the year, we were asked whether we wanted our machines set \u2026&#34;,&#34;mealie-permission-denied.md&#34;:&#34;@page \/blog\/tech\/mealie-permission-denied\/|AppArmor Ate My Mealie: Permission Denied|2026-04-27|Introduction So there I was, minding my own business, trying to restart my Mealie container after a routine update. You know Mealie. The recipe management app that promises to organise your culinary \u2026&#34;,&#34;migrating-from-docker-to-kubernetes.md&#34;:&#34;@page \/blog\/tech\/migrating-from-docker-to-kubernetes\/|Docker Just Isn&#39;t Cutting It|2025-11-03|The time has come! That\u2019s right. I\u2019ve crossed over. Docker just isn\u2019t doing it for me anymore. The limitations, the lack of flexibility, the industry drift it\u2019s all driven me to the dark side. It\u2019s \u2026&#34;,&#34;pi-hole-on-headless-raspberry-pi.md&#34;:&#34;@page \/blog\/tech\/pi-hole-on-headless-raspberry-pi\/|Set up a Pi hole on your headless Raspberry Pi|2024-11-09|Introduction We all hate advertisements on the internet. But sadly advertising is a very big portion of revenue of internet companies and is it just me or are they getting more predatory as time goes \u2026&#34;,&#34;plex-server-on-headless-raspberry-pi.md&#34;:&#34;@page \/blog\/tech\/plex-server-on-headless-raspberry-pi\/|Set Up a Plex Server on your headless Raspberry Pi|2024-08-27|Introduction In an era where streaming platforms are increasingly introducing ads, looking at you Amazon Prime \\u0026amp; Disney&#43; even Netflix are getting their feet wet. Setting up your own Plex server on a \u2026&#34;,&#34;proving_grounds_1_zino.md&#34;:&#34;@page \/blog\/tech\/proving_grounds_1_zino\/|Proving Grounds #1 - Zino|2023-11-28|This was my first proving grounds lab of my OSCP. Took longer than I would have liked but I was able to pwn it in the end with a joyful fist pump and woop from my side. Any advice or comments on how I \u2026&#34;,&#34;secure-headless-raspberry-pi-on-your-home-network.md&#34;:&#34;@page \/blog\/tech\/secure-headless-raspberry-pi-on-your-home-network\/|Deploy secure headless Raspberry Pi on your home network|2024-03-23|Introduction A couple of years ago I bought a Raspberry Pi 4 and have used it in several ways from a Pi-Hole to a full bitcoin node using a number of prebuilt OS packages. Anyhow today I thought I \u2026&#34;,&#34;setup-ai-homelab-with-amd-gpu.md&#34;:&#34;@page \/blog\/tech\/setup-ai-homelab-with-amd-gpu\/|Ollama &#43; AMD GPU in 2026: Local LLMs Without the NVIDIA Tax|2025-06-01| Update - January 2026 AMD quietly fixed the hard part. The January 2026 Adrenalin driver update ships Ollama, LM Studio, and ComfyUI as a one-click optional install. If you\u2019re on RX 7700 or newer \u2013 \u2026&#34;,&#34;windows-11-lying-to-games.md&#34;:&#34;@page \/blog\/tech\/windows-11-lying-to-games\/|Windows 11 Has Been Lying to Your Games|2026-03-15| TL;DR Run this in an elevated Command Prompt and reboot: reg add \\u0026#34;HKLM\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Session Manager\\\\kernel\\u0026#34; \/v GlobalTimerResolutionRequests \/t REG_DWORD \/d 1 \/f Windows 11 \u2026&#34;}},&#34;certs&#34;:{&#34;.badge&#34;:&#34;Immersive Labs badge: \\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;.url&#34;:&#34;\/certifications\/&#34;,&#34;AI_for_Business.badge&#34;:&#34;Immersive Labs badge: AI for Business\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;AWS_Community_a_Security_Tooling.badge&#34;:&#34;Immersive Labs badge: AWS Community a Security Tooling\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Amazon_Web_Services.badge&#34;:&#34;Immersive Labs badge: Amazon Web Services\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Browser_Developer_Tools.badge&#34;:&#34;Immersive Labs badge: Browser Developer Tools\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Burp_Suite.badge&#34;:&#34;Immersive Labs badge: Burp Suite\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;CISA_and_NSA_Kubernetes_Hardening_Guidance.badge&#34;:&#34;Immersive Labs badge: CISA and NSA Kubernetes Hardening Guidance\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cloud_Engineer_a_Practical.badge&#34;:&#34;Immersive Labs badge: Cloud Engineer a Practical\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cloud_Engineer_a_Theory.badge&#34;:&#34;Immersive Labs badge: Cloud Engineer a Theory\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cloud_Fundamentals.badge&#34;:&#34;Immersive Labs badge: Cloud Fundamentals\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Compliance.badge&#34;:&#34;Immersive Labs badge: Compliance\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Container_Hardening_a_Docker.badge&#34;:&#34;Immersive Labs badge: Container Hardening a Docker\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cyber_101.badge&#34;:&#34;Immersive Labs badge: Cyber 101\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cyber_Fundamentals.badge&#34;:&#34;Immersive Labs badge: Cyber Fundamentals\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cyber_Safety.badge&#34;:&#34;Immersive Labs badge: Cyber Safety\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cyber_for_Board_Members.badge&#34;:&#34;Immersive Labs badge: Cyber for Board Members\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Cyber_for_Executives_.badge&#34;:&#34;Immersive Labs badge: Cyber for Executives\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Data_Privacy.badge&#34;:&#34;Immersive Labs badge: Data Privacy\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;DevSecOps.badge&#34;:&#34;Immersive Labs badge: DevSecOps\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Encoding.badge&#34;:&#34;Immersive Labs badge: Encoding\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Ethics__Laws.badge&#34;:&#34;Immersive Labs badge: Ethics Laws\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Hack_Your_First_Web_Application.badge&#34;:&#34;Immersive Labs badge: Hack Your First Web Application\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Historic_Encryption.badge&#34;:&#34;Immersive Labs badge: Historic Encryption\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Intro_to_Web_App_Hacking.badge&#34;:&#34;Immersive Labs badge: Intro to Web App Hacking\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Introduction_to_Cryptography.badge&#34;:&#34;Immersive Labs badge: Introduction to Cryptography\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Introduction_to_Incident_Response.badge&#34;:&#34;Immersive Labs badge: Introduction to Incident Response\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Introduction_to_Penetration_Test_Programs.badge&#34;:&#34;Immersive Labs badge: Introduction to Penetration Test Programs\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Introduction_to_Penetration_Testing.badge&#34;:&#34;Immersive Labs badge: Introduction to Penetration Testing\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Introduction_to_Windows_Exploitation.badge&#34;:&#34;Immersive Labs badge: Introduction to Windows Exploitation\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Kubernetes_a_Fundamentals.badge&#34;:&#34;Immersive Labs badge: Kubernetes a Fundamentals\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Kubernetes_a_Logging.badge&#34;:&#34;Immersive Labs badge: Kubernetes a Logging\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Kubernetes_a_Offensive_Security.badge&#34;:&#34;Immersive Labs badge: Kubernetes a Offensive Security\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Kubernetes_a_Pod_Security.badge&#34;:&#34;Immersive Labs badge: Kubernetes a Pod Security\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Linux_Command_Line.badge&#34;:&#34;Immersive Labs badge: Linux Command Line\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Logging__Monitoring_in_AWS.badge&#34;:&#34;Immersive Labs badge: Logging Monitoring in AWS\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;MITRE_ATTCK.badge&#34;:&#34;Immersive Labs badge: MITRE ATTCK\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Management_Risk_and_Compliance.badge&#34;:&#34;Immersive Labs badge: Management Risk and Compliance\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;NCSC__Cloud_Security_Guidance.badge&#34;:&#34;Immersive Labs badge: NCSC Cloud Security Guidance\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;NGINX.badge&#34;:&#34;Immersive Labs badge: NGINX\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;NIST_a_Guidelines_on_Security_and_Privacy_in_Public_Cloud_Computing_800144.badge&#34;:&#34;Immersive Labs badge: NIST a Guidelines on Security and Privacy in Public Cloud Computing 800144\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;NIST_a_Security_and_Privacy_Controls_for_Information_Systems_and_Organizations_80053.badge&#34;:&#34;Immersive Labs badge: NIST a Security and Privacy Controls for Information Systems and Organizations 80053\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Nessus.badge&#34;:&#34;Immersive Labs badge: Nessus\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;OAuth_and_OpenID_Connect.badge&#34;:&#34;Immersive Labs badge: OAuth and OpenID Connect\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;OSINT.badge&#34;:&#34;Immersive Labs badge: OSINT\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;OWASP_Top_10.badge&#34;:&#34;Immersive Labs badge: OWASP Top 10\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Risk.badge&#34;:&#34;Immersive Labs badge: Risk\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;SQL_Injection_Basics.badge&#34;:&#34;Immersive Labs badge: SQL Injection Basics\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Scanning.badge&#34;:&#34;Immersive Labs badge: Scanning\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secrets_Management_with_HashiCorp_Vault.badge&#34;:&#34;Immersive Labs badge: Secrets Management with HashiCorp Vault\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Fundamentals.badge&#34;:&#34;Immersive Labs badge: Secure Fundamentals\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Terraform__AWS.badge&#34;:&#34;Immersive Labs badge: Secure Terraform AWS\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Terraform__Azure.badge&#34;:&#34;Immersive Labs badge: Secure Terraform Azure\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Terraform__Google_Cloud_Platform.badge&#34;:&#34;Immersive Labs badge: Secure Terraform Google Cloud Platform\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Testing_a_Beginner.badge&#34;:&#34;Immersive Labs badge: Secure Testing a Beginner\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Secure_Tooling_a_Beginner.badge&#34;:&#34;Immersive Labs badge: Secure Tooling a Beginner\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Splunk.badge&#34;:&#34;Immersive Labs badge: Splunk\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Staying_Safe_Online.badge&#34;:&#34;Immersive Labs badge: Staying Safe Online\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Threat_Hunter_a_Beginner.badge&#34;:&#34;Immersive Labs badge: Threat Hunter a Beginner\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Threat_Hunting__Theory.badge&#34;:&#34;Immersive Labs badge: Threat Hunting Theory\\nSee \/certifications\/ for the full wall.\\n&#34;,&#34;Web_App_Pen_Tester_a_Beginner.badge&#34;:&#34;Immersive Labs badge: Web App Pen Tester a Beginner\\nSee \/certifications\/ for the full wall.\\n&#34;},&#34;me.jpg&#34;:&#34;@image \/whoami\/cover-photo.jpg|Will in Cape Town, throwing peace signs&#34;,&#34;moments&#34;:&#34;@link https:\/\/moments.williamsmale.com\/&#34;,&#34;notes.txt&#34;:&#34;- finish the MCP risk post\\n- fix the thing\\n- buy coffee\\n- do NOT run rm -rf \/ again\\n&#34;,&#34;risk&#34;:&#34;@link https:\/\/risk.williamsmale.com\/&#34;,&#34;whoami.txt&#34;:&#34;AppSec by day. Homelab tinkerer and CTF hacker by night.\\nI write about Linux, Kubernetes, hacking, and the occasional unhinged rant.\\n&#34;}},&#34;root&#34;:{&#34;.secret&#34;:&#34;@denied there is nothing here&#34;,&#34;_denied&#34;:true},&#34;tmp&#34;:{},&#34;var&#34;:{&#34;log&#34;:{&#34;auth.log&#34;:&#34;Oct 25 23:05:12 williamsmale sshd[1337]: Failed password for root from 203.0.113.42 port 51022 ssh2\\nOct 25 23:05:14 williamsmale sshd[1337]: Failed password for admin from 203.0.113.42 port 51023 ssh2\\nOct 25 23:05:17 williamsmale sshd[1337]: Failed password for will from 203.0.113.42 port 51024 ssh2\\nOct 25 23:05:19 williamsmale sshd[1337]: Connection closed by 203.0.113.42 port 51024 [preauth]\\nOct 25 23:05:20 williamsmale sshd[1337]: Banned 203.0.113.42. Nice try.\\n&#34;}}}\" data-fortunes=\"[&#34;The quieter you become, the more you can hear.&#34;,&#34;There are more stars in the universe than seconds in a human life.&#34;,&#34;It&#39;s not a bug. It&#39;s an undocumented feature.&#34;,&#34;Every system is secure until someone bothers to look.&#34;,&#34;The S in IoT stands for security.&#34;,&#34;There is no cloud. It&#39;s just someone else&#39;s computer.&#34;,&#34;Have you tried turning it off and on again?&#34;]\" role=\"figure\" aria-label=\"Interactive terminal for will@williamsmale\">\n  <div class=\"term-bar\"><span class=\"term-title\">will@williamsmale: ~<\/span><\/div>\n  <div class=\"term-body\">\n    <span class=\"term-line term-muted\">Last login: Fri Sep 15 11:30:03 2023 on tty1<\/span>\n    <span class=\"term-line term-muted\">Failed password attempts since last login: 1337<\/span>\n    <span class=\"term-line term-cmd\"><span class=\"term-prompt\">will@williamsmale ~ $<\/span> <span class=\"term-text\">cat ~\/.profile<\/span><\/span>\n    <span class=\"term-line term-out\">NAME=&#34;William Smale&#34;<\/span>\n    <span class=\"term-line term-out\">LOCATION=&#34;London, UK&#34;<\/span>\n    <span class=\"term-line term-out\">ROLE=&#34;Senior Application Security Engineer&#34;<\/span>\n    <span class=\"term-line term-out\">EXPERIENCE=&#34;8 years&#34;<\/span>\n    <span class=\"term-line term-out\">LANGUAGES=&#34;Go Python Bash&#34;<\/span>\n    <span class=\"term-line term-out\">INTERESTS=&#34;coding hacking diving photography philosophy&#34;<\/span>\n    <span class=\"term-line term-cmd\"><span class=\"term-prompt\">will@williamsmale ~ $<\/span> <span class=\"term-text\">cat .flag<\/span><\/span>\n    <span class=\"term-line term-out\">cat: .flag: Permission denied<\/span>\n    <form class=\"term-line term-cmd term-end\" autocomplete=\"off\"><label class=\"term-prompt\" for=\"term-input-0\">will@williamsmale ~ $<\/label> <input class=\"term-input\" id=\"term-input-0\" type=\"text\" autocapitalize=\"off\" autocorrect=\"off\" spellcheck=\"false\" aria-label=\"Type a command and press Enter\"><\/form>\n  <\/div>\n<\/div>\n<script defer src=\"https:\/\/williamsmale.com\/js\/terminal.min.9b7b793a6e797f23e29983d3b05b1e048f86f3f81727d7a5efe3199643a0a2a8.js\"><\/script>"},{"title":"Why you should run a half marathon","link":"https:\/\/williamsmale.com\/blog\/story_time\/why-you-should-run-a-half-marathon\/","pubDate":"Tue, 25 Apr 2023 17:01:57 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/why-you-should-run-a-half-marathon\/","description":"<p>Because running ~21km sounds tough but in truth, IT\u2019S FUCKING EASY. I have walked that in a day, so running it will be a breeze right?!<\/p>\n<p><img alt=\"RunnigRocky.gif\" loading=\"lazy\" src=\"https:\/\/media.giphy.com\/media\/v1.Y2lkPTc5MGI3NjExbGhrbTJvYm1raHJlOWVwY2d2NHVlZ3Fua3V6YjJ5ODkyZzFxMWk3YyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw\/26tPrj21W9DYMB2dW\/giphy.webp#center\"><\/p>\n<p>The difficulty doesn\u2019t come from setting your goal. The difficulty comes with following through on them!<\/p>\n<p>Let me rewind a bit. How did I, an avid NON-RUNNER get roped into this? It all started one early morning, I was brewing my morning coffee at the office machine and my colleague Julia asked me if I wanted to sign up for the London half marathon as she had. Without too much thought, I blurted \u201cYe sure sounds like a great idea\u201d and before the day was up I was registered\u2026 No going back now.w<\/p>"},{"title":"Simple Homemade Bread","link":"https:\/\/williamsmale.com\/blog\/story_time\/simple-homemade-bread\/","pubDate":"Thu, 15 Apr 2021 09:58:47 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/simple-homemade-bread\/","description":"<p>A family recipe that was passed down through the generations. Thank you for this one granny ^^<br>\nEnjoy, this recipe is super flexible. In my family this recipe is known as the kitchen sink bread , go wild!<\/p>\n<h4 id=\"ingredients\">Ingredients<\/h4>\n<ul>\n<li>500g Nutty wheat flour (or combination of any flours)<\/li>\n<li>500ml Butter milk (or equivalent yoghurt, milk and a squeeze of lemon)<\/li>\n<li>1tbsp honey in a little hot water depending on how dry mixture is<\/li>\n<li>1tsp Salt<\/li>\n<li>1tsp Bicarbonate soda<\/li>\n<li>1tsp Cream of tartar<\/li>\n<\/ul>\n<p>Plus these additions (Options are flexible)<\/p>"},{"title":"Lockpicking a Rooftop Cargo Carrier","link":"https:\/\/williamsmale.com\/blog\/story_time\/lockpicking-a-rooftop-cargo-carrier\/","pubDate":"Fri, 30 Oct 2020 07:59:41 +0000","guid":"https:\/\/williamsmale.com\/blog\/story_time\/lockpicking-a-rooftop-cargo-carrier\/","description":"<p>So my uncle forgot his keys to his roof rack\u2026 Ok when you have just left home. Not so ok when you at 5 hours from it!<\/p>\n<p>He was travelling with his family to the Kruger National Park. His trip takes him passed Johannesburg where I live so they all stayed the night, catching up with family, leaving the last 4 hours of the trip for the next day. When they arrived he realised that he had forgotten the key to the roof mounted carrier probably 5 hours away at their home. Thing is all their overnight gear was stored in the roof top carrier. Toothbrushes, Underwear, Cables you know all overnight essentials!!!<br>\nI have never picked this type of lock before\u2026 Well no time like the present. I grab my picking set and get to work. The first attempt was partly successful but not completely unlocked successful\u2026 RESEARCH TIME!<\/p>"}]}}