diff --git a/content/blog/fixing-an-openssl-intermediate-chain-with-sectigo-and-positivessl.html b/content/blog/fixing-an-openssl-intermediate-chain-with-sectigo-and-positivessl.html new file mode 100644 index 0000000..5e684a1 --- /dev/null +++ b/content/blog/fixing-an-openssl-intermediate-chain-with-sectigo-and-positivessl.html @@ -0,0 +1,72 @@ + + + + + Fixing An OpenSSL Intermediate Chain + + + + + + + +
+
+
+

Fixing An OpenSSL Intermediate Chain With Sectigo and PositiveSSL

+
+

+ I decided to add prometheus metrics to Andrew, my web server. +

+

+ To display them, I signed up for grafana cloud. I assumed I'd be able to point their prometheus instance at my unauthenticated + metrics endpoint. How wrong I was; you must either use Bearer tokens or Basic Auth. +

+

+ That's fair enough. So I thought I'd just use an agent to scrape and push. Grafana likes grafana alloy, so I figured I'd + give it a shot. +

+

+ It hates my ssl certificate. +

+

+ Checking into its complaint, it's right. +

+
+ +
+

+


+; openssl s_client -connect playtechnique.io:443 -showcerts
+...redactions-for-clarity...
+Verify return code: 21 (unable to verify the first certificate)
+...redactions-for-clarity...
+
+

+

+ I assume this is the dreaded intermediate certificate problem. +

+

+ It's dreaded because I've fixed it a dozen times and can never remember the right bloody technique. +

+
+ +
+

+ +

+
+
+
+ + + + diff --git a/content/blog/fstest-mapfs-file-does-not-exist.html b/content/blog/fstest-mapfs-file-does-not-exist.html index 6569cac..2c931fd 100644 --- a/content/blog/fstest-mapfs-file-does-not-exist.html +++ b/content/blog/fstest-mapfs-file-does-not-exist.html @@ -7,12 +7,15 @@ -
diff --git a/content/blog/index.html b/content/blog/index.html index 35feb8d..146806b 100644 --- a/content/blog/index.html +++ b/content/blog/index.html @@ -5,12 +5,15 @@ -
diff --git a/content/blog/keep-going-till-its-fun.html b/content/blog/keep-going-till-its-fun.html index 77b5da8..6287912 100644 --- a/content/blog/keep-going-till-its-fun.html +++ b/content/blog/keep-going-till-its-fun.html @@ -7,12 +7,15 @@ -
diff --git a/content/blog/life-is-a-glorious-time-sink.html b/content/blog/life-is-a-glorious-time-sink.html index faf6b99..f73a42c 100644 --- a/content/blog/life-is-a-glorious-time-sink.html +++ b/content/blog/life-is-a-glorious-time-sink.html @@ -7,10 +7,13 @@ diff --git a/content/blog/testing-panics-in-go.html b/content/blog/testing-panics-in-go.html index 3b5450a..5d2815e 100644 --- a/content/blog/testing-panics-in-go.html +++ b/content/blog/testing-panics-in-go.html @@ -7,12 +7,15 @@ -
diff --git a/content/blog/the-very-basics-of-your-zshrc.html b/content/blog/the-very-basics-of-your-zshrc.html new file mode 100644 index 0000000..a867c4f --- /dev/null +++ b/content/blog/the-very-basics-of-your-zshrc.html @@ -0,0 +1,41 @@ + + + + + The Very Basics of Your Zshrc + + + + + + +
+
+
+

The Very Basics of Your Zshrc

+
+

+ I dislike seeing my shell take seconds to load. Here's how I maintain my own zshrc. +

+
+ +
+

+

