1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 5 <title>mark zakariya - blog</title> 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 9 <link rel="preload" as="style" href="/assets/built/screen.css?v=5a4557f1cb"> 10 <link rel="preload" as="script" href="/assets/built/source.js?v=5a4557f1cb"> 11 12 <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/inter-roman.woff2?v=5a4557f1cb" crossorigin="anonymous"> 13<style> 14 @font-face { 15 font-family: "Inter"; 16 font-style: normal; 17 font-weight: 100 900; 18 font-display: optional; 19 src: url(/assets/fonts/inter-roman.woff2?v=5a4557f1cb) format("woff2"); 20 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 21 } 22</style> 23 <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/jetbrains-mono-roman.woff2?v=5a4557f1cb" crossorigin="anonymous"> 24<link rel="preload" as="font" type="font/woff2" href="/assets/fonts/jetbrains-mono-italic.woff2?v=5a4557f1cb" crossorigin="anonymous"> 25<style> 26 @font-face { 27 font-family: "JetBrains Mono"; 28 font-style: normal; 29 font-weight: 100 800; 30 font-display: optional; 31 src: url(/assets/fonts/jetbrains-mono-roman.woff2?v=5a4557f1cb) format("woff2"); 32 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 33 } 34 35 @font-face { 36 font-family: "JetBrains Mono"; 37 font-style: italic; 38 font-weight: 100 800; 39 font-display: optional; 40 src: url(/assets/fonts/jetbrains-mono-italic.woff2?v=5a4557f1cb) format("woff2"); 41 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 42 } 43</style> 44 <link rel="stylesheet" type="text/css" href="/assets/built/screen.css?v=5a4557f1cb"> 45 46 <style> 47 :root { 48 --background-color: #ffffff 49 } 50 </style> 51 52
52<script> 53 /* The script for calculating the color contrast has been taken from 54 https://gomakethings.com/dynamically-changing-the-text-color-based-on-background-color-contrast-with-vanilla-js/ */ 55 var accentColor = getComputedStyle(document.documentElement).getPropertyValue('--background-color'); 56 accentColor = accentColor.trim().slice(1); 57 58 if (accentColor.length === 3) { 59 accentColor = accentColor[0] + accentColor[0] + accentColor[1] + accentColor[1] + accentColor[2] + accentColor[2]; 60 } 61 62 var r = parseInt(accentColor.substr(0, 2), 16); 63 var g = parseInt(accentColor.substr(2, 2), 16); 64 var b = parseInt(accentColor.substr(4, 2), 16); 65 var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000; 66 var textColor = (yiq >= 128) ? 'dark' : 'light'; 67 68 document.documentElement.className = `has-${textColor}-text`; 69 </script>
69 70 71 <meta name="description" content="the ramblings of a tech enthusiast. blogging from brooklyn, nyc."> 72 <link rel="icon" href="https://mark.zakariya.blog/content/images/size/w256h256/2024/09/favicon.png" type="image/png"> 73 <link rel="canonical" href="https://mark.zakariya.blog/"> 74 <meta name="referrer" content="no-referrer-when-downgrade"> 75 76 <meta property="og:site_name" content="mark's musings"> 77 <meta property="og:type" content="website"> 78 <meta property="og:title" content="mark zakariya's home on the web"> 79 <meta property="og:description" content="the ramblings of a tech enthusiast. blogging from brooklyn, nyc."> 80 <meta property="og:url" content="https://mark.zakariya.blog/"> 81 <meta property="og:image" content="https://mark.zakariya.blog/content/images/size/w1200/2024/10/A7C00578-1--3.JPG"> 82 <meta property="article:publisher" content="https://www.facebook.com/mark.zakariya/"> 83 <meta name="twitter:card" content="summary_large_image"> 84 <meta name="twitter:title" content="mark zakariya's home on the web"> 85 <meta name="twitter:description" content="the ramblings of a tech enthusiast. blogging from brooklyn, nyc."> 86 <meta name="twitter:url" content="https://mark.zakariya.blog/"> 87 <meta name="twitter:image" content="https://mark.zakariya.blog/content/images/size/w1200/2024/10/A7C00578-1--2.JPG"> 88 <meta property="og:image:width" content="1200"> 89 <meta property="og:image:height" content="800"> 90 91
91<script type="application/ld+json"> 92{ 93 "@context": "https://schema.org", 94 "@type": "WebSite", 95 "publisher": { 96 "@type": "Organization", 97 "name": "mark's musings", 98 "url": "https://mark.zakariya.blog/", 99 "logo": { 100 "@type": "ImageObject", 101 "url": "https://mark.zakariya.blog/content/images/size/w256h256/2024/09/favicon.png", 102 "width": 60, 103 "height": 60 104 } 105 }, 106 "url": "https://mark.zakariya.blog/", 107 "name": "mark's musings", 108 "mainEntityOfPage": "https://mark.zakariya.blog/", 109 "description": "the ramblings of a tech enthusiast. blogging from brooklyn, nyc." 110} 111 </script>
111 112 113 <meta name="generator" content="Ghost 6.54"> 114 <link rel="alternate" type="application/rss+xml" title="mark's musings" href="https://mark.zakariya.blog/rss/"> 115
115<script defer src="https://mark.zakariya.blog/assets/js/portal.min.js" data-i18n="true" data-ghost="https://mark.zakariya.blog/" data-key="2373526143295905b795900803" data-api="https://mark.zakariya.blog/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script>
115<style id="gh-members-styles">.gh-post-upgrade-cta-content, 116.gh-post-upgrade-cta { 117 display: flex; 118 flex-direction: column; 119 align-items: center; 120 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 121 text-align: center; 122 width: 100%; 123 color: #ffffff; 124 font-size: 16px; 125} 126 127.gh-post-upgrade-cta-content { 128 border-radius: 8px; 129 padding: 40px 4vw; 130} 131 132.gh-post-upgrade-cta h2 { 133 color: #ffffff; 134 font-size: 28px; 135 letter-spacing: -0.2px; 136 margin: 0; 137 padding: 0; 138} 139 140.gh-post-upgrade-cta p { 141 margin: 20px 0 0; 142 padding: 0; 143} 144 145.gh-post-upgrade-cta small { 146 font-size: 16px; 147 letter-spacing: -0.2px; 148} 149 150.gh-post-upgrade-cta a { 151 color: #ffffff; 152 cursor: pointer; 153 font-weight: 500; 154 box-shadow: none; 155 text-decoration: underline; 156} 157 158.gh-post-upgrade-cta a:hover { 159 color: #ffffff; 160 opacity: 0.8; 161 box-shadow: none; 162 text-decoration: underline; 163} 164 165.gh-post-upgrade-cta a.gh-btn { 166 display: block; 167 background: #ffffff; 168 text-decoration: none; 169 margin: 28px 0 0; 170 padding: 8px 18px; 171 border-radius: 4px; 172 font-size: 16px; 173 font-weight: 600; 174} 175 176.gh-post-upgrade-cta a.gh-btn:hover { 177 opacity: 0.92; 178}</style> 179
179<script defer src="https://mark.zakariya.blog/assets/js/sodo-search.min.js" data-key="2373526143295905b795900803" data-styles="https://mark.zakariya.blog/assets/js/main.css" data-sodo-search="https://mark.zakariya.blog/" data-locale="en" crossorigin="anonymous"></script>
179 180 181 <link href="https://mark.zakariya.blog/webmentions/receive/" rel="webmention"> 182
182<script defer src="/public/cards.min.js?v=5a4557f1cb"></script>
182 183 <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=5a4557f1cb"> 184
184<script defer src="/public/comment-counts.min.js?v=5a4557f1cb" data-ghost-comments-counts-api="https://mark.zakariya.blog/members/api/comments/counts/"></script>
184 185
185<script defer src="/public/member-attribution.min.js?v=5a4557f1cb"></script>
185<style>:root {--ghost-accent-color: #AACBD8;}</style> 186
186<script async src="https://traffic.zakariya.blog/js/pa-m51whakpRsh1tGnvz-GqA.js"></script>
vendor: 1 bytes, line 186
186
187<script> 188 window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}}; 189 plausible.init() 190</script>
190 191 192</head> 193<body class="home-template has-mono-title has-sans-body"> 194 195<div class="gh-viewport"> 196 197 <header id="gh-navigation" class="gh-navigation is-left-logo gh-outer"> 198 <div class="gh-navigation-inner gh-inner"> 199 200 <div class="gh-navigation-brand"> 201 <a class="gh-navigation-logo is-title" href="https://mark.zakariya.blog"> 202 mark's musings 203 </a> 204 <button class="gh-search gh-icon-button" aria-label="Search this site" data-ghost-search> 205 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button> <button class="gh-burger gh-icon-button" aria-label="Menu"> 206 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 256 256"><path d="M224,128a8,8,0,0,1-8,8H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM40,72H216a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16ZM216,184H40a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Z"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 256 256"><path d="M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z"></path></svg> </button> 207 </div> 208 209 <nav class="gh-navigation-menu"> 210 <ul class="nav"> 211 <li class="nav-home nav-current"><a href="https://mark.zakariya.blog/">home</a></li> 212 <li class="nav-about"><a href="https://mark.zakariya.blog/about/">about</a></li> 213</ul> 214 215 </nav> 216 217 <div class="gh-navigation-actions"> 218 <button class="gh-search gh-icon-button" aria-label="Search this site" data-ghost-search> 219 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button> <div class="gh-navigation-members"> 220 <a href="#/portal/signin" data-portal="signin">Sign in</a> 221 <a class="gh-button" href="#/portal/signup" data-portal="signup">Subscribe</a> 222 </div> 223 </div> 224 225 </div> 226</header> 227 228 229 230 231 232 233<section class="gh-container is-list gh-outer"> 234 <div class="gh-container-inner gh-inner"> 235 236 <h2 class="gh-container-title"> 237 Latest 238 </h2> 239 240 <main class="gh-main"> 241 <div class="gh-feed"> 242 243 <article class="gh-card post"> 244 <a class="gh-card-link" href="/a-bunch-of-photos/"> 245 <figure class="gh-card-image"> 246 <img 247 srcset="/content/images/size/w160/format/webp/2024/10/DSC00582.jpg 160w, 248 /content/images/size/w320/format/webp/2024/10/DSC00582.jpg 320w, 249 /content/images/size/w600/format/webp/2024/10/DSC00582.jpg 600w, 250 /content/images/size/w960/format/webp/2024/10/DSC00582.jpg 960w, 251 /content/images/size/w1200/format/webp/2024/10/DSC00582.jpg 1200w, 252 /content/images/size/w2000/format/webp/2024/10/DSC00582.jpg 2000w" 253 sizes="320px" 254 src="/content/images/size/w600/2024/10/DSC00582.jpg" 255 alt="a bunch of photos" 256 loading="lazy" 257 > 258 </figure> 259 <div class="gh-card-wrapper"> 260 <h3 class="gh-card-title is-title">a bunch of photos</h3> 261 <p class="gh-card-excerpt is-body">Assortment of cat photos, and a bonus photo.</p> 262 <footer class="gh-card-meta"> 263<!-- 264 --> <time class="gh-card-date" datetime="2024-10-18">18 Oct 2024</time> 265 <!-- 266 --></footer> 267 </div> 268 </a> 269</article> 270 271 272 273 </div> 274 275 </main> 276 277 278 </div> 279</section> 280 281 282 283</div> 284 285
286<script src="/assets/built/source.js?v=5a4557f1cb"></script>
286 287 288 289 290</body> 291</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.