Skip to content

Commit 1ab03e1

Browse files
authored
Update index.html
Added copy URLs for 1st paragraph
1 parent 1d912f2 commit 1ab03e1

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

index.html

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,32 @@ <h1>From Snowflake Servers to GitOps Nirvana</h1>
5151
<p><em>A beginner-friendly tour of the declarative stack that actually runs itself — 04 Aug 2025</em></p>
5252

5353
<p>You’ve probably heard the buzzwords: GitOps, NoOps, immutable infrastructure. Today I’d like to walk you—step by step—through why these concepts exist and how a small constellation of tools (<a href="https://git-scm.com/" target="_blank" rel="noopener">Git</a>, <a href="https://nixos.org/" target="_blank" rel="noopener">NixOS</a>, <a href="https://docker.com/" target="_blank" rel="noopener">Docker</a>, <a href="https://developer.hashicorp.com/terraform/" target="_blank" rel="noopener">Terraform</a>, <a href="https://kubernetes.io/" target="_blank" rel="noopener">Kubernetes</a>, <a href="https://argo-cd.readthedocs.io/en/stable/" target="_blank" rel="noopener">ArgoCD</a>, <a href="https://dspy.ai/" target="_blank" rel="noopener">DSPy</a>, and a pinch of <a href="https://www.openpolicyagent.org/" target="_blank" rel="noopener">OPA</a> policy-as-code) fit together to create a platform that deploys itself every time you hit <i>merge</i>.</p>
54-
54+
<!-- 1-click copy for all tool URLs in first paragraph -->
55+
<p>
56+
<button id="copyAllTools"
57+
class="copy-btn"
58+
title="Copy all tool URLs">📋 Copy tool links</button>
59+
</p>
60+
61+
<script>
62+
document.getElementById('copyAllTools').addEventListener('click', () => {
63+
const urls = [
64+
'https://git-scm.com/',
65+
'https://nixos.org/',
66+
'https://docker.com/',
67+
'https://developer.hashicorp.com/terraform/',
68+
'https://kubernetes.io/',
69+
'https://argo-cd.readthedocs.io/en/stable/',
70+
'https://dspy.ai/',
71+
'https://www.openpolicyagent.org/'
72+
].join('\n');
73+
navigator.clipboard.writeText(urls).then(() => {
74+
const btn = document.getElementById('copyAllTools');
75+
btn.textContent = '✅ Copied!';
76+
setTimeout(() => btn.textContent = '📋 Copy tool links', 1200);
77+
});
78+
});
79+
</script>
5580
<hr>
5681

5782
<!-- ========== ORIGINAL SVG + ZOOM/PAN ========== -->

0 commit comments

Comments
 (0)