+
+ +
+
+ + + + diff --git a/content/blog/using-andrew-for-your-website.html b/content/blog/using-andrew-for-your-website.html index 7fde242..2d63f5b 100644 --- a/content/blog/using-andrew-for-your-website.html +++ b/content/blog/using-andrew-for-your-website.html @@ -7,12 +7,15 @@ -
diff --git a/content/blog/zsh-autocompletion-for-a-shell-function.html b/content/blog/zsh-autocompletion-for-a-shell-function.html index e61af65..6680f60 100644 --- a/content/blog/zsh-autocompletion-for-a-shell-function.html +++ b/content/blog/zsh-autocompletion-for-a-shell-function.html @@ -7,12 +7,15 @@ -
diff --git a/content/images/logo-large.png b/content/images/logo-large.png new file mode 100644 index 0000000..158623a Binary files /dev/null and b/content/images/logo-large.png differ diff --git a/content/images/logo.png b/content/images/logo.png index 69de1a4..129d4b9 100644 Binary files a/content/images/logo.png and b/content/images/logo.png differ diff --git a/content/images/rss.png b/content/images/rss.png index ee1dc1e..b2cd288 100644 Binary files a/content/images/rss.png and b/content/images/rss.png differ diff --git a/content/index.html b/content/index.html index b4d686f..b993b8f 100644 --- a/content/index.html +++ b/content/index.html @@ -43,12 +43,15 @@
- +
diff --git a/content/main.js b/content/main.js index 6087a4f..6d4ad21 100644 --- a/content/main.js +++ b/content/main.js @@ -16,6 +16,27 @@ function addCodeHighlightingToHeader(callback) { document.body.appendChild(script); } +// Function to render the new navigation +function renderNavigation() { + const navHTML = ` + + `; + + // Inject the navHTML into the new container with an ID 'playtechnique-nav' + const navElement = document.getElementById('playtechnique-nav'); + if (navElement) { + navElement.innerHTML = navHTML; + } +} + document.addEventListener('DOMContentLoaded', function () { addGoogleTagToHead(); }); diff --git a/content/projects/andrew/andrew-is-a-partial-site-generator.html b/content/projects/andrew/andrew-is-a-partial-site-generator.html index 5a5190e..6255ba8 100644 --- a/content/projects/andrew/andrew-is-a-partial-site-generator.html +++ b/content/projects/andrew/andrew-is-a-partial-site-generator.html @@ -7,10 +7,13 @@ diff --git a/content/projects/andrew/andrew-is-actually-a-web-server.html b/content/projects/andrew/andrew-is-actually-a-web-server.html index 3c0f25b..fd8291c 100644 --- a/content/projects/andrew/andrew-is-actually-a-web-server.html +++ b/content/projects/andrew/andrew-is-actually-a-web-server.html @@ -7,12 +7,15 @@ -
+
diff --git a/content/projects/andrew/andrew-is-minimalistic.html b/content/projects/andrew/andrew-is-minimalistic.html index b303a34..afc5180 100644 --- a/content/projects/andrew/andrew-is-minimalistic.html +++ b/content/projects/andrew/andrew-is-minimalistic.html @@ -7,12 +7,15 @@ -
+
diff --git a/content/projects/andrew/attributes-and-data.html b/content/projects/andrew/attributes-and-data.html index 2922d07..9ace84f 100644 --- a/content/projects/andrew/attributes-and-data.html +++ b/content/projects/andrew/attributes-and-data.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/andrew/writing-an-rss-feed-generator.html b/content/projects/andrew/writing-an-rss-feed-generator.html index a41eba6..a19c5e3 100644 --- a/content/projects/andrew/writing-an-rss-feed-generator.html +++ b/content/projects/andrew/writing-an-rss-feed-generator.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/azure/i-want-to-love-azure-but-they-make-it-hard.html b/content/projects/azure/i-want-to-love-azure-but-they-make-it-hard.html index 5125dc8..0a2ed4c 100644 --- a/content/projects/azure/i-want-to-love-azure-but-they-make-it-hard.html +++ b/content/projects/azure/i-want-to-love-azure-but-they-make-it-hard.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/azure/managed-grafana-self-installed-loki.html b/content/projects/azure/managed-grafana-self-installed-loki.html index 8260533..343dd44 100644 --- a/content/projects/azure/managed-grafana-self-installed-loki.html +++ b/content/projects/azure/managed-grafana-self-installed-loki.html @@ -6,12 +6,15 @@ - diff --git a/content/projects/go-lessons-learned/adding-permissions-to-mapfs-part-1.html b/content/projects/go-lessons-learned/adding-permissions-to-mapfs-part-1.html index 0a14ec6..b32b0ea 100644 --- a/content/projects/go-lessons-learned/adding-permissions-to-mapfs-part-1.html +++ b/content/projects/go-lessons-learned/adding-permissions-to-mapfs-part-1.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/go-lessons-learned/set-go-slog-levels-with-an-environment-variable.html b/content/projects/go-lessons-learned/set-go-slog-levels-with-an-environment-variable.html index f6a3fc7..4be688a 100644 --- a/content/projects/go-lessons-learned/set-go-slog-levels-with-an-environment-variable.html +++ b/content/projects/go-lessons-learned/set-go-slog-levels-with-an-environment-variable.html @@ -6,12 +6,15 @@ -
diff --git a/content/projects/grafanasink/how-grafanas-sqlite-database-sees-a-new-dashboard-and-panel.html b/content/projects/grafanasink/how-grafanas-sqlite-database-sees-a-new-dashboard-and-panel.html index 76950ba..4d35628 100644 --- a/content/projects/grafanasink/how-grafanas-sqlite-database-sees-a-new-dashboard-and-panel.html +++ b/content/projects/grafanasink/how-grafanas-sqlite-database-sees-a-new-dashboard-and-panel.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/grafanasink/tracking-sqlite-changes.html b/content/projects/grafanasink/tracking-sqlite-changes.html index 702dc37..b3cea77 100644 --- a/content/projects/grafanasink/tracking-sqlite-changes.html +++ b/content/projects/grafanasink/tracking-sqlite-changes.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/grafanasink/writing-a-daemon-in-golang.html b/content/projects/grafanasink/writing-a-daemon-in-golang.html index 074a416..9ed2001 100644 --- a/content/projects/grafanasink/writing-a-daemon-in-golang.html +++ b/content/projects/grafanasink/writing-a-daemon-in-golang.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/index.html b/content/projects/index.html index 52f63cc..ceae4a0 100644 --- a/content/projects/index.html +++ b/content/projects/index.html @@ -6,9 +6,12 @@ diff --git a/content/projects/kubernetes/2024-01-28-generate-ssl-cert-for-non-kubernetes-service.html b/content/projects/kubernetes/2024-01-28-generate-ssl-cert-for-non-kubernetes-service.html index 50b516e..df2b412 100644 --- a/content/projects/kubernetes/2024-01-28-generate-ssl-cert-for-non-kubernetes-service.html +++ b/content/projects/kubernetes/2024-01-28-generate-ssl-cert-for-non-kubernetes-service.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/leetcode-in-go/how-do-you-get-to-carnegie-hall.html b/content/projects/leetcode-in-go/how-do-you-get-to-carnegie-hall.html index 08a5abb..8c9b887 100644 --- a/content/projects/leetcode-in-go/how-do-you-get-to-carnegie-hall.html +++ b/content/projects/leetcode-in-go/how-do-you-get-to-carnegie-hall.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/leetcode-in-go/images/2024-09-07_16-10-07.mp4 b/content/projects/leetcode-in-go/images/2024-09-07_16-10-07.mp4 new file mode 100644 index 0000000..c3853f7 Binary files /dev/null and b/content/projects/leetcode-in-go/images/2024-09-07_16-10-07.mp4 differ diff --git a/content/projects/leetcode-in-go/marching-with-two-pointers.html b/content/projects/leetcode-in-go/marching-with-two-pointers.html index a18a463..b4424a8 100644 --- a/content/projects/leetcode-in-go/marching-with-two-pointers.html +++ b/content/projects/leetcode-in-go/marching-with-two-pointers.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/leetcode-in-go/sliding-window-2-length-longest-substring.html b/content/projects/leetcode-in-go/sliding-window-2-length-longest-substring.html index f1941c9..bfb3065 100644 --- a/content/projects/leetcode-in-go/sliding-window-2-length-longest-substring.html +++ b/content/projects/leetcode-in-go/sliding-window-2-length-longest-substring.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/leetcode-in-go/sliding-window-the-easier-examples.html b/content/projects/leetcode-in-go/sliding-window-the-easier-examples.html index 10fcba3..fc512f3 100644 --- a/content/projects/leetcode-in-go/sliding-window-the-easier-examples.html +++ b/content/projects/leetcode-in-go/sliding-window-the-easier-examples.html @@ -7,12 +7,15 @@ -
diff --git a/content/projects/p4merge-wrapper/2024-01-24.html b/content/projects/p4merge-wrapper/2024-01-24.html index cbf2e45..5428ba7 100644 --- a/content/projects/p4merge-wrapper/2024-01-24.html +++ b/content/projects/p4merge-wrapper/2024-01-24.html @@ -8,12 +8,15 @@
-

