Add placeholder story pages with 'Coming Soon' notices
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
f62ca2219e
commit
633302d1e6
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Colin Knapp - Airport DNS Infrastructure Case Study">
|
||||
<title>Airport DNS Infrastructure - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
||||
<div class="container-fluid" role="main">
|
||||
<div class="story-header">
|
||||
<h1>Airport DNS Infrastructure</h1>
|
||||
<p class="story-meta">Category: Infrastructure & Resilience | Date: 2019-Present</p>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="story-content">
|
||||
<div class="placeholder-notice">
|
||||
<h2>Coming Soon</h2>
|
||||
<p>This case study is currently under development. Check back soon for the full story about my work consulting for Flint Bishop International Airport's website and domain infrastructure.</p>
|
||||
|
||||
<h3>What to Expect</h3>
|
||||
<ul>
|
||||
<li>The architecture of a geographically redundant DNS cluster achieving an A+ standard</li>
|
||||
<li>Design considerations for infrastructure capable of withstanding extreme disruptions</li>
|
||||
<li>Implementation details of high-availability systems for critical infrastructure</li>
|
||||
<li>Security measures implemented to protect airport digital assets</li>
|
||||
</ul>
|
||||
|
||||
<p>In the meantime, you can visit the airport's website at:</p>
|
||||
<ul>
|
||||
<li><a href="https://bishopairport.org" target="_blank">Flint Bishop International Airport</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="story-footer">
|
||||
<div class="story-nav">
|
||||
<a href="/stories/wordpress-security.html" class="story-nav-link prev">Previous Story</a>
|
||||
<a href="/stories/nitric-leadership.html" class="story-nav-link next">Next Story</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Include -->
|
||||
<div id="footer-include"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Colin Knapp - FastAsyncWorldEdit & PlotSquared Case Study">
|
||||
<title>FastAsyncWorldEdit & PlotSquared - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
||||
<div class="container-fluid" role="main">
|
||||
<div class="story-header">
|
||||
<h1>FastAsyncWorldEdit & PlotSquared</h1>
|
||||
<p class="story-meta">Category: Open Source Development | Date: 2014-Present</p>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="story-content">
|
||||
<div class="placeholder-notice">
|
||||
<h2>Coming Soon</h2>
|
||||
<p>This case study is currently under development. Check back soon for the full story about my contributions to FastAsyncWorldEdit and PlotSquared, two major Minecraft server plugins that revolutionized world editing capabilities.</p>
|
||||
|
||||
<h3>What to Expect</h3>
|
||||
<ul>
|
||||
<li>The technical challenges of scaling from 50,000 server-crashing edits to billions without interruption</li>
|
||||
<li>How these tools power a $2 billion game brand</li>
|
||||
<li>The collaborative development process with global contributors</li>
|
||||
<li>Performance optimization techniques and architectural decisions</li>
|
||||
</ul>
|
||||
|
||||
<p>In the meantime, you can explore these projects on GitHub:</p>
|
||||
<ul>
|
||||
<li><a href="https://github.com/IntellectualSites/FastAsyncWorldEdit" target="_blank">FastAsyncWorldEdit Repository</a></li>
|
||||
<li><a href="https://github.com/IntellectualSites/PlotSquared" target="_blank">PlotSquared Repository</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="story-footer">
|
||||
<div class="story-nav">
|
||||
<a href="/stories/" class="story-nav-link prev">Back to Stories</a>
|
||||
<a href="/stories/healthcare-platform.html" class="story-nav-link next">Next Story</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Include -->
|
||||
<div id="footer-include"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Colin Knapp - Healthcare Platform Case Study">
|
||||
<title>Healthcare Platform - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
||||
<div class="container-fluid" role="main">
|
||||
<div class="story-header">
|
||||
<h1>Healthcare Platform Infrastructure</h1>
|
||||
<p class="story-meta">Category: Infrastructure & Security | Date: 2019-Present</p>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="story-content">
|
||||
<div class="placeholder-notice">
|
||||
<h2>Coming Soon</h2>
|
||||
<p>This case study is currently under development. Check back soon for the full story about my work on the infrastructure for Improving MI Practices, a critical healthcare education platform.</p>
|
||||
|
||||
<h3>What to Expect</h3>
|
||||
<ul>
|
||||
<li>The design and implementation of secure, scalable infrastructure for healthcare education</li>
|
||||
<li>Implementation of CIS Level 1 and 2 security standards</li>
|
||||
<li>Automated deployment pipelines and monitoring systems for high availability</li>
|
||||
<li>Technical challenges of handling sensitive healthcare training content</li>
|
||||
</ul>
|
||||
|
||||
<p>In the meantime, you can visit the platform at:</p>
|
||||
<ul>
|
||||
<li><a href="https://improvingmipractices.org" target="_blank">Improving MI Practices</a></li>
|
||||
<li><a href="https://archive.is/D5HIb" target="_blank">Archived Version</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="story-footer">
|
||||
<div class="story-nav">
|
||||
<a href="/stories/fawe-plotsquared.html" class="story-nav-link prev">Previous Story</a>
|
||||
<a href="/stories/wordpress-security.html" class="story-nav-link next">Next Story</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Include -->
|
||||
<div id="footer-include"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -6,12 +6,12 @@
|
|||
<meta name="description" content="Colin Knapp - Portfolio Stories and Case Studies">
|
||||
<title>Colin Knapp - Stories & Case Studies</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Colin Knapp - NitricConcepts Leadership Case Study">
|
||||
<title>NitricConcepts Leadership - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
||||
<div class="container-fluid" role="main">
|
||||
<div class="story-header">
|
||||
<h1>DevOps & Leadership at NitricConcepts</h1>
|
||||
<p class="story-meta">Category: Team Leadership & DevOps | Date: 2018-2021</p>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="story-content">
|
||||
<div class="placeholder-notice">
|
||||
<h2>Coming Soon</h2>
|
||||
<p>This case study is currently under development. Check back soon for the full story about my experience leading a global team at NitricConcepts in building secure, scalable gaming solutions.</p>
|
||||
|
||||
<h3>What to Expect</h3>
|
||||
<ul>
|
||||
<li>The challenges and successes of managing 45 contractors worldwide</li>
|
||||
<li>Implementation of Docker, Fail2Ban, and Salt Stack as part of a comprehensive toolchain</li>
|
||||
<li>How we fostered a collaborative, innovative team culture across multiple time zones</li>
|
||||
<li>The transformation of NitricConcepts into a thriving multinational entity</li>
|
||||
</ul>
|
||||
|
||||
<p>In the meantime, you can visit:</p>
|
||||
<ul>
|
||||
<li><a href="https://nitricconcepts.com" target="_blank">NitricConcepts Website</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="story-footer">
|
||||
<div class="story-nav">
|
||||
<a href="/stories/airport-dns.html" class="story-nav-link prev">Previous Story</a>
|
||||
<a href="/stories/open-source-success.html" class="story-nav-link next">Next Story</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Include -->
|
||||
<div id="footer-include"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -6,12 +6,12 @@
|
|||
<meta name="description" content="Colin Knapp - Open Source Community Success Case Study">
|
||||
<title>Open Source Community Success - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||
<script src="../includes.js" integrity="sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4="></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs="></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
|
||||
/* Individual story page styles */
|
||||
.story-header {
|
||||
margin-bottom: 2rem;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.story-header h1 {
|
||||
|
@ -102,6 +102,7 @@
|
|||
line-height: 1.7;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.story-content h2 {
|
||||
|
@ -123,8 +124,8 @@
|
|||
}
|
||||
|
||||
.story-footer {
|
||||
margin-top: 3rem;
|
||||
padding-top: 1rem;
|
||||
margin-top: 3em;
|
||||
padding-top: 2em;
|
||||
border-top: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
|
@ -133,35 +134,33 @@
|
|||
}
|
||||
|
||||
.related-stories h3 {
|
||||
margin-bottom: 1rem;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.related-stories-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
||||
gap: 1rem;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
gap: 1.5em;
|
||||
}
|
||||
|
||||
.story-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.story-nav-link {
|
||||
padding: 0.5rem 1rem;
|
||||
padding: 0.5em 1em;
|
||||
background-color: var(--theme-bg);
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 4px;
|
||||
text-decoration: none;
|
||||
color: var(--text-color);
|
||||
transition: background-color 0.3s, color 0.3s;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.story-nav-link:hover {
|
||||
background-color: var(--accent-color);
|
||||
color: white;
|
||||
border-color: var(--accent-color);
|
||||
background-color: var(--theme-hover);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.story-nav-link.prev::before {
|
||||
|
@ -192,6 +191,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.related-stories-list {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Accessibility enhancements */
|
||||
.story-link:focus {
|
||||
outline: 2px solid var(--focus-outline-color);
|
||||
|
@ -201,4 +206,40 @@
|
|||
/* Utility classes */
|
||||
.hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* Placeholder notice styling */
|
||||
.placeholder-notice {
|
||||
background-color: var(--theme-bg);
|
||||
border: 2px dashed var(--accent-color);
|
||||
border-radius: 8px;
|
||||
padding: 2em;
|
||||
margin: 2em 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.placeholder-notice h2 {
|
||||
color: var(--accent-color);
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.placeholder-notice h3 {
|
||||
margin-top: 1.5em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.placeholder-notice ul {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 1em auto;
|
||||
}
|
||||
|
||||
.placeholder-notice li {
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
|
||||
.placeholder-notice a {
|
||||
font-weight: bold;
|
||||
color: var(--accent-color);
|
||||
text-decoration: underline;
|
||||
}
|
|
@ -6,12 +6,12 @@
|
|||
<meta name="description" content="Colin Knapp - Story Example">
|
||||
<title>Story Example - Colin Knapp</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=">
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||
<script src="../includes.js" integrity="sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4="></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs="></script>
|
||||
</head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
<meta name="description" content="Colin Knapp - [Story Title] Case Study">
|
||||
<title>[Story Title] - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
<meta name="description" content="Colin Knapp - ViperWire Cybersecurity Case Study">
|
||||
<title>ViperWire Cybersecurity - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=" crossorigin="anonymous">
|
||||
<script src="../includes.js" integrity="sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-PzIpA2rd65QhtrVKWtx1/13mwFPbIl8DKS3arIpG8y4=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-ALJm8rFr/KMj0rKwlJLLJ3iq4FoBvZrBZaaGZS1qGOY=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'self' 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=' 'sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA='; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';">
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="Colin Knapp - WordPress Security Automation Case Study">
|
||||
<title>WordPress Security Automation - Colin Knapp Case Study</title>
|
||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-3j4CWp66TWtI4tbZunoBp+uSUypAY3XmM+/BYHycJ8A=" crossorigin="anonymous">
|
||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||
<script src="../includes.js" integrity="sha256-U/0GfLChEztK11zgqpsyEe7SFHmQMrhIBjjw24J2nNs=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O42V9brCZFYWsV+Yu5u141A1u5p5LcnOs5K1dVeaIVs=">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header Include -->
|
||||
<div id="header-include"></div>
|
||||
|
||||
<div class="container-fluid" role="main">
|
||||
<div class="story-header">
|
||||
<h1>WordPress Security Automation</h1>
|
||||
<p class="story-meta">Category: Security & Automation | Date: 2023</p>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="story-content">
|
||||
<div class="placeholder-notice">
|
||||
<h2>Coming Soon</h2>
|
||||
<p>This case study is currently under development. Check back soon for the full story about my work developing an automated solution for WordPress malware removal and hardening.</p>
|
||||
|
||||
<h3>What to Expect</h3>
|
||||
<ul>
|
||||
<li>The creation of a Docker-based utility for automated malware detection and removal</li>
|
||||
<li>Implementation of hardening measures to prevent reinfection</li>
|
||||
<li>Successful deployment to protect MLPP from persistent cyber attacks</li>
|
||||
<li>How infection frequency was reduced from daily/weekly to zero</li>
|
||||
</ul>
|
||||
|
||||
<p>In the meantime, you can visit the protected site at:</p>
|
||||
<ul>
|
||||
<li><a href="https://mlpp.org" target="_blank">MLPP</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="story-footer">
|
||||
<div class="story-nav">
|
||||
<a href="/stories/healthcare-platform.html" class="story-nav-link prev">Previous Story</a>
|
||||
<a href="/stories/airport-dns.html" class="story-nav-link next">Next Story</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer Include -->
|
||||
<div id="footer-include"></div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue