You've already forked ProfessionalWebsite
All checks were successful
Publish to Server / Deploy (push) Successful in 52s
Signed-off-by: Alexander Davis <alex@adcm.uk>
759 lines
66 KiB
HTML
759 lines
66 KiB
HTML
<!DOCTYPE html>
|
||
<html data-bs-theme="auto" lang="en-gb">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<!-- Matomo -->
|
||
<script>
|
||
var _paq = window._paq = window._paq || [];
|
||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||
_paq.push(['trackPageView']);
|
||
_paq.push(['enableLinkTracking']);
|
||
(function() {
|
||
var u="//analytics.adcmnetworks.co.uk/";
|
||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||
_paq.push(['setSiteId', '1']);
|
||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||
})();
|
||
</script>
|
||
<!-- End Matomo Code -->
|
||
|
||
<script src="https://kit.fontawesome.com/8970d94f9b.js" crossorigin="anonymous"></script>
|
||
|
||
<meta name="fediverse:creator" content="@MrDavisCSIT@mstdn.social">
|
||
<script src="https://cms.tahdah.me/scripts/publicbadge.js"></script>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||
<title>The Split Up</title>
|
||
<link rel="canonical" href="https://www.mrlyall.uk/posts/the-split-up.html">
|
||
<meta property="og:url" content="https://www.mrlyall.uk/posts/the-split-up.html">
|
||
<meta name="twitter:description" content="The website of Mr. A. Lyall, featuring a portfolio of work in computing education, digital projects, and curriculum resources. Explore blog posts, classroom tools, and professional insights focused on innovation, inclusion, and effective IT teaching.">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta property="og:type" content="website">
|
||
<meta name="twitter:title" content="Mr Lyall">
|
||
<meta property="og:image" content="https://www.mrlyall.uk/assets/img/blog/break-up.jpg">
|
||
<meta name="description" content="A short simple update on system migration...">
|
||
<script>
|
||
(function() {
|
||
|
||
// JavaScript snippet handling Dark/Light mode switching
|
||
|
||
const getStoredTheme = () => localStorage.getItem('theme');
|
||
const setStoredTheme = theme => localStorage.setItem('theme', theme);
|
||
const forcedTheme = document.documentElement.getAttribute('data-bss-forced-theme');
|
||
|
||
const getPreferredTheme = () => {
|
||
|
||
if (forcedTheme) return forcedTheme;
|
||
|
||
const storedTheme = getStoredTheme();
|
||
if (storedTheme) {
|
||
return storedTheme;
|
||
}
|
||
|
||
const pageTheme = document.documentElement.getAttribute('data-bs-theme');
|
||
|
||
if (pageTheme) {
|
||
return pageTheme;
|
||
}
|
||
|
||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||
}
|
||
|
||
const setTheme = theme => {
|
||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
document.documentElement.setAttribute('data-bs-theme', 'dark');
|
||
} else {
|
||
document.documentElement.setAttribute('data-bs-theme', theme);
|
||
}
|
||
}
|
||
|
||
setTheme(getPreferredTheme());
|
||
|
||
const showActiveTheme = (theme, focus = false) => {
|
||
const themeSwitchers = [].slice.call(document.querySelectorAll('.theme-switcher'));
|
||
|
||
if (!themeSwitchers.length) return;
|
||
|
||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||
element.classList.remove('active');
|
||
element.setAttribute('aria-pressed', 'false');
|
||
});
|
||
|
||
for (const themeSwitcher of themeSwitchers) {
|
||
|
||
const btnToActivate = themeSwitcher.querySelector('[data-bs-theme-value="' + theme + '"]');
|
||
|
||
if (btnToActivate) {
|
||
btnToActivate.classList.add('active');
|
||
btnToActivate.setAttribute('aria-pressed', 'true');
|
||
}
|
||
}
|
||
}
|
||
|
||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||
const storedTheme = getStoredTheme();
|
||
if (storedTheme !== 'light' && storedTheme !== 'dark') {
|
||
setTheme(getPreferredTheme());
|
||
}
|
||
});
|
||
|
||
window.addEventListener('DOMContentLoaded', () => {
|
||
showActiveTheme(getPreferredTheme());
|
||
|
||
document.querySelectorAll('[data-bs-theme-value]')
|
||
.forEach(toggle => {
|
||
toggle.addEventListener('click', (e) => {
|
||
e.preventDefault();
|
||
const theme = toggle.getAttribute('data-bs-theme-value');
|
||
setStoredTheme(theme);
|
||
setTheme(theme);
|
||
showActiveTheme(theme);
|
||
})
|
||
})
|
||
});
|
||
})();
|
||
</script>
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" media="(prefers-color-scheme: dark)">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" media="(prefers-color-scheme: dark)">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css?h=c9d969cca6f72ca8d4dfd457f2e8eff8">
|
||
<link rel="stylesheet" href="../assets/css/Lato.css?h=4cf0101c9fb4e71821a619e3490ba3db">
|
||
<link rel="stylesheet" href="../assets/css/bss-overrides.css?h=15b91a8988c8fc6448a8989802a159de">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
|
||
<link rel="stylesheet" href="../assets/css/styles.css?h=7c67e1bb3df4cb41abaceaf312f03dfa">
|
||
<link rel="stylesheet" href="../assets/css/pikaday.min.css?h=a9ab8ca627aa6e8f64b730ca9c2c781d">
|
||
<link rel="stylesheet" href="../assets/css/CookieConsentComponent.css?h=39af3305e95f4d2a8883e97d7e0cdb14">
|
||
<link rel="stylesheet" href="../assets/css/animations.compiled.css?h=49917e33fe831aa33e24fb1e8124fdd9">
|
||
<link rel="stylesheet" href="../assets/css/Carousel---Slider-With-Animation.css?h=63f5768f05d2ae91446ac010bcd4844a">
|
||
</head>
|
||
|
||
<body>
|
||
<nav class="navbar navbar-expand-md fixed-top portfolio-navbar gradient navbar-dark">
|
||
<div class="container-fluid"><a class="navbar-brand logo" href="../../"><img alt="Stylised white microchip icon on a black background, designed as a modern tech-themed logo for ADCM" src="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" width="50" height="50" class="mobile-padding-left"></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navbarNav" style="margin-right: 0.5em;"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
|
||
<div class="collapse navbar-collapse" id="navbarNav">
|
||
<ul class="navbar-nav ms-auto">
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../">Home</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../about">About</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../projects">My Work</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../my-work/showreel">Showreel</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../blog">Blog</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<main class="page">
|
||
<section class="blog-block project portfolio-block">
|
||
<div class="container center-everything">
|
||
<!-- Start: blog heading -->
|
||
<div class="align-content-center heading blog-heading split">
|
||
<h2>The Split Up</h2><time class="fs-5" datetime="2025-12-14">14 Dec 2025</time>
|
||
</div><!-- End: blog heading -->
|
||
<div class="alert alert-danger" role="alert"><span><strong>Content Advisory</strong></span>
|
||
<p class="no-padding no-margin">This blog post contains explicit content</p>
|
||
</div>
|
||
<div class="alert alert-info" role="alert"><span><strong>Catching You Up…</strong></span>
|
||
<p class="no-padding no-margin"><strong>TL;DR of the last post:</strong> In <a class="alert-link" href="the-migration-process"><em><span style="font-weight: normal !important;">The Migration Process</span></em></a>, I reflected on several major changes in my life: getting married, changing my surname to Lyall, and beginning a gradual move away from the Apple ecosystem by replacing devices and services. I outlined the very real challenges of updating my identity across banks, networks, applications, and organisations, alongside switching mobile providers and restructuring my online presence through new domains. I also touched on completing the NPQLT qualification with mixed feelings.<br><br>The longer-term aim remains the same: to simplify, consolidate, and better align my digital infrastructure and personal identity, while keeping key projects, particularly ADCM, stable.<br><br>This post is essentially an update on what progress has been made so far, what has changed direction slightly, and where things are heading next.</p>
|
||
</div>
|
||
<p></p>
|
||
<h3>Leaving the Orchard</h3>
|
||
<p>I’m still living tagless, which has become a headache in its own right. Everything is too expensive to buy outright, and I’m constantly losing the things that AirTags quietly used to solve for me: keys being the main offender.<br><br>I’m clinging on to my AirPods Pro for now, but I’m hoping to unwrap a pair of Fairphone Buds at Christmas. That said, four months into this new ecosystem, it’s fair to ask a simple question: <em>how do I actually feel about the move?</em><br>Honestly? I think it’s fucking shit.<br><br>This is, without question, the buggiest Android phone I’ve ever owned. Wi-Fi regularly just… stops working, with a full restart being the only reliable fix. It has an alarming obsession with pocket-dialling half my contacts while I’m at work. Android Auto is a complete nightmare: getting it to even <em>consider</em> connecting seems to require a team of rocket scientists operating the phone while I attempt to drive without crashing. Apps crash constantly, behaviour is wildly unpredictable, and the whole experience feels fragile in a way I genuinely wasn’t prepared for.<br><br>What makes this worse is the update story. One of Fairphone’s biggest selling points is long-term software support, yet the promised updates feel like vapourware—vague timelines, inconsistent delivery, and absolutely no sense of certainty. At least with an iPhone I <em>knew</em> when an update was coming. It might have been annoying, buggy, or occasionally broken, but it arrived when Apple said it would. That predictability matters far more than I realised.<br><br>I didn’t realise Android could feel like it was built on sticks of dried pasta and marshmallows, held together by “good vibes” and hope rather than anything resembling solid engineering.<br><br>I genuinely regret moving to Android. Unfortunately, I don’t have the luxury of simply going out and buying an iPhone outright, so I’m stuck living with this decision for now. What I <em>do</em> know with absolute certainty is this: the next phone I own will be made by either Google or Apple.<br><br>To be clear, Android itself isn’t automatically out. Google is still very much in the running. At least with a Pixel phone, I know the hardware and software are designed <em>for each other</em>. There’s a single owner of the stack, a clear update path, and some actual accountability when things break. What I regret isn’t “Android” — it’s this fragmented, poorly integrated implementation of it.<br><br>Fairphone, though? Never again. I will <strong>never, ever</strong> buy a Fairphone in my life. This one will be sold the moment the contract ends.<br><br>Unfortunately, the watch experience hasn’t exactly redeemed things either. I decided the best option was to go with the Google Pixel Watch 4. It’s… <em>alright</em>. Nothing to write home about.<br><br>I do have some serious gripes, though. Setting a timer on it feels like playing <em>The Crystal Maze:</em> you never quite know what you’re going to get. The UI is like trying to play <em>Bullseye</em> through a Wi-Fi router (the router web UI, not the internet connection). It feels disjointed, unintuitive, and as though it was designed to be operated almost entirely by voice command. Even then, I often find myself having to scream swear words at it just to get the bloody thing to listen.<br><br>I genuinely miss my Apple Watch and my iPhone. And that’s saying something, because I hated plenty about them. But they worked. They were predictable. They did what I asked, when I asked, without turning basic interactions into an endurance sport.<br><br>That said, I don’t want them back, not yet, anyway. I’ve still got another 18 months left on the contracts for my Android pieces of shit, so for now, this is the bed I’m lying in.<br><br>If there’s any lesson in all of this, it’s that good intentions don’t excuse poor execution. Sustainability, ethics, and repairability matter, but reliability, integration, and predictability are non-negotiable. When the tools you rely on every single day actively fight you, no amount of principle makes up for something that just doesn’t fucking work.</p>
|
||
<p></p>
|
||
<h3>The NPQLT Chapter Closes</h3>
|
||
<p>My fairly scathing take on the NPQ system has not gone unnoticed. Someone from the Trust’s provider reached out to invite me to a meeting to discuss my experiences. Whether that leads to meaningful change remains to be seen.<br><br>Elsewhere in my working life, I’ve been reminded, again, how broken professional development in education really is. I’m currently supporting a colleague with their professional growth, yet one poorly chosen word in an email risked making it sound like I was placing them on capability (the polite process of telling someone they’re shite before sacking them) when I most certainly was not doing so.<br><br>This colleague is what you’d call <em>well-seasoned</em>. They’ve been teaching far longer than I have and simply want to catch up with more recent developments in education. That should be encouraged, not weaponised through bureaucratic language and broken systems.<br><br>All of this reinforces the same conclusion: the profession deserves a far better, safer, and more human model of professional growth than the one we currently have.</p>
|
||
<h3>Bureaucracy vs. Reality</h3>
|
||
<p>The name-change saga continues, and this time I can’t even pretend it’s not partly my fault. On phone calls, I still introduce myself as “Mr Davis”, only to confidently respond with “Mr Lyall” when asked for confirmation at the end. Four months in, and the muscle memory clearly hasn’t caught up yet.<br><br>Meanwhile, my marathon of admin battles with the bank finally exposed just how dysfunctional they were. That pushed me to switch to a new bank, helped admittedly by a £200 switching incentive. Inevitably, there was an almighty cock-up during the process, but crucially, the new bank has handled it far better than the outgoing one ever did.</p>
|
||
<h2>Breaking Up Assets</h2>
|
||
<p>With all that in mind, I started the <em>fun</em> task of moving everything over to the new name and new domains. This is a huge job and will probably consume most of the Christmas break, but a few key changes are worth highlighting.</p>
|
||
<h3>The New Broadband</h3>
|
||
<p>The whole rethink started because my broadband contract was due to expire. After some back-and-forth with the provider, I’ve secured literally double the speed, brand-new equipment, and all for about £5 more per month.<br>Even better, because the order was placed during Black Friday and they failed to meet the agreed installation timescale, we’re getting a month of service free after Christmas. Bad customer service, briefly redeemed.</p>
|
||
<h3>The New Server</h3>
|
||
<p>The biggest driver behind this shift has been the new server. I’ve paid for a year of a dedicated server based in Germany for £300, £120 less than my existing annual web hosting costs. That price also includes a year of basic shared hosting.<br><br>Put simply: the entire setup costs less than my old hosting alone, yet this server has <strong>significantly more processing power than both my existing hosting and my home lab combined</strong>.<br><br>Conveniently, the broadband migration also managed to break my current server configuration. While Proxmox is excellent for beginners, I’m increasingly finding it more hassle than help. I’m seriously considering moving back to Unraid, even though we moved away from it for similar frustrations, but Unraid actually supports my GTX 970 GPU properly in Docker. With Proxmox, you have to jump through endless hoops, with no guarantee it’ll work in the end.<br><br>This Christmas, the plan is for most of my home lab to migrate to the dedicated server. Media processing services will remain at home (I want that fast local connection), as will Home Assistant, but with a change. One Proxmox node will be wiped and replaced with HASSOS, giving Home Assistant its own dedicated machine.<br><br>For the first time ever, my Home Assistant instance will be running on frankly overkill hardware: 4 cores, 4 threads, and 12GB of RAM.<br><br>Once the old services are pulled off the broken Proxmox VMs, Home Assistant will live on the micro-server and Unraid will be reinstated on the more powerful server.</p>
|
||
<h3>The Future of CS:Box</h3>
|
||
<p>As part of the wider restructuring and migration to <code>mrlyall.co.uk</code>, I’ve decided that CS:Box needs to move to its own dedicated domain. If people begin contributing to it, I don’t want everything to fall back on me to maintain indefinitely. It also ensures the Trust can’t take ownership of the project: while it benefits our students, it’s open-source, and I don’t make a penny from it.<br><br>In short, I’m paid entirely in exposure.<br><br>The main complication is that <em>csbox.co.uk</em> was already registered. Alongside wider curriculum reviews, and influenced by the UK Government’s <a href="https://www.gov.uk/government/publications/curriculum-and-assessment-review-final-report"><br><em><span style="color: rgb(33, 37, 41);">Curriculum and Assessment Review Final Report</span></em></a>, I’ve decided CS:Box should fully encompass all strands of Computing, not just Computer Science. That also future-proofs it as we move towards GCSE Computing rather than GCSE Computer Science.<br><br>From January, CS:Box will be rebranded as <strong>Computing:Box</strong>. All existing sites, domains, and sub-domains will redirect to:</p>
|
||
<ul>
|
||
<li>computingbox.uk</li>
|
||
<li>computingbox.co.uk</li>
|
||
</ul>
|
||
<p>As with my wider domain strategy, both versions are registered, with the <code>.uk</code> domain redirecting to the <code>.co.uk</code>.</p>
|
||
<h3>Blog, Portfolio, Launchpad?</h3>
|
||
<p>One significant change to the original plan is how this site and its domains will be organised. From 2026, things will split more cleanly:</p>
|
||
<ul>
|
||
<li>My portfolio will move to <strong>www.adcmnetworks.co.uk</strong></li>
|
||
<li>A new launchpad will live on <strong>mrlyall.co.uk</strong>, directing students to the correct resources (Computing:Box, Lightbot, Go Links, etc.)</li>
|
||
<li>My blog will move to <strong>blog.mrlyall.co.uk</strong>—hidden enough that students won’t stumble across it, but visible enough for others to find</li>
|
||
<li>All affiliated websites (computingbox.co.uk, lightbot, etc.) will no longer point to my portfolio, blog, or personal Git repositories</li>
|
||
</ul>
|
||
<h2>Preparing for Phase 3?</h2>
|
||
<p>This phase feels less like a dramatic reinvention and more like a long-overdue separation of concerns: personal from professional, experimental from stable, and visible from quietly functional.<br><br>There’s still a lot of tinkering ahead, and I’m under no illusion that this will be the <em>final</em> iteration. But for the first time in a while, the direction feels clearer: fewer tangled dependencies, cleaner boundaries, and systems that reflect who I am now; not who I was when they were first built.<br><br>The split up isn’t about abandoning the past. It’s about finally giving each part of it the space to work properly.</p>
|
||
<div data-bss-type="blog-loop" class="loop-padding">
|
||
<div class="row" data-bss-type="blog-loop-base">
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="the-migration-process.html"><img alt="flying airliner in sky" class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/migration-process.webp?h=e112f60ecc785c0dfc809a62dd3a356f"></a>
|
||
<div class="card-body"><a href="the-migration-process.html">
|
||
<h4 class="text-body">The Migration Process</h4>
|
||
</a><time datetime="2025-10-27">27 Oct 2025</time>
|
||
<p class="card-text">After a year of big changes: marriage, a name change, and the end of my NPQLT. I’ve started migrating every part of my digital life. From leaving the Apple ecosystem to rebuilding my online presence under mrlyall.co.uk, this post dives into what’s changing, what’s staying, and why it’s time for the Davis identity to be gracefully relegated. Same me, just a little more Lyall-logical.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="clearing-the-clutter.html"><img alt="A chaotic pile of assorted tools including scissors, hammers, knives, and screwdrivers, representing disorganisation or overload." class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/clearing_the_clutter.webp?h=663b94419c9fd6cac937ef9f663fc013"></a>
|
||
<div class="card-body"><a href="clearing-the-clutter.html">
|
||
<h4 class="text-body">Clearing the Clutter: A Digital and Personal Reset</h4>
|
||
</a><time datetime="2025-05-26">26 May 2025</time>
|
||
<p class="card-text">I’ve been wanting to do something like this for a few years now, and this finally seems like the right time to take action.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="marking-the-milestone.html"><img alt="The Computing Quality Mark badge for the School Framework Award 2024–25, featuring a geometric green and black logo." class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/cqm_badge.webp?h=06a4655e63f99c242a43066a66fc492d"></a>
|
||
<div class="card-body"><a href="marking-the-milestone.html">
|
||
<h4 class="text-body">Marking the Milestone: Mastering the Computing Measure</h4>
|
||
</a><time datetime="2025-04-12">12 Apr 2025</time>
|
||
<p class="card-text">Note to self: I really need to post here more often! It’s been a whirlwind since my last update. Between chasing rapid grade improvements for our Year 11s, general OFSTED prep, onboarding a new team member, and—yes—rewriting the Key Stage 3 curriculum (again), I’ve completely lost track of time.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main><!-- Start: Footer Multi Column -->
|
||
<footer class="text-body bg-body" id="Light-Footer">
|
||
<div class="container py-4 py-lg-5 center-everything">
|
||
<div class="row justify-content-center">
|
||
<!-- Start: Accreditations -->
|
||
<div class="col-sm-3 col-md-6 text-center text-lg-start d-none d-sm-none d-md-none d-lg-flex flex-column">
|
||
<h3 class="fs-6 text-center text-body accreditations-title">Accreditations</h3>
|
||
<div class="swiper text-body w-100" id="light-swiper" data-bss-swiper="{"direction":"horizontal","loop":true,"autoplay":{"pauseOnMouseEnter":true},"autoHeight":true,"effect":"fade","fadeEffect":{"crossFade":true}}">
|
||
<div class="swiper-wrapper">
|
||
<!-- Start: Mountain Training -->
|
||
<div class="swiper-slide d-flex justify-content-center center-everything">
|
||
<div class="tahdah-badge" data-candidateid="1466454"></div>
|
||
</div><!-- End: Mountain Training -->
|
||
<!-- Start: Canva Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/canva-essentials-badge.webp?h=bc157efb7620e733f43b4b00981978ea"></a></div><!-- End: Canva Essentials -->
|
||
<!-- Start: Canva Essentials for Mobile -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-essentials-mobile" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/canva-essentials-for-mobile-badge.webp?h=93513f8f560a2e346c12aeb9fb0c18ec"></a></div><!-- End: Canva Essentials for Mobile -->
|
||
<!-- Start: Canva Graphic Design Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/graphic-design-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/graphic-design-essentials-badge.webp?h=f5406331e45433f0d8bd6b929f9d113b"></a></div><!-- End: Canva Graphic Design Essentials -->
|
||
<!-- Start: Marketing with Canva -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/marketing-with-canva" target="_blank"><img class="img-fluid w-100 accreditation" width="1080" height="1080" src="../assets/img/accreditations/mr-a-davis-marketing-with-canva-badge.webp?h=f0b802da597c825b7e03378130d94aca"></a></div><!-- End: Marketing with Canva -->
|
||
<!-- Start: Canva for Work -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-for-work" target="_blank"><img class="img-fluid w-100 accreditation" width="2160" height="2160" src="../assets/img/accreditations/mr-a-davis-canva-for-work-badge.webp?h=b3617633e9d2de429288704f75b304f4"></a></div><!-- End: Canva for Work -->
|
||
<!-- Start: Canva Teacher Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/teacher-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/teacher-essentials-badge.webp?h=d2d6f962e0b1bbebc68f987d6f156028"></a></div><!-- End: Canva Teacher Essentials -->
|
||
<!-- Start: Canva AI in the Classroom -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/ai-in-the-classroom" target="_blank"><img class="img-fluid w-100 accreditation" width="1080" height="1080" src="../assets/img/accreditations/ai-in-the-classroom-badge.webp?h=769458ef2c323729c209855a3cde7312"></a></div><!-- End: Canva AI in the Classroom -->
|
||
<!-- Start: Adobe Creative Educator Level 1 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/3a49b473-4af9-4c5a-ab38-1c754f181c6e/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Adobe Creative Educator Level 1"" width="600" height="600" src="../assets/img/accreditations/3_hours_adobe_creative_educator_level_1.webp?h=45de0c4e8984e885b1153e344e794beb"></a></div><!-- End: Adobe Creative Educator Level 1 -->
|
||
<!-- Start: Minecraft Education -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/53745c80-7d0a-4428-906a-839e905c139c/public_url" target="_blank"><img class="img-fluid w-100 accreditation" width="600" height="600" src="../assets/img/accreditations/minecraft-education-ambassador.webp?h=5c614dffa9ab6d6fd77cd805b8397ffd"></a></div><!-- End: Minecraft Education -->
|
||
<!-- Start: MCE -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/9c9dd6cd-2703-4539-adc9-366069cbc3a9/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MCE: Microsoft Certified Educator"" width="352" height="352" src="../assets/img/accreditations/mce_microsoft_certified_educator.webp?h=3e67f154a356cd1ef15c31b0fb42c0c4"></a></div><!-- End: MCE -->
|
||
<!-- Start: MIEE 2023-2024 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/b5ac17a1-0914-496f-9d85-9608966259ee/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Innovative Educator Expert 2023-2024"" width="600" height="600" src="../assets/img/accreditations/microsoft_innovative_educator_expert_2023_2024.webp?h=ee882aefba64b3e5b8ea9554eeea3847"></a></div><!-- End: MIEE 2023-2024 -->
|
||
<!-- Start: MIEE 2024-2025 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/ad92a7cb-3e4f-46e2-8e73-99dffd0eb69e/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Innovative Educator Expert 2024-2025"" width="600" height="600" src="../assets/img/accreditations/microsoft_innovative_educator_expert_2024_2025.webp?h=a0b5cb2a639caf0351a977146375667e"></a></div><!-- End: MIEE 2024-2025 -->
|
||
<!-- Start: Pearson OSA Expert -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/44756f05-e727-41c8-a352-a656c033c9f0/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Onscreen Assessment Expert GCSE Computer Science"" width="800" height="800" src="../assets/img/accreditations/pearson_onscreen_assessment_expert.webp?h=d4e00ea5bfad5a66c619238d7cbdd8db"></a></div><!-- End: Pearson OSA Expert -->
|
||
<!-- Start: STEM 21-22 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/52121ef6-0760-4870-91cc-1cb20001238b/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Establishing a STEM club - from creation to careers 2021/2022"" width="1200" height="1200" src="../assets/img/accreditations/establishing_a_stem_club_from_creation_to_careers_2021_2022.webp?h=7f96a591bd4fb09f86da96af8a8a41ef"></a></div><!-- End: STEM 21-22 -->
|
||
<!-- Start: NCCE Secondary 21-22 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/60d50339-2dda-4991-90b5-7ff087975746/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Secondary Computer Science - Professional Development 2021-2022"" width="1200" height="1200" src="../assets/img/accreditations/secondary_computer_science_professional_development_2021_2022.webp?h=813dd91393f904969bc3bf184007c8c2"></a></div><!-- End: NCCE Secondary 21-22 -->
|
||
<!-- Start: NCCE Secondary 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/e74f9011-4006-4570-824a-f483fdcb5b26/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Secondary Computing - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/secondary_computing_professional_development_2023_2.webp?h=77ebf2880eb7d342016b83e098d92d23"></a></div><!-- End: NCCE Secondary 23-24 -->
|
||
<!-- Start: NCCE GCSE Computer Science 19-20 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/c73720d2-8208-4e2b-a1e5-c473961834d9/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science: Professional Development 2019-2020"" width="1200" height="1200" src="../assets/img/accreditations/gcse_computer_science_professional_development_2019_2020.webp?h=fef2cee3326aeff9e2f65e86cf5e4fee"></a></div><!-- End: NCCE GCSE Computer Science 19-20 -->
|
||
<!-- Start: NCCE GCSE Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/c486279a-8e97-4779-90c1-56f09622e782/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science - Professional Development 2022-2023"" width="2000" height="2000" src="../assets/img/accreditations/gcse_computer_science_professional_development_2022_2023.webp?h=0a54c55717b61c0a0b4ed80582d7bfae"></a></div><!-- End: NCCE GCSE Computer Science 23-24 -->
|
||
<!-- Start: NCCE GCSE Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/e76ed57f-2270-47f5-8e7e-4136baa261f3/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/gcse_computer_science_professional_development_2023.webp?h=71b8c59772af539946fb49a210b05758"></a></div><!-- End: NCCE GCSE Computer Science 23-24 -->
|
||
<!-- Start: NCCE A Level Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/418cfb22-3e37-4b24-b527-652b1ab6ea76/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " A-Level Computer Science - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/a_level_computer_science_professional_development.webp?h=a9cc6f73abdf82ab49e5f8a8695cb557"></a></div><!-- End: NCCE A Level Computer Science 23-24 -->
|
||
<!-- Start: MOS Master -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/0e46d6b8-1a1b-4d16-a5d5-3b95661fb290/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Master 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_master_2013.webp?h=70d957a5307d38f46b84b6462439afbc"></a></div><!-- End: MOS Master -->
|
||
<!-- Start: MOS Word Expert -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/287d0ca4-bea1-4e18-b9e7-21f6a5d5d571/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Word 2013 Expert"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_word_2013_expert.webp?h=5bd4ec8c82587201172a8b8e460ff4e6"></a></div><!-- End: MOS Word Expert -->
|
||
<!-- Start: MOS Word -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/f1831f0e-776b-49aa-8a8d-05817d4b1410/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Word 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_word_2013.webp?h=2b90c5590b7b50f1891a9116fa38ac36"></a></div><!-- End: MOS Word -->
|
||
<!-- Start: MOS Excel -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/2ab55353-3267-46cc-b3f4-3099af54d869/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Excel 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_excel_2013.webp?h=f016925633d0a52b862259a05b396b6a"></a></div><!-- End: MOS Excel -->
|
||
<!-- Start: MOS PowerPoint -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/11162aa2-331a-4ec4-a612-665f3bc59cb1/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: PowerPoint 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_powerpoint_2013.webp?h=26de9623c491661347998549e10d4353"></a></div><!-- End: MOS PowerPoint -->
|
||
<!-- Start: MOS OneNote -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/cd328b1d-27b6-4410-be70-0792a99b72ea/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: OneNote 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_onenote_2013.webp?h=2ffe41c2a6e37d602469f8158ef13d79"></a></div><!-- End: MOS OneNote -->
|
||
<!-- Start: MTA Security -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/da3b3b4c-cec4-4537-bb5b-486ce9ee6ee7/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Security Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_security_fundamentals_certified_2016.webp?h=0df619419a5b6d0eb694dc9363870b20"></a></div><!-- End: MTA Security -->
|
||
<!-- Start: MTA Networking -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/23194bfe-30e4-4f8e-b9ec-338d060136dd/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Networking Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_networking_fundamentals_certified_2016.webp?h=cdc4618c5e86d11aa304cae14c3942bc"></a></div><!-- End: MTA Networking -->
|
||
<!-- Start: MTA Windows OS -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/f0f27d87-424b-49e8-a444-95086d640e66/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Windows Operating System Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_windows_operating_system_fundamentals_certified_2016.webp?h=44a6360480ef67ced301c697d31f9fa5"></a></div><!-- End: MTA Windows OS -->
|
||
</div>
|
||
</div>
|
||
<div class="swiper-nav-standalone d-flex justify-content-center accreditations-navigation" data-bss-swiper-target="#light-swiper">
|
||
<div class="swiper-button-prev"><button class="btn btn-primary btn-sm" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-arrow-left">
|
||
<path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"></path>
|
||
</svg></button></div>
|
||
<div class="swiper-button-next"><button class="btn btn-primary btn-sm" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-arrow-right">
|
||
<path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"></path>
|
||
</svg></button></div>
|
||
</div>
|
||
</div><!-- End: Accreditations -->
|
||
<!-- Start: Spacer -->
|
||
<div class="col-md-3 text-center text-lg-start d-flex flex-column"><a class="d-flex w-100 justify-content-center center-everything" href="https://client.brixly.uk/aff.php?aff=837" target="_blank"><img class="img-fluid object-fit-contain w-50" src="https://brixly.uk/wp-content/uploads/2022/06/Artboard-32.jpg"></a></div><!-- End: Spacer -->
|
||
<div class="col-md-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last">
|
||
<div class="fw-bold d-flex align-items-center mb-2"><img alt="Stylised orange microchip icon on a black background, designed as a modern tech-themed logo for ADCM" src="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501" width="50" height="50" class="footer-logo"><span>Mr A Lyall</span></div>
|
||
<p>IT professional and Head of Computing in the West Midlands</p>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="d-flex justify-content-between align-items-center pt-3">
|
||
<p class="mb-0 footer-copyright">Copyright © 2025 ADCM Networks</p>
|
||
<ul class="list-inline mb-0">
|
||
<!-- Start: Mastodon -->
|
||
<li class="list-inline-item"><a rel="me" href="https://mstdn.social/@MrDavisCSIT"><svg class="text-body" xmlns="http://www.w3.org/2000/svg" viewBox="-32 0 512 512" width="1em" height="1em" fill="currentColor">
|
||
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
|
||
<path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path>
|
||
</svg></a></li><!-- End: Mastodon -->
|
||
<!-- Start: Bluesky -->
|
||
<li class="list-inline-item"><a href="https://bsky.app/profile/adcmnetworks.co.uk"><i class="fa-brands fa-square-bluesky"></i></a></li><!-- End: Bluesky -->
|
||
<!-- Start: LinkedIn -->
|
||
<li class="list-inline-item"><a href="https://www.linkedin.com/in/MrDavisCSIT/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-linkedin text-body">
|
||
<path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401m-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4"></path>
|
||
</svg></a></li><!-- End: LinkedIn -->
|
||
<!-- Start: GitHub -->
|
||
<li class="list-inline-item"><a href="https://github.com/MrDavisCSIT"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-github text-body">
|
||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"></path>
|
||
</svg></a></li><!-- End: GitHub -->
|
||
<!-- Start: Reddit -->
|
||
<li class="list-inline-item"><a href="https://www.reddit.com/user/AlexanderEDavis95/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-reddit text-body">
|
||
<path d="M6.167 8a.831.831 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661m1.843 3.647c.315 0 1.403-.038 1.976-.611a.232.232 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83.458 0 .83-.381.83-.83a.831.831 0 0 0-1.66 0z"></path>
|
||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.203.203 0 0 0-.153.028.186.186 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224c-.02.115-.029.23-.029.353 0 1.795 2.091 3.256 4.669 3.256 2.577 0 4.668-1.451 4.668-3.256 0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165z"></path>
|
||
</svg></a></li><!-- End: Reddit -->
|
||
<!-- Start: YouTube -->
|
||
<li class="list-inline-item"><a href="https://www.youtube.com/channel/UCgDhiQMLbTemv2varDiW2rA"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-youtube text-body">
|
||
<path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408z"></path>
|
||
</svg></a></li><!-- End: YouTube -->
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</footer><!-- End: Footer Multi Column -->
|
||
<script>
|
||
(function() {
|
||
let collections = document.querySelectorAll('[data-bss-type="blog-loop"]');
|
||
let tagNavs = document.querySelectorAll('[data-bss-type="tag-nav"]');
|
||
let tagLoops = document.querySelectorAll('[data-bss-type="tag-loop"]');
|
||
let authorLoops = document.querySelectorAll('[data-bss-type="author-loop"]');
|
||
let authorNavs = document.querySelectorAll('[data-bss-type="author-nav"]');
|
||
|
||
window.addEventListener("popstate", (e) => {
|
||
for (let collection of collections) {
|
||
updateCollection(collection);
|
||
}
|
||
|
||
for (let tagNav of tagNavs) {
|
||
updateTagNav(tagNav);
|
||
}
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
});
|
||
|
||
for (let collection of collections) {
|
||
|
||
updateCollection(collection);
|
||
|
||
if (!canPaginateCollection(collection)) continue;
|
||
|
||
let pagination = collection.querySelector('[data-bss-type="blog-loop-pagination"]');
|
||
|
||
pagination.addEventListener('click', function(e) {
|
||
let paginationItem = e.target.closest('.page-item');
|
||
if (!paginationItem) return;
|
||
|
||
e.preventDefault();
|
||
|
||
if (paginationItem.classList.contains('disabled') || paginationItem.classList.contains('active')) return;
|
||
|
||
let collection = paginationItem.closest('[data-bss-type="blog-loop"]');
|
||
if (!collection) return;
|
||
|
||
let page = parseInt(paginationItem.dataset.page);
|
||
if (!page) return;
|
||
|
||
let pageParam = getPageParameter(collection);
|
||
|
||
if (pageParam) {
|
||
const url = new URL(window.location);
|
||
url.searchParams.set(pageParam, page);
|
||
history.pushState({
|
||
[pageParam]: page
|
||
}, document.title, url);
|
||
|
||
for (let c of collections) {
|
||
let param = getPageParameter(c);
|
||
if (param !== pageParam) continue;
|
||
updateCollection(c);
|
||
}
|
||
} else {
|
||
updateCollection(collection, page);
|
||
}
|
||
});
|
||
}
|
||
|
||
for (let tagNav of tagNavs) {
|
||
updateTagNav(tagNav);
|
||
tagNav.addEventListener('click', onTagClick);
|
||
}
|
||
|
||
for (let tagLoop of tagLoops) {
|
||
tagLoop.addEventListener('click', onTagClick);
|
||
}
|
||
|
||
for (let authorLoop of authorLoops) {
|
||
authorLoop.addEventListener('click', onAuthorClick);
|
||
}
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
|
||
function onTagClick(e) {
|
||
onBlogFilterClick(e);
|
||
|
||
for (let nav of tagNavs) {
|
||
updateTagNav(nav);
|
||
}
|
||
}
|
||
|
||
function onAuthorClick(e) {
|
||
onBlogFilterClick(e);
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
}
|
||
|
||
function onBlogFilterClick(e) {
|
||
const item = e.target.closest('[data-bss-filter="blog"]');
|
||
if (!item || !item.dataset.hasOwnProperty('bssHref') || !item.dataset.hasOwnProperty('bssFilterParam')) return;
|
||
|
||
const stateNode = item.dataset.hasOwnProperty('bssStateNode') ? item : item.querySelector('[data-bss-state-node]');
|
||
|
||
if (stateNode && (stateNode.classList.contains('disabled') || stateNode.classList.contains('active'))) {
|
||
e.preventDefault();
|
||
return;
|
||
}
|
||
|
||
const link = item.dataset.bssHref;
|
||
if (!linksToCurrentPage(link)) return;
|
||
|
||
e.preventDefault();
|
||
|
||
const url = new URL(window.location);
|
||
const filterParam = item.dataset.bssFilterParam;
|
||
const filterValue = item.dataset.bssFilterValue || '';
|
||
|
||
const collectionsToUpdate = [];
|
||
const newQueryParams = {
|
||
[filterParam]: filterValue
|
||
};
|
||
|
||
for (let c of collections) {
|
||
if (!canFilterCollection(c)) continue;
|
||
collectionsToUpdate.push(c);
|
||
|
||
let pageParam = getPageParameter(c);
|
||
let page = url.searchParams.get(pageParam);
|
||
if (page === null || page == 1) continue;
|
||
|
||
newQueryParams[pageParam] = 1;
|
||
}
|
||
|
||
for (let param in newQueryParams) {
|
||
if (newQueryParams[param]) {
|
||
url.searchParams.set(param, newQueryParams[param]);
|
||
} else {
|
||
url.searchParams.delete(param);
|
||
}
|
||
}
|
||
|
||
history.pushState(newQueryParams, document.title, url);
|
||
|
||
for (let c of collectionsToUpdate) {
|
||
updateCollection(c);
|
||
}
|
||
}
|
||
|
||
function getCollectionFilters(collection) {
|
||
let filters = [];
|
||
|
||
try {
|
||
const parsed = JSON.parse(collection.dataset.bssFilters);
|
||
|
||
if (Array.isArray(parsed)) {
|
||
filters = parsed;
|
||
}
|
||
} catch (e) {}
|
||
|
||
return filters;
|
||
}
|
||
|
||
function getCollectionEmptyFilterAction(collection, filter = '') {
|
||
let emptyFilterActions = [];
|
||
|
||
try {
|
||
const parsed = JSON.parse(collection.dataset.bssEmptyFilterActions);
|
||
|
||
if (Array.isArray(parsed)) {
|
||
emptyFilterActions = parsed;
|
||
}
|
||
} catch (e) {}
|
||
|
||
const action = emptyFilterActions.find(action => action.filter === filter);
|
||
|
||
return action ? action.value : '';
|
||
}
|
||
|
||
function canFilterCollection(collection) {
|
||
return !!getCollectionFilters(collection).length;
|
||
}
|
||
|
||
function canFilterCollectionByTag(collection) {
|
||
return getCollectionFilters(collection).includes('tag');
|
||
}
|
||
|
||
function canFilterCollectionByAuthor(collection) {
|
||
return getCollectionFilters(collection).includes('author');
|
||
}
|
||
|
||
function shouldShowAllItemsForEmptyFilter(collection, filter = '') {
|
||
return getCollectionEmptyFilterAction(collection, filter) === 'show-all';
|
||
}
|
||
|
||
function canPaginateCollection(collection) {
|
||
return !!getCollectionPagination(collection);
|
||
}
|
||
|
||
function getCollectionPagination(collection) {
|
||
return collection.querySelector('[data-bss-type="blog-loop-pagination"]');
|
||
}
|
||
|
||
function getPageParameter(collection) {
|
||
return collection.dataset.bssPageParam;
|
||
}
|
||
|
||
function linksToCurrentPage(path = '') {
|
||
let currentURL, url;
|
||
|
||
try {
|
||
currentURL = new URL(window.location);
|
||
url = new URL(path, window.location.href);
|
||
} catch (e) {
|
||
console.error(e);
|
||
}
|
||
|
||
return currentURL.origin === url.origin && currentURL.pathname === url.pathname;
|
||
}
|
||
|
||
function updateCollection(collection, page, activeTag = '', activeAuthor = '') {
|
||
|
||
const url = new URL(window.location.href);
|
||
|
||
if (canPaginateCollection(collection)) {
|
||
if (!page) {
|
||
let pageParam = getPageParameter(collection);
|
||
page = (pageParam ? url.searchParams.get(pageParam) : 1) || 1;
|
||
}
|
||
}
|
||
|
||
if (canFilterCollectionByTag(collection) && !activeTag) {
|
||
let tagParam = 'tag';
|
||
activeTag = url.searchParams.get(tagParam) || '';
|
||
}
|
||
|
||
if (canFilterCollectionByAuthor(collection) && !activeAuthor) {
|
||
let authorParam = 'author';
|
||
activeAuthor = url.searchParams.get(authorParam) || '';
|
||
}
|
||
|
||
renderCollectionPage(collection, page, activeTag, activeAuthor);
|
||
}
|
||
|
||
function renderCollectionPage(collection, page = 1, activeTag = '', activeAuthor = '') {
|
||
|
||
page = Math.max(parseInt(page, 10), 1);
|
||
|
||
collection.style.removeProperty('display');
|
||
|
||
let loopBase = collection.querySelector('[data-bss-type="blog-loop-base"]');
|
||
loopBase && loopBase.style.removeProperty('display');
|
||
|
||
let emptyState = collection.querySelector('[data-bss-type="empty-state"]');
|
||
emptyState && emptyState.style.setProperty('display', 'none', 'important');
|
||
|
||
let listItems = [].slice.call(collection.querySelectorAll('[data-bss-type="blog-loop-item"]'));
|
||
listItems.forEach(item => item.style.setProperty('display', 'none', 'important'));
|
||
|
||
if (canFilterCollectionByTag(collection)) {
|
||
listItems = listItems.filter(item => activeTag ? item.classList.contains('post-tag-' + activeTag) : shouldShowAllItemsForEmptyFilter(collection, 'tag'));
|
||
}
|
||
|
||
if (canFilterCollectionByAuthor(collection)) {
|
||
listItems = listItems.filter(item => activeAuthor ? item.classList.contains('post-author-' + activeAuthor) : shouldShowAllItemsForEmptyFilter(collection, 'author'));
|
||
}
|
||
|
||
let perPage = collection.dataset.bssPerpage || listItems.length;
|
||
let visibleListItems = listItems.slice((page - 1) * perPage, page * perPage);
|
||
visibleListItems.forEach(item => item.style.removeProperty('display'));
|
||
|
||
let isEmpty = !visibleListItems.length;
|
||
|
||
if (isEmpty) {
|
||
loopBase && loopBase.style.setProperty('display', 'none', 'important');
|
||
emptyState && emptyState.style.removeProperty('display');
|
||
}
|
||
|
||
let itemCount = listItems.length;
|
||
let pageCount = Math.max(Math.ceil(itemCount / perPage), 1);
|
||
|
||
updateCollectionPagination(collection, page, pageCount, isEmpty);
|
||
|
||
if (collection.dataset.bssScrollOnChange) {
|
||
scrollToCollectionTop(collection);
|
||
}
|
||
}
|
||
|
||
function updateCollectionPagination(collection, page, pageCount, isEmpty) {
|
||
let pagination = getCollectionPagination(collection);
|
||
if (!pagination) return;
|
||
|
||
let paginationItems = [].slice.call(pagination.querySelectorAll('.page-item'));
|
||
|
||
if (pageCount === 1 || isEmpty) {
|
||
pagination.style.setProperty('display', 'none', 'important');
|
||
} else {
|
||
pagination.style.removeProperty('display');
|
||
}
|
||
|
||
let previousBtnDisabled = page - 1 <= 0;
|
||
let previousPage = previousBtnDisabled ? 1 : page - 1;
|
||
|
||
let nextBtnDisabled = page + 1 > pageCount;
|
||
let nextPage = nextBtnDisabled ? pageCount : page + 1;
|
||
|
||
for (let i = 0; i < paginationItems.length; i++) {
|
||
let paginationItem = paginationItems[i];
|
||
|
||
paginationItem.classList.remove('active', 'disabled');
|
||
|
||
if (paginationItem.dataset.type === 'prev') {
|
||
paginationItem.dataset.page = previousPage;
|
||
|
||
if (previousBtnDisabled) {
|
||
paginationItem.classList.add('disabled');
|
||
}
|
||
} else if (paginationItem.dataset.type === 'next') {
|
||
paginationItem.dataset.page = nextPage;
|
||
|
||
if (nextBtnDisabled) {
|
||
paginationItem.classList.add('disabled');
|
||
}
|
||
} else {
|
||
if (paginationItem.dataset.page > pageCount) {
|
||
paginationItem.style.setProperty('display', 'none', 'important');
|
||
} else {
|
||
paginationItem.style.removeProperty('display');
|
||
}
|
||
|
||
if (paginationItem.dataset.page == page) {
|
||
paginationItem.classList.add('active');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function scrollToCollectionTop(collection) {
|
||
const rect = collection.getBoundingClientRect();
|
||
const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);
|
||
const threshold = 100;
|
||
|
||
if (rect.top >= 0 && viewHeight - rect.top > threshold) return;
|
||
|
||
setTimeout(() => {
|
||
collection.scrollIntoView({
|
||
behavior: "smooth",
|
||
block: "start",
|
||
inline: "start"
|
||
});
|
||
}, 0);
|
||
}
|
||
|
||
function updateTagNav(tagNav) {
|
||
const url = new URL(window.location.href);
|
||
|
||
let tagParam = 'tag';
|
||
let tag = url.searchParams.get(tagParam) || '';
|
||
|
||
renderTagNav(tagNav, tag);
|
||
}
|
||
|
||
function renderTagNav(tagNav, activeTag = '') {
|
||
if (!tagNav.dataset.bssSyncUrl) return;
|
||
|
||
let navItems = [].slice.call(tagNav.querySelectorAll('[data-bss-type="tag-loop-item"]'));
|
||
|
||
navItems.forEach(item => {
|
||
const activeClassNode = item.dataset.hasOwnProperty('bssStateNode') ? item : item.querySelector('[data-bss-state-node]');
|
||
if (!activeClassNode) return;
|
||
|
||
activeClassNode.classList.remove('active');
|
||
|
||
const link = item.dataset.bssHref;
|
||
if (!linksToCurrentPage(link) || activeClassNode.classList.contains('disabled')) return;
|
||
|
||
if (item.dataset.bssTag === activeTag) {
|
||
activeClassNode.classList.add('active');
|
||
}
|
||
});
|
||
}
|
||
|
||
function updateAuthorNav(authorNav) {
|
||
const url = new URL(window.location.href);
|
||
|
||
let authorParam = 'author';
|
||
let author = url.searchParams.get(authorParam) || '';
|
||
|
||
renderAuthorNav(authorNav, author);
|
||
}
|
||
|
||
function renderAuthorNav(authorNav, activeAuthor = '') {
|
||
if (!canFilterCollectionByAuthor(authorNav)) return;
|
||
|
||
authorNav.style.removeProperty('display');
|
||
|
||
let items = [].slice.call(authorNav.querySelectorAll('[data-bss-type="author-loop-item"]'));
|
||
items.forEach(item => item.classList.contains('author-' + activeAuthor) ? item.style.removeProperty('display') : item.style.setProperty('display', 'none', 'important'));
|
||
}
|
||
})();
|
||
</script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/js/bootstrap.bundle.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
|
||
<script src="../assets/js/bs-init.js?h=7c6b4c49b8ac0f383799ccb3d5def770"></script>
|
||
<script src="../assets/js/Carousel---Slider-With-Animation-slider_with_animation.js?h=948f8788fd189b5cc9df01ff4fce4152"></script>
|
||
<script src="../assets/js/CookieConsentComponent-cookieconsent.js?h=83fbb3192473604d72b00a854c6de4fd"></script>
|
||
<script src="https://kit.fontawesome.com/8970d94f9b.js"></script>
|
||
<script src="../assets/js/pikaday.min.js?h=039feef26d52ebc5f1260a47208bfa38"></script>
|
||
<script src="../assets/js/text-carousel.js?h=992f402828c7806b1f3bb7f29232e972"></script>
|
||
<script src="../assets/js/theme.js?h=aeddb9c3ce5d77b8278c91c07acf30ad"></script>
|
||
</body>
|
||
|
||
</html> |