wrapping p4merge and p4diff for the cli

diff --git a/content/social/index.html b/content/social/index.html index 32e6483..d11feb1 100644 --- a/content/social/index.html +++ b/content/social/index.html @@ -7,13 +7,15 @@ -
diff --git a/content/styles.css b/content/styles.css index a3258ae..e65355e 100644 --- a/content/styles.css +++ b/content/styles.css @@ -1,8 +1,4 @@ -/* background color pale pink - #ffe6ef */ -head { - background: #ffe6ef; -} body { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", Helvetica, Arial, sans-serif; @@ -12,30 +8,40 @@ blockquote { background-color: lightblue; } -nav.navigation { - position: relative; - text-align: right; - border-radius: 40vh 40vh 0vh 0vh; - background: linear-gradient(#cad4f4, #ffffff); - padding: 5vh; - /* overflow: hidden; */ -} -nav.navigation .link { - /* border: solid black; - border-radius: 40vh; */ - display: inline-block; - width: fit-content; - padding: 1vh; - color: black; -} - -nav.navigation img { - height: 10vh; /* Explicitly set the height */ - width: auto; /* Maintain aspect ratio */ - position: absolute; - top: 0; - left: 0; -} + /* Navigation styling */ + nav.navigation { + display: flex; + justify-content: space-between; /* Logo on the left, links on the right */ + align-items: center; /* Vertically center items */ + padding: 10px; + border-bottom: 0.2em dashed #cad4f4; + } + + /* Logo styling */ + nav.navigation img { + height: 80px; /* Set a height for the logo */ + width: auto; /* Maintain aspect ratio */ + } + + /* Styling the links group */ + #links-group { + display: flex; + gap: 20px; /* Space between the links */ + align-items: center; /* Vertically align links */ + } + + /* Styling for text links */ + #links-group .link { + text-decoration: none; /* Remove underline */ + color: black; /* Text color */ + font-size: 18px; /* Adjust font size */ + } + + /* Styling for the RSS icon */ + #links-group .link img { + height: 24px; /* Set a height for the RSS icon */ + width: auto; /* Maintain aspect ratio */ + } main { width: 55vw;