Optimize SEO meta tags and update sitemap for production
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
- Updated meta descriptions and titles for all HTML pages with concise, keyword-rich content - Optimized main pages (index.html, stories/index.html) with compelling descriptions - Enhanced all 15 story pages with unique, SEO-optimized meta tags - Improved CSV tool page SEO description - Updated generate-sitemap.sh to use production domain (https://colinknapp.com) - Regenerated sitemap.xml with production URLs and current timestamps - Verified and updated all integrity hashes using update-csp-hashes.sh
This commit is contained in:
parent
f7f7bcf7dc
commit
14b03869af
|
|
@ -12,7 +12,8 @@ echo "Generating sitemap.xml..."
|
||||||
|
|
||||||
# Directory containing the files
|
# Directory containing the files
|
||||||
BASE_DIR="$(pwd)"
|
BASE_DIR="$(pwd)"
|
||||||
DOMAIN="http://localhost:8080" # Use localhost for local development and testing
|
# Use production domain by default, can be overridden with SITEMAP_DOMAIN env var
|
||||||
|
DOMAIN="${SITEMAP_DOMAIN:-https://colinknapp.com}"
|
||||||
|
|
||||||
# Get current date in ISO 8601 format
|
# Get current date in ISO 8601 format
|
||||||
CURRENT_DATE=$(date -u +"%Y-%m-%dT%H:%M:%S+00:00")
|
CURRENT_DATE=$(date -u +"%Y-%m-%dT%H:%M:%S+00:00")
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Portfolio">
|
<meta name="description" content="DevSecOps consultant and cybersecurity expert. Led teams of 45+, built open-source tools with 10M+ downloads, and architected resilient infrastructure for government and healthcare clients.">
|
||||||
<title>Colin Knapp - Portfolio</title>
|
<title>Colin Knapp - DevSecOps Consultant & Cybersecurity Expert</title>
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||||
<link rel="stylesheet" href="styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
<script src="theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
<script src="theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||||
|
|
|
||||||
|
|
@ -60,3 +60,6 @@
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - CSV Processing Tool">
|
<meta name="description" content="Free browser-based CSV viewer tool. Paste CSV data to instantly view as formatted table with sorting, customizable delimiters, and client-side processing for privacy.">
|
||||||
<title>CSV Viewer - Colin Knapp</title>
|
<title>CSV Viewer Tool - Free Online CSV Parser</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css">
|
<link rel="stylesheet" href="../styles.css">
|
||||||
<link rel="stylesheet" href="tool-styles.css?v=2" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="tool-styles.css?v=2" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
|
|
|
||||||
|
|
@ -1,116 +1,116 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/index.html</loc>
|
<loc>https://colinknapp.com/index.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/one-pager-tools/csv-tool.html</loc>
|
<loc>https://colinknapp.com/one-pager-tools/csv-tool.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/airport-dns.html</loc>
|
<loc>https://colinknapp.com/stories/airport-dns.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/app-development.html</loc>
|
<loc>https://colinknapp.com/stories/app-development.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/athion-turnaround.html</loc>
|
<loc>https://colinknapp.com/stories/athion-turnaround.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/fawe-plotsquared.html</loc>
|
<loc>https://colinknapp.com/stories/fawe-plotsquared.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/healthcare-platform.html</loc>
|
<loc>https://colinknapp.com/stories/healthcare-platform.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/home-infrastructure.html</loc>
|
<loc>https://colinknapp.com/stories/home-infrastructure.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/index.html</loc>
|
<loc>https://colinknapp.com/stories/index.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/motherboard-repair.html</loc>
|
<loc>https://colinknapp.com/stories/motherboard-repair.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/nitric-leadership.html</loc>
|
<loc>https://colinknapp.com/stories/nitric-leadership.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/nuclear-dns.html</loc>
|
<loc>https://colinknapp.com/stories/nuclear-dns.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/open-source-success.html</loc>
|
<loc>https://colinknapp.com/stories/open-source-success.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/scansnap-webdav.html</loc>
|
<loc>https://colinknapp.com/stories/scansnap-webdav.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/showerloop.html</loc>
|
<loc>https://colinknapp.com/stories/showerloop.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/viperwire.html</loc>
|
<loc>https://colinknapp.com/stories/viperwire.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/web-design-java.html</loc>
|
<loc>https://colinknapp.com/stories/web-design-java.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/wordpress-security.html</loc>
|
<loc>https://colinknapp.com/stories/wordpress-security.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>http://localhost:8080/stories/youtube-game-dev.html</loc>
|
<loc>https://colinknapp.com/stories/youtube-game-dev.html</loc>
|
||||||
<lastmod>2025-10-27T17:50:37+00:00</lastmod>
|
<lastmod>2025-11-18T19:06:15+00:00</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Airport DNS Infrastructure Case Study">
|
<meta name="description" content="Architected geographically redundant DNS infrastructure for Flint Bishop International Airport, achieving A+ resilience standards for critical aviation infrastructure.">
|
||||||
<title>Airport DNS Infrastructure - Colin Knapp Case Study</title>
|
<title>Airport DNS Infrastructure - Resilient DNS Design</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - App Development for Influencers Case Study">
|
<meta name="description" content="Developed ad revenue tracking application for content creators with real-time analytics, secure API integrations, and data-driven content optimization tools.">
|
||||||
<title>App Development for Influencers - Colin Knapp Case Study</title>
|
<title>Ad Revenue Tracking App for Influencers</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Athion.net Turnaround Case Study">
|
<meta name="description" content="Revitalized struggling business into profitable operation in two weeks, developing revolutionary open-source tooling that powered major Minecraft projects.">
|
||||||
<title>Athion.net Turnaround - Colin Knapp Case Study</title>
|
<title>Athion.net Business Turnaround - Colin Knapp</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - FastAsyncWorldEdit & PlotSquared Case Study">
|
<meta name="description" content="Co-created FastAsyncWorldEdit and PlotSquared, scaling Minecraft world editing from 50K server-crashing edits to billions seamlessly, powering a $2B game brand.">
|
||||||
<title>FastAsyncWorldEdit & PlotSquared - Colin Knapp Case Study</title>
|
<title>FastAsyncWorldEdit & PlotSquared - Minecraft Tools</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Healthcare Platform Case Study">
|
<meta name="description" content="Designed secure, scalable infrastructure for Improving MI Practices healthcare education platform with CIS Level 1-2 security standards and high availability.">
|
||||||
<title>Healthcare Platform - Colin Knapp Case Study</title>
|
<title>Healthcare Platform Infrastructure - Secure Design</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Home Infrastructure Cluster & WireGuard Mesh Networking - Colin Knapp">
|
<meta name="description" content="Built self-hosted infrastructure cluster with 100+ services for data sovereignty and developed WireGuard mesh networking tool for quantum-resistant networking.">
|
||||||
<title>Home Infrastructure Cluster & WireGuard Mesh Networking - Colin Knapp</title>
|
<title>Home Infrastructure & WireGuard Mesh Networking</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Portfolio Stories and Case Studies">
|
<meta name="description" content="Explore detailed case studies and project stories from Colin Knapp's portfolio: cybersecurity, infrastructure, open source development, and team leadership.">
|
||||||
<title>Colin Knapp - Stories & Case Studies</title>
|
<title>Project Stories & Case Studies - Colin Knapp</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - MotherboardRepair.ca Case Study">
|
<meta name="description" content="Co-founded sustainable electronics repair company reducing e-waste through circuit board repairs and promoting environmental responsibility in tech industry.">
|
||||||
<title>MotherboardRepair.ca - Colin Knapp Case Study</title>
|
<title>MotherboardRepair.ca - Sustainable Tech Solutions</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Nitric Concepts Leadership Case Study">
|
<meta name="description" content="Led distributed team of 45 contractors at Nitric Concepts, bootstrapping company to $4M revenue while implementing DevSecOps practices across timezones.">
|
||||||
<title>Nitric Concepts Leadership - Colin Knapp Case Study</title>
|
<title>Nitric Concepts Leadership - Team Management</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Nuclear War-Resistant DNS Infrastructure - Colin Knapp">
|
<meta name="description" content="Architected georedundant, nuclear war-resistant DNS cluster for government clients, ensuring extreme resilience and A+ security standards for critical infrastructure.">
|
||||||
<title>Nuclear War-Resistant DNS Infrastructure - Colin Knapp</title>
|
<title>Nuclear War-Resistant DNS Infrastructure</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Open Source Community Success Case Study">
|
<meta name="description" content="Transformed OhMyForm from abandoned project to thriving community with 32K+ Discord members, 10M+ Docker pulls, and sustainable funding model.">
|
||||||
<title>Open Source Community Success - Colin Knapp Case Study</title>
|
<title>Open Source Community Success - OhMyForm</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="ScanSnap Scanner Service - High-performance receipt digitization for buildersclub.ca">
|
<meta name="description" content="Built high-performance ScanSnap scanner service processing ~1 receipt/second with batch capacity up to 50 documents, featuring automatic cleanup and WebDAV access.">
|
||||||
<title>ScanSnap Scanner Service - Colin Knapp Portfolio</title>
|
<title>ScanSnap Scanner Service - Receipt Digitization</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - ShowerLoop Project Case Study">
|
<meta name="description" content="Revitalized ShowerLoop website with WCAG 2.0 AA compliance, modern responsive design, and improved accessibility for innovative eco-friendly recirculating shower system.">
|
||||||
<title>ShowerLoop Project - Colin Knapp Case Study</title>
|
<title>ShowerLoop Project - Web Development & Accessibility</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4="></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA="></script>
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - ViperWire Cybersecurity Case Study">
|
<meta name="description" content="Built AI-powered cybersecurity consultancy ViperWire, delivering enterprise-grade security to SMBs with automated threat detection, reducing incident response time to 15 minutes.">
|
||||||
<title>ViperWire Cybersecurity - Colin Knapp Case Study</title>
|
<title>ViperWire - AI-Powered Cybersecurity Consultancy</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - Web Design & Java Plugin Development Case Study">
|
<meta name="description" content="Developed web solutions and Java plugins with Jenkins/GitLab CI/CD, WCAG 2.0 AA compliance, and comprehensive documentation for diverse client environments.">
|
||||||
<title>Web Design & Java Plugin Development - Colin Knapp Case Study</title>
|
<title>Web Design & Java Plugin Development</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - WordPress Security Automation Case Study">
|
<meta name="description" content="Created Docker-based automated WordPress malware removal tool that eliminated persistent attacks, reducing infection frequency from daily to zero for MLPP.">
|
||||||
<title>WordPress Security Automation - Colin Knapp Case Study</title>
|
<title>WordPress Security Automation - Malware Removal</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
<script src="../includes.js" integrity="sha256-0VPPSi+jVc1DuyZaSYTq+fnpIfv7ft+ZDenYE6pDPqA=" crossorigin="anonymous"></script>
|
||||||
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
<link rel="stylesheet" href="stories.css" integrity="sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=">
|
||||||
<script src="../markdown-loader.js" integrity="sha256-4+erbuMKlaalnlqc0+5d+X4Bpr1CZ7W3dUCsyA15spE="></script>
|
<script src="../markdown-loader.js" integrity="sha256-IiLNQTun+NOcMWp6VpG9+AxsskrioYMkoyNNbPmclA8="></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Header Include -->
|
<!-- Header Include -->
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="description" content="Colin Knapp - YouTube Game Development & Cybersecurity Case Study">
|
<meta name="description" content="Developed custom Minecraft games for YouTube creators with 15M+ subscriber reach, implementing DDoS defense, anti-phishing protocols, and data privacy measures.">
|
||||||
<title>YouTube Game Development & Cybersecurity - Colin Knapp Case Study</title>
|
<title>YouTube Game Development & Cybersecurity</title>
|
||||||
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
<link rel="icon" type="image/x-icon" href="../favicon.ico">
|
||||||
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
<link rel="stylesheet" href="../styles.css" integrity="sha256-6vUPZLlii+WLObOMBWBE3/mwNmNSmg89f/CqzzecGyc=" crossorigin="anonymous">
|
||||||
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
<script src="../theme.js" integrity="sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=" crossorigin="anonymous"></script>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue