1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> 3 4<meta charset="utf-8"> 5<meta name="generator" content="quarto-1.8.26"> 6 7<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 8 9 10<title>Silvia Canelón â Silvia Canelón</title> 11<style> 12code{white-space: pre-wrap;} 13span.smallcaps{font-variant: small-caps;} 14div.columns{display: flex; gap: min(4vw, 1.5em);} 15div.column{flex: auto; overflow-x: auto;} 16div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} 17ul.task-list{list-style: none;} 18ul.task-list li input[type="checkbox"] { 19 width: 0.8em; 20 margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 21 vertical-align: middle; 22} 23</style> 24 25
26<script src="../site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 26
26
27<script src="../site_libs/quarto-nav/headroom.min.js"></script>
vendor: 1 bytes, line 27
27
28<script src="../site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 28
28
29<script src="../site_libs/quarto-search/autocomplete.umd.js"></script>
vendor: 1 bytes, line 29
29
30<script src="../site_libs/quarto-search/fuse.min.js"></script>
vendor: 1 bytes, line 30
30
31<script src="../site_libs/quarto-search/quarto-search.js"></script>
31 32<meta name="quarto:offset" content="../"> 33<link href="../_assets/silvia/img/logo_rounded.svg" rel="icon" type="image/svg+xml">
34<script src="../site_libs/quarto-listing/list.min.js"></script>
vendor: 1 bytes, line 34
34
35<script src="../site_libs/quarto-listing/quarto-listing.js"></script>
vendor: 1 bytes, line 35
35
36<script src="../site_libs/quarto-html/quarto.js" type="module"></script>
vendor: 1 bytes, line 36
36
37<script src="../site_libs/quarto-html/tabsets/tabsets.js" type="module"></script>
vendor: 1 bytes, line 37
37
38<script src="../site_libs/quarto-html/axe/axe-check.js" type="module"></script>
vendor: 1 bytes, line 38
38
39<script src="../site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 39
39
40<script src="../site_libs/quarto-html/tippy.umd.min.js"></script>
40 41<link href="../site_libs/quarto-html/tippy.css" rel="stylesheet"> 42<link href="../site_libs/quarto-html/quarto-syntax-highlighting-d5a81b5673604fa4063d541f11a590de.css" rel="stylesheet" class="quarto-color-scheme" id="quarto-text-highlighting-styles"> 43<link href="../site_libs/quarto-html/quarto-syntax-highlighting-dark-83a87ab50514085df30bb05c06d360e1.css" rel="stylesheet" class="quarto-color-scheme quarto-color-alternate" id="quarto-text-highlighting-styles"> 44<link href="../site_libs/quarto-html/quarto-syntax-highlighting-d5a81b5673604fa4063d541f11a590de.css" rel="stylesheet" class="quarto-color-scheme-extra" id="quarto-text-highlighting-styles">
45<script src="../site_libs/bootstrap/bootstrap.min.js"></script>
45 46<link href="../site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet"> 47<link href="../site_libs/bootstrap/bootstrap-ebc36e63796c20bea46526e08d903f4d.min.css" rel="stylesheet" append-hash="true" class="quarto-color-scheme" id="quarto-bootstrap" data-mode="light"> 48<link href="../site_libs/bootstrap/bootstrap-dark-ad23d8fa78bc2dcef492c53586f20157.min.css" rel="stylesheet" append-hash="true" class="quarto-color-scheme quarto-color-alternate" id="quarto-bootstrap" data-mode="dark"> 49<link href="../site_libs/bootstrap/bootstrap-ebc36e63796c20bea46526e08d903f4d.min.css" rel="stylesheet" append-hash="true" class="quarto-color-scheme-extra" id="quarto-bootstrap" data-mode="light"> 50<link href="../site_libs/quarto-contrib/fontawesome6-1.2.0/all.min.css" rel="stylesheet"> 51<link href="../site_libs/quarto-contrib/fontawesome6-1.2.0/latex-fontsize.css" rel="stylesheet"> 52<link href="../site_libs/quarto-contrib/academicons-1.9.2/all.css" rel="stylesheet"> 53<link href="../site_libs/quarto-contrib/academicons-1.9.2/size.css" rel="stylesheet">
54<script id="quarto-search-options" type="application/json">{ 55 "location": "navbar", 56 "copy-button": false, 57 "collapse-after": 3, 58 "panel-placement": "end", 59 "type": "overlay", 60 "limit": 50, 61 "keyboard-shortcut": [ 62 "f", 63 "/", 64 "s" 65 ], 66 "show-item-context": false, 67 "language": { 68 "search-no-results-text": "No results", 69 "search-matching-documents-text": "matching documents", 70 "search-copy-link-title": "Copy link to search", 71 "search-hide-matches-text": "Hide additional matches", 72 "search-more-match-text": "more match in this document", 73 "search-more-matches-text": "more matches in this document", 74 "search-clear-button-title": "Clear", 75 "search-text-placeholder": "", 76 "search-detached-cancel-button-title": "Cancel", 77 "search-submit-button-title": "Submit", 78 "search-label": "Search" 79 } 80}</script>
vendor: 1 bytes, line 80
80
81<script> 82 83 window.document.addEventListener("DOMContentLoaded", function (_event) { 84 const listingTargetEl = window.document.querySelector('#listing-project .list'); 85 if (!listingTargetEl) { 86 // No listing discovered, do not attach. 87 return; 88 } 89 90 const options = { 91 valueNames: ['listing-title','listing-subtitle','listing-image',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }], 92 93 searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description"], 94 }; 95 96 window['quarto-listings'] = window['quarto-listings'] || {}; 97 window['quarto-listings']['listing-project'] = new List('listing-project', options); 98 99 if (window['quarto-listing-loaded']) { 100 window['quarto-listing-loaded'](); 101 } 102 }); 103 104 window.addEventListener('hashchange',() => { 105 if (window['quarto-listing-loaded']) { 106 window['quarto-listing-loaded'](); 107 } 108 }) 109 110 111 window.document.addEventListener("DOMContentLoaded", function (_event) { 112 const listingTargetEl = window.document.querySelector('#listing-talk .list'); 113 if (!listingTargetEl) { 114 // No listing discovered, do not attach. 115 return; 116 } 117 118 const options = { 119 valueNames: ['listing-title','listing-subtitle','listing-image',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }], 120 page: 18, 121 pagination: { item: "<li class='page-item'><a class='page page-link' href='#'></a></li>" }, 122 searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description"], 123 }; 124 125 window['quarto-listings'] = window['quarto-listings'] || {}; 126 window['quarto-listings']['listing-talk'] = new List('listing-talk', options); 127 128 if (window['quarto-listing-loaded']) { 129 window['quarto-listing-loaded'](); 130 } 131 }); 132 133 window.addEventListener('hashchange',() => { 134 if (window['quarto-listing-loaded']) { 135 window['quarto-listing-loaded'](); 136 } 137 }) 138 139 140 window.document.addEventListener("DOMContentLoaded", function (_event) { 141 const listingTargetEl = window.document.querySelector('#listing-blog .list'); 142 if (!listingTargetEl) { 143 // No listing discovered, do not attach. 144 return; 145 } 146 147 const options = { 148 valueNames: ['listing-title','listing-subtitle','listing-image',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }], 149 150 searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description"], 151 }; 152 153 window['quarto-listings'] = window['quarto-listings'] || {}; 154 window['quarto-listings']['listing-blog'] = new List('listing-blog', options); 155 156 if (window['quarto-listing-loaded']) { 157 window['quarto-listing-loaded'](); 158 } 159 }); 160 161 window.addEventListener('hashchange',() => { 162 if (window['quarto-listing-loaded']) { 163 window['quarto-listing-loaded'](); 164 } 165 }) 166 167 168 window.document.addEventListener("DOMContentLoaded", function (_event) { 169 const listingTargetEl = window.document.querySelector('#listing-publication .list'); 170 if (!listingTargetEl) { 171 // No listing discovered, do not attach. 172 return; 173 } 174 175 const options = { 176 valueNames: ['listing-title','listing-image',{ data: ['index'] },{ data: ['categories'] },{ data: ['listing-date-sort'] },{ data: ['listing-file-modified-sort'] }], 177 page: 18, 178 pagination: { item: "<li class='page-item'><a class='page page-link' href='#'></a></li>" }, 179 searchColumns: ["listing-title","listing-author","listing-date","listing-image","listing-description"], 180 }; 181 182 window['quarto-listings'] = window['quarto-listings'] || {}; 183 window['quarto-listings']['listing-publication'] = new List('listing-publication', options); 184 185 if (window['quarto-listing-loaded']) { 186 window['quarto-listing-loaded'](); 187 } 188 }); 189 190 window.addEventListener('hashchange',() => { 191 if (window['quarto-listing-loaded']) { 192 window['quarto-listing-loaded'](); 193 } 194 }) 195 </script>
195 196<!-- umami cloud -->
197<script async="" src="https://analytics.umami.is/script.js" data-website-id="6ba73b87-31aa-44ac-8d5e-e0dad5760753" data-do-not-track="true"> 198</script>
198 199<!-- google search console --> 200<meta name="google-site-verification" content="SXazFKEYdrkxQRjO6ofQA45n5g-Uxn_sq3vVTYYnZ9U"> 201<link rel="stylesheet" href="../assets/about.css"> 202 203
203<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
203 204
204<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
204 205
206<script type="text/javascript"> 207const typesetMath = (el) => { 208 if (window.MathJax) { 209 // MathJax Typeset 210 window.MathJax.typeset([el]); 211 } else if (window.katex) { 212 // KaTeX Render 213 var mathElements = el.getElementsByClassName("math"); 214 var macros = []; 215 for (var i = 0; i < mathElements.length; i++) { 216 var texText = mathElements[i].firstChild; 217 if (mathElements[i].tagName == "SPAN" && texText && texText.data) { 218 window.katex.render(texText.data, mathElements[i], { 219 displayMode: mathElements[i].classList.contains('display'), 220 throwOnError: false, 221 macros: macros, 222 fleqn: false 223 }); 224 } 225 } 226 } 227} 228window.Quarto = { 229 typesetMath 230}; 231</script>
231 232 233<meta name="twitter:title" content="Silvia Canelón"> 234<meta name="twitter:description" content="Data Scientist & Journalist"> 235<meta name="twitter:image" content="https://silviacanelon.com/about/sidebar/avatar.png"> 236<meta name="twitter:creator" content="@spcanelon"> 237<meta name="twitter:site" content="@spcanelon"> 238<meta name="twitter:card" content="summary_large_image"> 239<meta name="twitter:image-height" content="500"> 240<meta name="twitter:image-width" content="500"> 241<meta name="twitter:image:alt" content="Smiling woman with a tan complexion, dark eyes, and dark long wavy hair styled to one side"> 242</head> 243 244<body class="nav-fixed quarto-light">
244<script id="quarto-html-before-body" type="application/javascript"> 245 const toggleBodyColorMode = (bsSheetEl) => { 246 const mode = bsSheetEl.getAttribute("data-mode"); 247 const bodyEl = window.document.querySelector("body"); 248 if (mode === "dark") { 249 bodyEl.classList.add("quarto-dark"); 250 bodyEl.classList.remove("quarto-light"); 251 } else { 252 bodyEl.classList.add("quarto-light"); 253 bodyEl.classList.remove("quarto-dark"); 254 } 255 } 256 const toggleBodyColorPrimary = () => { 257 const bsSheetEl = window.document.querySelector("link#quarto-bootstrap:not([rel=disabled-stylesheet])"); 258 if (bsSheetEl) { 259 toggleBodyColorMode(bsSheetEl); 260 } 261 } 262 const setColorSchemeToggle = (alternate) => { 263 const toggles = window.document.querySelectorAll('.quarto-color-scheme-toggle'); 264 for (let i=0; i < toggles.length; i++) { 265 const toggle = toggles[i]; 266 if (toggle) { 267 if (alternate) { 268 toggle.classList.add("alternate"); 269 } else { 270 toggle.classList.remove("alternate"); 271 } 272 } 273 } 274 }; 275 const toggleColorMode = (alternate) => { 276 // Switch the stylesheets 277 const primaryStylesheets = window.document.querySelectorAll('link.quarto-color-scheme:not(.quarto-color-alternate)'); 278 const alternateStylesheets = window.document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate'); 279 manageTransitions('#quarto-margin-sidebar .nav-link', false); 280 if (alternate) { 281 // note: dark is layered on light, we don't disable primary! 282 enableStylesheet(alternateStylesheets); 283 for (const sheetNode of alternateStylesheets) { 284 if (sheetNode.id === "quarto-bootstrap") { 285 toggleBodyColorMode(sheetNode); 286 } 287 } 288 } else { 289 disableStylesheet(alternateStylesheets); 290 enableStylesheet(primaryStylesheets) 291 toggleBodyColorPrimary(); 292 } 293 manageTransitions('#quarto-margin-sidebar .nav-link', true); 294 // Switch the toggles 295 setColorSchemeToggle(alternate) 296 // Hack to workaround the fact that safari doesn't 297 // properly recolor the scrollbar when toggling (#1455) 298 if (navigator.userAgent.indexOf('Safari') > 0 && navigator.userAgent.indexOf('Chrome') == -1) { 299 manageTransitions("body", false); 300 window.scrollTo(0, 1); 301 setTimeout(() => { 302 window.scrollTo(0, 0); 303 manageTransitions("body", true); 304 }, 40); 305 } 306 } 307 const disableStylesheet = (stylesheets) => { 308 for (let i=0; i < stylesheets.length; i++) { 309 const stylesheet = stylesheets[i]; 310 stylesheet.rel = 'disabled-stylesheet'; 311 } 312 } 313 const enableStylesheet = (stylesheets) => { 314 for (let i=0; i < stylesheets.length; i++) { 315 const stylesheet = stylesheets[i]; 316 if(stylesheet.rel !== 'stylesheet') { // for Chrome, which will still FOUC without this check 317 stylesheet.rel = 'stylesheet'; 318 } 319 } 320 } 321 const manageTransitions = (selector, allowTransitions) => { 322 const els = window.document.querySelectorAll(selector); 323 for (let i=0; i < els.length; i++) { 324 const el = els[i]; 325 if (allowTransitions) { 326 el.classList.remove('notransition'); 327 } else { 328 el.classList.add('notransition'); 329 } 330 } 331 } 332 const isFileUrl = () => { 333 return window.location.protocol === 'file:'; 334 } 335 const hasAlternateSentinel = () => { 336 let styleSentinel = getColorSchemeSentinel(); 337 if (styleSentinel !== null) { 338 return styleSentinel === "alternate"; 339 } else { 340 return false; 341 } 342 } 343 const setStyleSentinel = (alternate) => { 344 const value = alternate ? "alternate" : "default"; 345 if (!isFileUrl()) { 346 window.localStorage.setItem("quarto-color-scheme", value); 347 } else { 348 localAlternateSentinel = value; 349 } 350 } 351 const getColorSchemeSentinel = () => { 352 if (!isFileUrl()) { 353 const storageValue = window.localStorage.getItem("quarto-color-scheme"); 354 return storageValue != null ? storageValue : localAlternateSentinel; 355 } else { 356 return localAlternateSentinel; 357 } 358 } 359 const toggleGiscusIfUsed = (isAlternate, darkModeDefault) => { 360 const baseTheme = document.querySelector('#giscus-base-theme')?.value ?? 'light'; 361 const alternateTheme = document.querySelector('#giscus-alt-theme')?.value ?? 'dark'; 362 let newTheme = ''; 363 if(authorPrefersDark) { 364 newTheme = isAlternate ? baseTheme : alternateTheme; 365 } else { 366 newTheme = isAlternate ? alternateTheme : baseTheme; 367 } 368 const changeGiscusTheme = () => { 369 // From: https://github.com/giscus/giscus/issues/336 370 const sendMessage = (message) => { 371 const iframe = document.querySelector('iframe.giscus-frame'); 372 if (!iframe) return; 373 iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app'); 374 } 375 sendMessage({ 376 setConfig: { 377 theme: newTheme 378 } 379 }); 380 } 381 const isGiscussLoaded = window.document.querySelector('iframe.giscus-frame') !== null; 382 if (isGiscussLoaded) { 383 changeGiscusTheme(); 384 } 385 }; 386 const authorPrefersDark = false;
387 const darkModeDefault = authorPrefersDark; 388 document.querySelector('link#quarto-text-highlighting-styles.quarto-color-scheme-extra').rel = 'disabled-stylesheet'; 389 document.querySelector('link#quarto-bootstrap.quarto-color-scheme-extra').rel = 'disabled-stylesheet'; 390 let localAlternateSentinel = darkModeDefault ? 'alternate' : 'default'; 391 // Dark / light mode switch 392 window.quartoToggleColorScheme = () => { 393 // Read the current dark / light value 394 let toAlternate = !hasAlternateSentinel(); 395 toggleColorMode(toAlternate); 396 setStyleSentinel(toAlternate); 397 toggleGiscusIfUsed(toAlternate, darkModeDefault); 398 window.dispatchEvent(new Event('resize')); 399 }; 400 // Switch to dark mode if need be 401 if (hasAlternateSentinel()) { 402 toggleColorMode(true); 403 } else { 404 toggleColorMode(false); 405 } 406 </script>
406 407 408<div id="quarto-search-results"></div> 409 <header id="quarto-header" class="headroom fixed-top"> 410 <nav class="navbar navbar-expand-lg " data-bs-theme="dark"> 411 <div class="navbar-container container-fluid"> 412 <div class="navbar-brand-container mx-auto"> 413 <a class='navbar-brand navbar-brand-logo' href='/'> 414 <img src="../_assets/silvia/img/logo_rounded.svg" alt="" class="navbar-logo light-content"> 415 <img src="../_assets/silvia/img/logo_rounded.svg" alt="" class="navbar-logo dark-content"> 416 </a> 417 <a class='navbar-brand' href='/'> 418 <span class="navbar-title">Silvia Canelón</span> 419 </a> 420 </div> 421 <div id="quarto-search" class="" title="Search"></div> 422 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" role="menu" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }"> 423 <span class="navbar-toggler-icon"></span> 424</button> 425 <div class="collapse navbar-collapse" id="navbarCollapse"> 426 <ul class="navbar-nav navbar-nav-scroll ms-auto"> 427 <li class="nav-item"> 428 <a aria-current='page' class='nav-link active' href='/about/'> 429<span class="menu-text">About</span></a> 430 </li> 431 <li class="nav-item"> 432 <a class='nav-link' href='/project/'> 433<span class="menu-text">Projects</span></a> 434 </li> 435 <li class="nav-item"> 436 <a class='nav-link' href='/talk/'> 437<span class="menu-text">Talks</span></a> 438 </li> 439 <li class="nav-item"> 440 <a class='nav-link' href='/blog/'> 441<span class="menu-text">Blog</span></a> 442 </li> 443 <li class="nav-item"> 444 <a class='nav-link' href='/publication/'> 445<span class="menu-text">Publications</span></a> 446 </li> 447</ul> 448 </div> <!-- /navcollapse --> 449 <div class="quarto-navbar-tools"> 450 <a href="https://www.github.com/spcanelon/silvia" title="" class="quarto-navigation-tool px-1" aria-label=""><i class="bi bi-github"></i></a> 451 <a href="" class="quarto-color-scheme-toggle quarto-navigation-tool px-1" onclick="window.quartoToggleColorScheme(); return false;" title="Toggle dark mode"><i class="bi"></i></a> 452</div> 453 </div> <!-- /container-fluid --> 454 </nav> 455</header> 456<!-- content --> 457<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-full page-navbar"> 458<!-- sidebar --> 459<!-- margin-sidebar --> 460 461<!-- main --> 462<main class="content column-page" id="quarto-document-content"> 463 464 465 466 467 468<div class="quarto-about-trestles column-page"> 469 <div class="about-entity"> 470 <img src="sidebar/avatar.png" alt="Smiling woman with a tan complexion, dark eyes, and dark long wavy hair styled to one side" class="about-image 471 rounded " style="width: 14em;"> 472<header id="title-block-header" class="quarto-title-block default"> 473<div class="quarto-title"> 474<h1 class="title">Silvia Canelón</h1> 475<p class="subtitle lead">Data Scientist & Journalist</p> 476</div> 477<div class="quarto-title-meta column-page"> 478 </div> 479</header> 480 <div class="about-links"> 481 <a class='about-link' href='/accessibility' rel target> 482 <span class="about-link-text"><i class="fa-solid fa-universal-access" aria-label="universal-access"></i></span> 483 </a> 484 <a href="https://bsky.app/profile/silviacanelon.com" class="about-link" rel="" target=""> 485 <span class="about-link-text"><i class="fa-brands fa-bluesky" aria-label="bluesky"></i></span> 486 </a> 487 <a href="https://linkedin.com/in/spcanelon" class="about-link" rel="" target=""> 488 <i class="bi bi-linkedin"></i> 489 <span class="about-link-text"></span> 490 </a> 491 <a href="https://github.com/spcanelon" class="about-link" rel="" target=""> 492 <i class="bi bi-github"></i> 493 <span class="about-link-text"></span> 494 </a> 495 <a href="https://orcid.org/0000-0003-1709-1394" class="about-link" rel="" target=""> 496 <span class="about-link-text"><i class="ai ai-orcid"></i></span> 497 </a> 498 <a href="https://scholar.google.com/citations?user=GAzkvpcAAAAJ&hl=en&oi=ao" class="about-link" rel="" target=""> 499 <span class="about-link-text"><i class="ai ai-google-scholar"></i></span> 500 </a>
501 <a href="https://buttondown.com/spcanelon" class="about-link" rel="" target=""> 502 <span class="about-link-text"><i class="fa-solid fa-envelope" aria-label="envelope"></i></span> 503 </a> 504</div> 505 </div> 506 <div class="about-contents"><div id="hero-heading"> 507<div class="h1"> 508Hey, Iâm happy youâre here 509</div> 510<p>Thanks for stopping by!</p> 511<p>I work as a data scientist at the <a href="https://www.urbanhealthlab.org/">Urban Health Lab</a> at the University of Pennsylvania. My research interests include applications of biomedical and spatial data science in the public and population health fields.</p> 512<p>My current projects use electronic health record (EHR) and geospatial data to explore how the neighborhood environment and access to urban nature can impact the health of individuals in Philadelphia. Learn more about my research interests in <a href="../publication">publications</a>.</p> 513<p>Get in touch by <a href='/contact'>sending me a note</a>! <i class="fa-solid fa-feather-pointed" aria-label="feather-pointed"></i></p> 514</div></div> 515</div> 516 517<section id="about-me" class="level2"> 518<h2 data-anchor-id="about-me">About me</h2> 519<div class="grid"> 520<div id="about-me-1" class="g-col-6"> 521<p><strong>Biomedical engineer turned informaticist, curious about all intersections of data and society.</strong></p> 522<p>I enjoy using <a href="https://www.r-project.org/about.html">R</a> to optimize my data science workflow and have noticed it making guest appearances elsewhere in my life. Iâm certified as an <a href="https://education.rstudio.com/trainers/people/canelon+silvia/">RStudio Tidyverse Instructor</a> and am passionate about R education and data literacy as ways to build power in communities. Keep up with my R tinkering in my <a href="../blog">blog</a> and presentations in <a href="../talk">talks</a>.</p> 523<ul class="fa-ul"> 524<li> 525<span class="fa-li"><i class="fa-solid fa-certificate"></i></span><a href="https://education.rstudio.com/trainers/people/canelon+silvia/">Tidyverse Instructor Certification</a> â RStudio, PBC â 2020 526</li> 527</ul> 528</div> 529<div id="about-me-2" class="g-col-6"> 530<p>Prior to joining the Urban Health Lab, I developed novel data mining methods to extract meaningful information from the EHR and study health outcomes and disparities in pregnant populations. Iâm particularly interested in research that combines biomedical data science with open data sources in ways that prioritize health equity in communities.</p> 531<ul class="fa-ul"> 532<li> 533<span class="fa-li"><i class="fa-solid fa-certificate"></i></span><a href="https://www.med.upenn.edu/mbmi/certificate.html">Certificate in Biomedical Informatics</a> â University of Pennsylvania â 2019 534</li> 535<li> 536<span class="fa-li"><i class="fa-solid fa-graduation-cap"></i></span>Ph.D. in Biomedical Engineering â Purdue University â 2018 537</li> 538<li> 539<span class="fa-li"><i class="fa-solid fa-graduation-cap"></i></span>B.S. in Biomedical Engineering â University of Minnesota â 2012 540</li> 541</ul> 542</div> 543</div> 544<!-- end grid --> 545</section> 546<section id="lately" class="level2"> 547<h2 data-anchor-id="lately">Lately â¦</h2> 548<div class="grid"> 549<section id="projects" class="level4 g-col-3"> 550<h4 data-anchor-id="projects">Projects</h4> 551<div id="listing-project" class="quarto-listing quarto-listing-container-grid"> 552<div class="list grid quarto-listing-cols-1"> 553<div class="g-col-1" data-index="0" data-categories="am91cm5hbGlzbSUyQ1IlMkNkYXRhJTIwdml6" data-listing-date-sort="1761019200000"> 554<a href="https://www.kensingtonvoice.com/new-fast-track-court-for-kensington-lands-most-with-warrants-back-into-the-cycle-of-addiction-and-homelessness/" class="quarto-grid-link"> 555<div class="quarto-grid-item card h-100 card-left"> 556<p class="card-img-top"> 557<img loading="lazy" src="../project/external-items/2025-10-21-kv-wellness-court/featured.png" class="thumbnail-image card-img" style="height: 200;"> 558</p> 559<div class="card-body post-contents"> 560<h5 class="no-anchor card-title listing-title"> 561New Kensington âfast-track courtâ lands most with warrants, back into the cycle of addiction and homelessness<br><em>Photo by Solmaira Valerio</em> 562</h5> 563<div class="card-subtitle listing-subtitle"> 564Kensington Voice 565</div> 566</div> 567</div></a> 568</div> 569</div> 570<div class="listing-no-matching d-none">No matching items</div> 571</div> 572<p><a href="../project" class="about-links subtitle">See all â</a></p> 573</section> 574<section id="talks" class="level4 g-col-3"> 575<h4 data-anchor-id="talks">Talks</h4> 576<div id="listing-talk" class="quarto-listing quarto-listing-container-grid"> 577<div class="list grid quarto-listing-cols-1"> 578<div class="g-col-1" data-index="0" data-categories="am91cm5hbGlzbSUyQ2RhdGElMjB2aXo=" data-listing-date-sort="1785447000000" data-listing-file-modified-sort="1790780581562" data-listing-date-modified-sort="1785470400000" data-listing-reading-time-sort="1" data-listing-word-count-sort="133"> 579<a class='quarto-grid-link' href='/talk/2026-07-30-data-viz-meetup/'> 580<div class="quarto-grid-item card h-100 card-left"> 581<p class="card-img-top"> 582<img loading="lazy" src="../talk/2026-07-30-data-viz-meetup/featured.png" class="thumbnail-image card-img" style="height: 200;"> 583</p> 584<div class="card-body post-contents"> 585<h5 class="no-anchor card-title listing-title">
586A Candid Look at Journalism Philanthropic Funding 587</h5> 588<div class="card-subtitle listing-subtitle"> 589July Data Visualization Meetup 590</div> 591</div> 592</div></a> 593</div> 594</div> 595<div class="listing-no-matching d-none">No matching items</div> 596</div> 597<p><a href="../talk" class="about-links subtitle">See all â</a></p> 598</section> 599<section id="blog" class="level4 g-col-3"> 600<h4 data-anchor-id="blog">Blog</h4> 601<div id="listing-blog" class="quarto-listing quarto-listing-container-grid"> 602<div class="list grid quarto-listing-cols-1"> 603<div class="g-col-1" data-index="0" data-categories="UiUyQ3F1YXJ0byUyQ3dlYnNpdGU=" data-listing-date-sort="1695960000000" data-listing-file-modified-sort="1790780581057" data-listing-date-modified-sort="1697083200000" data-listing-reading-time-sort="19" data-listing-word-count-sort="3731"> 604<a class='quarto-grid-link' href='/blog/2023-09-29-hello-quarto/'> 605<div class="quarto-grid-item card h-100 card-left"> 606<p class="card-img-top"> 607<img loading="lazy" src="../blog/2023-09-29-hello-quarto/featured.jpg" class="thumbnail-image card-img" style="height: 200;"> 608</p> 609<div class="card-body post-contents"> 610<h5 class="no-anchor card-title listing-title"> 611Hello Quarto: Porting my Website from Hugo Apéro 612</h5> 613<div class="card-subtitle listing-subtitle"> 614Notes from porting my personal Blogdown website to Quarto 615</div> 616</div> 617</div></a> 618</div> 619</div> 620<div class="listing-no-matching d-none">No matching items</div> 621</div> 622<p><a href="../blog" class="about-links subtitle">See all â</a></p> 623</section> 624<section id="publications" class="level4 g-col-3"> 625<h4 data-anchor-id="publications">Publications</h4> 626<div id="listing-publication" class="quarto-listing quarto-listing-container-grid"> 627<div class="list grid quarto-listing-cols-1"> 628<div class="g-col-1" data-index="0" data-categories="cmVzZWFyY2glMkNFSFI=" data-listing-date-sort="1790654400000" data-listing-file-modified-sort="1790783425793" data-listing-date-modified-sort="NaN" data-listing-reading-time-sort="2" data-listing-word-count-sort="266">
629<a class='quarto-grid-link' href='/publication/2026-09-29-neighborhood-features-preeclampsia-risk/'> 630<div class="quarto-grid-item card h-100 card-left"> 631<p class="card-img-top"> 632<img loading="lazy" src="../publication/2026-09-29-neighborhood-features-preeclampsia-risk/featured.png" class="thumbnail-image card-img" style="height: 200;"> 633</p> 634<div class="card-body post-contents"> 635<h5 class="no-anchor card-title listing-title"> 636The relative importance of neighborhood environment features in explaining preeclampsia risk using machine learning 637</h5> 638</div> 639</div></a> 640</div> 641</div> 642<div class="listing-no-matching d-none">No matching items</div> 643</div> 644<p><a href="../publication" class="about-links subtitle">See all â</a></p> 645</section> 646</div> 647 648 649 650 651</section> 652 653<a onclick="window.scrollTo(0, 0); return false;" role="button" id="quarto-back-to-top"><i class="bi bi-arrow-up"></i> Back to top</a></main> <!-- /main -->
654<script id="quarto-html-after-body" type="application/javascript"> 655 window.document.addEventListener("DOMContentLoaded", function (event) { 656 // Ensure there is a toggle, if there isn't float one in the top right 657 if (window.document.querySelector('.quarto-color-scheme-toggle') === null) { 658 const a = window.document.createElement('a'); 659 a.classList.add('top-right'); 660 a.classList.add('quarto-color-scheme-toggle'); 661 a.href = ""; 662 a.onclick = function() { try { window.quartoToggleColorScheme(); } catch {} return false; }; 663 const i = window.document.createElement("i"); 664 i.classList.add('bi'); 665 a.appendChild(i); 666 window.document.body.appendChild(a); 667 } 668 setColorSchemeToggle(hasAlternateSentinel()) 669 const isCodeAnnotation = (el) => { 670 for (const clz of el.classList) { 671 if (clz.startsWith('code-annotation-')) { 672 return true; 673 } 674 } 675 return false; 676 } 677 const onCopySuccess = function(e) { 678 // button target 679 const button = e.trigger; 680 // don't keep focus 681 button.blur(); 682 // flash "checked" 683 button.classList.add('code-copy-button-checked'); 684 var currentTitle = button.getAttribute("title"); 685 button.setAttribute("title", "Copied!"); 686 let tooltip; 687 if (window.bootstrap) { 688 button.setAttribute("data-bs-toggle", "tooltip"); 689 button.setAttribute("data-bs-placement", "left"); 690 button.setAttribute("data-bs-title", "Copied!"); 691 tooltip = new bootstrap.Tooltip(button, 692 { trigger: "manual", 693 customClass: "code-copy-button-tooltip", 694 offset: [0, -8]}); 695 tooltip.show(); 696 } 697 setTimeout(function() { 698 if (tooltip) { 699 tooltip.hide(); 700 button.removeAttribute("data-bs-title"); 701 button.removeAttribute("data-bs-toggle"); 702 button.removeAttribute("data-bs-placement"); 703 } 704 button.setAttribute("title", currentTitle); 705 button.classList.remove('code-copy-button-checked'); 706 }, 1000); 707 // clear code selection 708 e.clearSelection(); 709 } 710 const getTextToCopy = function(trigger) { 711 const outerScaffold = trigger.parentElement.cloneNode(true); 712 const codeEl = outerScaffold.querySelector('code'); 713 for (const childEl of codeEl.children) { 714 if (isCodeAnnotation(childEl)) { 715 childEl.remove(); 716 } 717 } 718 return codeEl.innerText; 719 } 720 const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', { 721 text: getTextToCopy 722 }); 723 clipboard.on('success', onCopySuccess); 724 if (window.document.getElementById('quarto-embedded-source-code-modal')) { 725 const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', { 726 text: getTextToCopy, 727 container: window.document.getElementById('quarto-embedded-source-code-modal') 728 }); 729 clipboardModal.on('success', onCopySuccess); 730 } 731 var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); 732 var mailtoRegex = new RegExp(/^mailto:/); 733 var filterRegex = new RegExp("https:\/\/silviacanelon\.com"); 734 var isInternal = (href) => { 735 return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); 736 } 737 // Inspect non-navigation links and adorn them if external 738 var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)'); 739 for (var i=0; i<links.length; i++) { 740 const link = links[i]; 741 if (!isInternal(link.href)) { 742 // undo the damage that might have been done by quarto-nav.js in the case of 743 // links that we want to consider external 744 if (link.dataset.originalHref !== undefined) { 745 link.href = link.dataset.originalHref; 746 } 747 } 748 } 749 function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) { 750 const config = { 751 allowHTML: true, 752 maxWidth: 500, 753 delay: 100,
754 arrow: false, 755 appendTo: function(el) { 756 return el.parentElement; 757 }, 758 interactive: true, 759 interactiveBorder: 10, 760 theme: 'quarto', 761 placement: 'bottom-start', 762 }; 763 if (contentFn) { 764 config.content = contentFn; 765 } 766 if (onTriggerFn) { 767 config.onTrigger = onTriggerFn; 768 } 769 if (onUntriggerFn) { 770 config.onUntrigger = onUntriggerFn; 771 } 772 window.tippy(el, config); 773 } 774 const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); 775 for (var i=0; i<noterefs.length; i++) { 776 const ref = noterefs[i]; 777 tippyHover(ref, function() { 778 // use id or data attribute instead here 779 let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href'); 780 try { href = new URL(href).hash; } catch {} 781 const id = href.replace(/^#\/?/, ""); 782 const note = window.document.getElementById(id); 783 if (note) { 784 return note.innerHTML; 785 } else { 786 return ""; 787 } 788 }); 789 } 790 const xrefs = window.document.querySelectorAll('a.quarto-xref'); 791 const processXRef = (id, note) => { 792 // Strip column container classes 793 const stripColumnClz = (el) => { 794 el.classList.remove("page-full", "page-columns"); 795 if (el.children) { 796 for (const child of el.children) { 797 stripColumnClz(child); 798 } 799 } 800 } 801 stripColumnClz(note) 802 if (id === null || id.startsWith('sec-')) { 803 // Special case sections, only their first couple elements 804 const container = document.createElement("div"); 805 if (note.children && note.children.length > 2) { 806 container.appendChild(note.children[0].cloneNode(true)); 807 for (let i = 1; i < note.children.length; i++) { 808 const child = note.children[i]; 809 if (child.tagName === "P" && child.innerText === "") { 810 continue; 811 } else { 812 container.appendChild(child.cloneNode(true)); 813 break; 814 } 815 } 816 if (window.Quarto?.typesetMath) { 817 window.Quarto.typesetMath(container); 818 } 819 return container.innerHTML 820 } else { 821 if (window.Quarto?.typesetMath) { 822 window.Quarto.typesetMath(note); 823 } 824 return note.innerHTML; 825 } 826 } else { 827 // Remove any anchor links if they are present 828 const anchorLink = note.querySelector('a.anchorjs-link'); 829 if (anchorLink) { 830 anchorLink.remove(); 831 } 832 if (window.Quarto?.typesetMath) { 833 window.Quarto.typesetMath(note); 834 } 835 if (note.classList.contains("callout")) { 836 return note.outerHTML; 837 } else { 838 return note.innerHTML; 839 } 840 } 841 } 842 for (var i=0; i<xrefs.length; i++) { 843 const xref = xrefs[i]; 844 tippyHover(xref, undefined, function(instance) { 845 instance.disable(); 846 let url = xref.getAttribute('href'); 847 let hash = undefined; 848 if (url.startsWith('#')) { 849 hash = url; 850 } else { 851 try { hash = new URL(url).hash; } catch {} 852 } 853 if (hash) { 854 const id = hash.replace(/^#\/?/, ""); 855 const note = window.document.getElementById(id); 856 if (note !== null) { 857 try { 858 const html = processXRef(id, note.cloneNode(true)); 859 instance.setContent(html); 860 } finally { 861 instance.enable(); 862 instance.show(); 863 } 864 } else { 865 // See if we can fetch this 866 fetch(url.split('#')[0]) 867 .then(res => res.text()) 868 .then(html => { 869 const parser = new DOMParser(); 870 const htmlDoc = parser.parseFromString(html, "text/html"); 871 const note = htmlDoc.getElementById(id); 872 if (note !== null) { 873 const html = processXRef(id, note); 874 instance.setContent(html); 875 } 876 }).finally(() => { 877 instance.enable(); 878 instance.show(); 879 }); 880 } 881 } else { 882 // See if we can fetch a full url (with no hash to target)
883 // This is a special case and we should probably do some content thinning / targeting 884 fetch(url) 885 .then(res => res.text()) 886 .then(html => { 887 const parser = new DOMParser(); 888 const htmlDoc = parser.parseFromString(html, "text/html"); 889 const note = htmlDoc.querySelector('main.content'); 890 if (note !== null) { 891 // This should only happen for chapter cross references 892 // (since there is no id in the URL) 893 // remove the first header 894 if (note.children.length > 0 && note.children[0].tagName === "HEADER") { 895 note.children[0].remove(); 896 } 897 const html = processXRef(null, note); 898 instance.setContent(html); 899 } 900 }).finally(() => { 901 instance.enable(); 902 instance.show(); 903 }); 904 } 905 }, function(instance) { 906 }); 907 } 908 let selectedAnnoteEl; 909 const selectorForAnnotation = ( cell, annotation) => { 910 let cellAttr = 'data-code-cell="' + cell + '"'; 911 let lineAttr = 'data-code-annotation="' + annotation + '"'; 912 const selector = 'span[' + cellAttr + '][' + lineAttr + ']'; 913 return selector; 914 } 915 const selectCodeLines = (annoteEl) => { 916 const doc = window.document; 917 const targetCell = annoteEl.getAttribute("data-target-cell"); 918 const targetAnnotation = annoteEl.getAttribute("data-target-annotation"); 919 const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation)); 920 const lines = annoteSpan.getAttribute("data-code-lines").split(","); 921 const lineIds = lines.map((line) => { 922 return targetCell + "-" + line; 923 }) 924 let top = null; 925 let height = null; 926 let parent = null; 927 if (lineIds.length > 0) { 928 //compute the position of the single el (top and bottom and make a div) 929 const el = window.document.getElementById(lineIds[0]); 930 top = el.offsetTop; 931 height = el.offsetHeight; 932 parent = el.parentElement.parentElement; 933 if (lineIds.length > 1) { 934 const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]); 935 const bottom = lastEl.offsetTop + lastEl.offsetHeight; 936 height = bottom - top; 937 } 938 if (top !== null && height !== null && parent !== null) { 939 // cook up a div (if necessary) and position it 940 let div = window.document.getElementById("code-annotation-line-highlight"); 941 if (div === null) { 942 div = window.document.createElement("div"); 943 div.setAttribute("id", "code-annotation-line-highlight"); 944 div.style.position = 'absolute'; 945 parent.appendChild(div); 946 } 947 div.style.top = top - 2 + "px"; 948 div.style.height = height + 4 + "px"; 949 div.style.left = 0; 950 let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); 951 if (gutterDiv === null) { 952 gutterDiv = window.document.createElement("div"); 953 gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter"); 954 gutterDiv.style.position = 'absolute'; 955 const codeCell = window.document.getElementById(targetCell); 956 const gutter = codeCell.querySelector('.code-annotation-gutter'); 957 gutter.appendChild(gutterDiv); 958 } 959 gutterDiv.style.top = top - 2 + "px"; 960 gutterDiv.style.height = height + 4 + "px"; 961 } 962 selectedAnnoteEl = annoteEl; 963 } 964 }; 965 const unselectCodeLines = () => { 966 const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"]; 967 elementsIds.forEach((elId) => { 968 const div = window.document.getElementById(elId); 969 if (div) { 970 div.remove(); 971 } 972 }); 973 selectedAnnoteEl = undefined; 974 }; 975 // Handle positioning of the toggle 976 window.addEventListener( 977 "resize", 978 throttle(() => { 979 elRect = undefined; 980 if (selectedAnnoteEl) { 981 selectCodeLines(selectedAnnoteEl); 982 } 983 }, 10) 984 ); 985 function throttle(fn, ms) { 986 let throttle = false;
987 let timer; 988 return (...args) => { 989 if(!throttle) { // first call gets through 990 fn.apply(this, args); 991 throttle = true; 992 } else { // all the others get throttled 993 if(timer) clearTimeout(timer); // cancel #2 994 timer = setTimeout(() => { 995 fn.apply(this, args); 996 timer = throttle = false; 997 }, ms); 998 } 999 }; 1000 } 1001 // Attach click handler to the DT 1002 const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); 1003 for (const annoteDlNode of annoteDls) { 1004 annoteDlNode.addEventListener('click', (event) => { 1005 const clickedEl = event.target; 1006 if (clickedEl !== selectedAnnoteEl) { 1007 unselectCodeLines(); 1008 const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active'); 1009 if (activeEl) { 1010 activeEl.classList.remove('code-annotation-active'); 1011 } 1012 selectCodeLines(clickedEl); 1013 clickedEl.classList.add('code-annotation-active'); 1014 } else { 1015 // Unselect the line 1016 unselectCodeLines(); 1017 clickedEl.classList.remove('code-annotation-active'); 1018 } 1019 }); 1020 } 1021 const findCites = (el) => { 1022 const parentEl = el.parentElement; 1023 if (parentEl) { 1024 const cites = parentEl.dataset.cites; 1025 if (cites) { 1026 return { 1027 el, 1028 cites: cites.split(' ') 1029 }; 1030 } else { 1031 return findCites(el.parentElement) 1032 } 1033 } else { 1034 return undefined; 1035 } 1036 }; 1037 var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]'); 1038 for (var i=0; i<bibliorefs.length; i++) { 1039 const ref = bibliorefs[i]; 1040 const citeInfo = findCites(ref); 1041 if (citeInfo) { 1042 tippyHover(citeInfo.el, function() { 1043 var popup = window.document.createElement('div'); 1044 citeInfo.cites.forEach(function(cite) { 1045 var citeDiv = window.document.createElement('div'); 1046 citeDiv.classList.add('hanging-indent'); 1047 citeDiv.classList.add('csl-entry'); 1048 var biblioDiv = window.document.getElementById('ref-' + cite); 1049 if (biblioDiv) { 1050 citeDiv.innerHTML = biblioDiv.innerHTML; 1051 } 1052 popup.appendChild(citeDiv); 1053 }); 1054 return popup.innerHTML; 1055 }); 1056 } 1057 } 1058 }); 1059 </script>
vendor: 1 bytes, line 1059
1059
1060<script src="https://utteranc.es/client.js" repo="spcanelon/silvia" issue-term="title" theme="body-light" crossorigin="anonymous" async=""> 1061</script>
1061 1062</div> <!-- /content --> 1063<footer class="footer"> 1064 <div class="nav-footer"> 1065 <div class="nav-footer-left"> 1066<p>© 2024 Silvia Canelón â Made with <a href="https://quarto.org">Quarto</a></p> 1067</div> 1068 <div class="nav-footer-center"> 1069<p><a class='link-dark me-1' href='/accessibility' rel='noopener' target='_blank' title='Accessibility commitment'><i class="fa-solid fa-universal-access" aria-label="universal-access"></i></a> <a class="link-dark me-1" href="https://bsky.app/profile/silviacanelon.com" title="Bluesky" target="_blank" rel="noopener"><i class="fa-brands fa-bluesky" aria-label="bluesky"></i></a> <a class="link-dark me-1" href="https://linkedin.com/in/spcanelon" title="LinkedIn" target="_blank" rel="noopener"><i class="fa-brands fa-linkedin" aria-label="linkedin"></i></a> <a class="link-dark me-1" href="https://github.com/spcanelon" title="github" target="_blank" rel="noopener"><i class="fa-brands fa-github" aria-label="github"></i></a> <a class="link-dark me-1" href="https://orcid.org/0000-0003-1709-1394" title="orcid" target="_blank" rel="noopener"><i class="ai ai-orcid"></i></a> <a class="link-dark me-1" href="https://scholar.google.com/citations?user=GAzkvpcAAAAJ&hl=en&oi=ao" title="Google Scholar" target="_blank" rel="noopener"><i class="ai ai-google-scholar"></i></a> <a class="link-dark me-1" href="https://buttondown.com/spcanelon" title="Newsletter" target="_blank" rel="noopener"><i class="fa-solid fa-envelope" aria-label="envelope"></i></a></p> 1070</div> 1071 <div class="nav-footer-right"> 1072 <ul class="footer-items list-unstyled"> 1073 <li class="nav-item"> 1074 <a class='nav-link' href='/accessibility'> 1075<p>Accessibility</p> 1076</a> 1077 </li> 1078 <li class="nav-item"> 1079 <a class='nav-link' href='/contact'> 1080<p>Contact</p> 1081</a> 1082 </li> 1083 <li class="nav-item"> 1084 <a class='nav-link' href='/license'> 1085<p>License</p> 1086</a> 1087 </li> 1088 <li class="nav-item compact"> 1089 <a class="nav-link" href="../blog/index.xml"> 1090 <i class="bi bi-rss" role="img"> 1091</i> 1092 </a> 1093 </li> 1094</ul> 1095 </div> 1096 </div> 1097</footer> 1098 1099 1100 1101 1102</body></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.