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.