PageSourceSearch

https://dylanbochman.netlify.app/

html dylanbochman.netlify.app collected 2026-10-03 10:40:14 UTC 7,834 bytes, 190 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en">
4  <head>
5    <meta charset="UTF-8" />
6<!-- This site is hosted on Netlify. Anyone can build and deploy a site
7     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=191b641d-b78f-422e-973d-540762424702
8     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
9    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
10    <style>
11      /* Disable transitions on page load to prevent flash */
12      .preload * {
13        transition: none !important;
14      }
15    </style>
16    
16<script>
17      // GitHub Pages SPA redirect handler
18      // This must run before any other scripts to handle redirects from 404.html
19      (function() {
20        var redirect = sessionStorage.redirect;
21        delete sessionStorage.redirect;
22        if (redirect && redirect !== location.href) {
23          history.replaceState(null, null, redirect);
24        }
25      })();
26    </script>
26
27    
27<script>
28      // Apply theme IMMEDIATELY to prevent flash - must be first script in head
29      (function() {
30        // Disable transitions during initial load
31        document.documentElement.classList.add('preload');
32
33        const urlParams = new URLSearchParams(window.location.search);
34        const themeParam = urlParams.get('theme');
35        const isDark = themeParam ? themeParam === 'dark' : window.matchMedia('(prefers-color-scheme: dark)').matches;
36        if (isDark) {
37          document.documentElement.classList.add('dark');
38        }
39
40        // Re-enable transitions after a short delay (prevents flash but enables smooth transitions)
41        setTimeout(() => {
42          document.documentElement.classList.remove('preload');
43        }, 100);
44      })();
45    </script>
45
46    <title>Dylan Bochman - Technical Incident Manager</title>
47    <link rel="canonical" href="https://dylanbochman.com" />
48    <link rel="icon" id="favicon" href="/favicon-light.ico" />
49    <link rel="icon" id="favicon-16" type="image/png" sizes="16x16" href="/favicon-16x16-light.png" />
50    <link rel="icon" id="favicon-32" type="image/png" sizes="32x32" href="/favicon-32x32-light.png" />
51    <link rel="apple-touch-icon" id="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-light.png" />
52    <meta property="og:url" content="https://dylanbochman.com" />
53    <meta name="description" content="Technical Incident Manager and Former SRE / PM specializing in Reliability and Incident Management. Experience at Groq, HashiCorp and Spotify." />
54    <meta name="keywords" content="Site Reliability Engineering, SRE, Technical Incident Manager, Incident Management, Groq, HashiCorp, Spotify, Post-Incident Analysis, SLO Monitoring, Operational Readiness, Infrastructure Reliability, DevOps, System Reliability, Incident Response, Dylan Bochman" />
55    <meta name="author" content="Dylan Bochman" />
56
57    <meta property="og:title" content="Dylan Bochman - Technical Incident Manager" />
58    <meta property="og:description" content="Technical Incident Manager and Former SRE / PM specializing in Reliability and Incident Management. Experience at Groq, HashiCorp and Spotify." />
59    <meta property="og:type" content="website" />
60    <meta property="og:image" content="https://dylanbochman.com/social-preview.webp" />
61
62    <meta name="theme-color" content="#000000" />
63    <meta name="twitter:card" content="summary_large_image" />
64    <meta name="twitter:site" content="@dylanbochman" />
65    <meta name="twitter:image" content="https://dylanbochman.com/social-preview.webp" />
66    <meta name="robots" content="index, follow" />
67
68    <!-- RSS Feed -->
69    <link rel="alternate" type="application/rss+xml" title="Dylan Bochman's Blog" href="https://dylanbochman.com/rss.xml" />
70
71    <!-- DNS prefetch and preconnect for external resources -->
72    <link rel="dns-prefetch" href="https://giscus.app" />
73    <link rel="preconnect" href="https://giscus.app" crossorigin />
74    <link rel="dns-prefetch" href="https://www.googletagmanager.com" />
75    <link rel="preconnect" href="https://www.googletagmanager.com" />
76
77    <!-- Using system fonts (San Francisco, Segoe UI, Roboto) - zero web font requests for instant rendering -->
78    
79    
79<script type="application/ld+json">
80    {
81      "@context": "https://schema.org",
82      "@type": "Person",
83      "name": "Dylan Bochman",
84      "url": "https://dylanbochman.com",
85      "jobTitle": "Technical Incident Manager",
86      "worksFor": {
87        "@type": "Organization",
88        "name": "Groq"
89      },
90      "alumniOf": [
91        {
92          "@type": "Organization",
93          "name": "HashiCorp"
94        },
95        {
96          "@type": "Organization",
97          "name": "Spotify"
98        }
99      ],
100      "knowsAbout": [
101        "Site Reliability Engineering",
102        "Incident Management",
103        "DevOps",
104        "System Reliability",
105        "Post-Incident Analysis",
106        "SLO Monitoring"
107      ],
108      "sameAs": [
109        "https://www.linkedin.com/in/dylanbochman"
110      ]
111    }
112    </script>
112
113
114    
114<script>
115      if (location.hostname === "dbochman.github.io") {
116      location.href = location.href.replace("dbochman.github.io", "dylanbochman.com");
117      }
118    </script>
118
119
120    
120<script>
121      // Update favicons based on theme
122      function updateFavicons(isDark) {
123        const theme = isDark ? 'dark' : 'light';
124        document.getElementById('favicon').href = `/favicon-${theme}.ico`;
125        document.getElementById('favicon-16').href = `/favicon-16x16-${theme}.png`;
126        document.getElementById('favicon-32').href = `/favicon-32x32-${theme}.png`;
127        document.getElementById('apple-touch-icon').href = `/apple-touch-icon-${theme}.png`;
128      }
129
130      // Initialize favicon and theme based on URL parameter or system preference
131      (function() {
132        const urlParams = new URLSearchParams(window.location.search);
133        const themeParam = urlParams.get('theme');
134        let isDark;
135
136        if (themeParam) {
137          isDark = themeParam === 'dark';
138        } else {
139          isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
140        }
141
142        // Apply theme class immediately to prevent flash
143        if (isDark) {
144          document.documentElement.classList.add('dark');
145        } else {
146          document.documentElement.classList.remove('dark');
147        }
148
149        updateFavicons(isDark);
150
151        // Listen for theme changes from the React app
152        window.addEventListener('themeChange', (e) => {
153          updateFavicons(e.detail.isDark);
154        });
155
156        // Also listen for system theme changes
157        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
158          if (!urlParams.get('theme')) {
159            updateFavicons(e.matches);
160          }
161        });
162      })();
163    </script>
163
164    
164<script type="module" crossorigin src="/assets/index-B1jOIFiH.js"></script>
164
165    <link rel="modulepreload" crossorigin href="/assets/ui-Dc_FVRD7.js">
166    <link rel="modulepreload" crossorigin href="/assets/blog-loader-BhJ8bIFE.js">
167    <link rel="modulepreload" crossorigin href="/assets/monitoring-DrLQlyIz.js">
168    <link rel="modulepreload" crossorigin href="/assets/vendor-B8mTEsSR.js">
169    <link rel="modulepreload" crossorigin href="/assets/theme-FyGxoSVC.js">
170    <link rel="stylesheet" crossorigin href="/assets/index-CmW7DW6L.css">
171  </head>
172
173<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 173-174
173
174<script async src="https://www.googletagmanager.com/gtag/js?id=
174G-VDM15EMJN2
vendor: 12 bytes, line 174
174"></script>
175<script>
176  
vendor: 134 bytes, lines 176-180
176window.dataLayer = window.dataLayer || [];
177  function gtag(){dataLayer.push(arguments);}
178  gtag('js', new Date());
179
180  gtag('config', '
180G-VDM15EMJN2
vendor: 97 bytes, lines 180-184
180', {
181    anonymize_ip: true,
182    cookie_expires: 63072000, // 2 years
183    sample_rate: 100
184  });
185</script>
185
186
187  <body>
188    <div id="root"></div>
189  </body>
190</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.