1 2 3<!doctype html> 4<!-- 5 Minimal Mistakes Jekyll Theme 4.28.0 by Michael Rose 6 Copyright 2013-2026 Michael Rose - mademistakes.com | @mmistakes 7 Copyright 2024-2026 iBug - ibugone.com | @iBug 8 Free for personal and commercial use under the MIT license 9 https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE 10--> 11 12<html lang="en" class="no-js"> 13 <head> 14 15<meta charset="utf-8"> 16 17 18<!-- begin _includes/seo.html --><title>About Joseph Guadagno - JosephGuadagno.net</title> 19<meta name="description" content="Vice President of Technology, Head of Engineering, Microsoft MVP, Driving Engineering Excellence through AI-Assisted Workflows & GitHub Copilot, Scaling High-Performance, Remote-First Teams, Passionate about .NET, Azure, and Open Source, Speaker & Mentor, Building the Future of Software Development"> 20 21 22 <meta name="author" content="Joseph Guadagno"> 23 24 25 26<meta property="og:type" content="website"> 27<meta property="og:locale" content="en_US"> 28<meta property="og:site_name" content="JosephGuadagno.net"> 29<meta property="og:title" content="About Joseph Guadagno"> 30<meta property="og:url" content="https://www.josephguadagno.net/about-joseph-guadagno/"> 31 32 33 <meta property="og:description" content="Vice President of Technology, Head of Engineering, Microsoft MVP, Driving Engineering Excellence through AI-Assisted Workflows & GitHub Copilot, Scaling High-Performance, Remote-First Teams, Passionate about .NET, Azure, and Open Source, Speaker & Mentor, Building the Future of Software Development"> 34 35 36 37 <meta property="og:image" content="https://www.josephguadagno.net/assets/images/pages/about-joseph-guadagno.png"> 38 39 40 41 42 <meta name="twitter:site" content="@jguadagno"> 43 <meta name="twitter:title" content="About Joseph Guadagno"> 44 <meta name="twitter:description" content="Vice President of Technology, Head of Engineering, Microsoft MVP, Driving Engineering Excellence through AI-Assisted Workflows & GitHub Copilot, Scaling High-Performance, Remote-First Teams, Passionate about .NET, Azure, and Open Source, Speaker & Mentor, Building the Future of Software Development"> 45 <meta name="twitter:url" content="https://www.josephguadagno.net/about-joseph-guadagno/"> 46 47 48 <meta name="twitter:card" content="summary_large_image"> 49 <meta name="twitter:image" content="https://www.josephguadagno.net/assets/images/pages/about-joseph-guadagno.png"> 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 <meta property="article:publisher" content="1580735823"> 65 66 67 68 <meta property="fb:app_id" content="266442613419593"> 69 70 71 72<link rel="canonical" href="https://www.josephguadagno.net/about-joseph-guadagno/"> 73 74 75 76 77 78 79 80 81 <meta name="msvalidate.01" content="7EC9949296748CD8737FFF69FC74B369"> 82 83 84 85 86 87<!-- end _includes/seo.html --> 88 89 90 91 <link href="https://feeds.feedburner.com/JosephGuadagno" type="application/atom+xml" rel="alternate" title="JosephGuadagno.net Feed"> 92<meta name="viewport" content="width=device-width, initial-scale=1.0"> 93
94<script> 95 document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; 96 window.enable_copy_code_button = true; 97</script>
97 98 99<!-- For all browsers --> 100<link rel="stylesheet" href="/assets/css/main.css"> 101<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 102<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript> 103 104 105 106
106<script src="/assets/js/ai.js"></script>
106 107 108 109 110 <link rel="alternate" title="JosephGuadagno.net" type="application/json" href="https://www.josephguadagno.net/feed.json" /> 111<!-- Generated by https://realfavicongenerator.net/ --> 112<link rel="apple-touch-icon" sizes="57x57" href="/assets/icons/apple-icon-57x57.png"> 113<link rel="apple-touch-icon" sizes="60x60" href="/assets/icons/apple-icon-60x60.png"> 114<link rel="apple-touch-icon" sizes="72x72" href="/assets/icons/apple-icon-72x72.png"> 115<link rel="apple-touch-icon" sizes="76x76" href="/assets/icons/apple-icon-76x76.png"> 116<link rel="apple-touch-icon" sizes="114x114" href="/assets/icons/apple-icon-114x114.png"> 117<link rel="apple-touch-icon" sizes="120x120" href="/assets/icons/apple-icon-120x120.png"> 118<link rel="apple-touch-icon" sizes="144x144" href="/assets/icons/apple-icon-144x144.png"> 119<link rel="apple-touch-icon" sizes="152x152" href="/assets/icons/apple-icon-152x152.png"> 120<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-icon-180x180.png"> 121<link rel="icon" type="image/png" sizes="192x192" href="/assets/icons/android-icon-192x192.png"> 122<link rel="icon" type="image/png" sizes="32x32" href="/assets/icons/favicon-32x32.png"> 123<link rel="icon" type="image/png" sizes="96x96" href="/assets/icons/favicon-96x96.png"> 124<link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png"> 125<link rel="icon" type="image/svg+xml" href="/assets/icons/favicon.svg" /> 126 127 128<link rel="manifest" href="/assets/icons/site.webmanifest"> 129<link rel="mask-icon" href="/assets/icons/safari-pinned-tab.svg" color="#5bbad5"> 130<link rel="shortcut icon" href="/assets/icons/favicon.ico"> 131<meta name="msapplication-TileColor" content="#2d89ef"> 132<meta name="msapplication-TileImage" content="/assets/icons/ms-icon-144x144.png"> 133<meta name="msapplication-config" content="/assets/icons/browserconfig.xml"> 134<meta name="theme-color" content="#ffffff"> 135<meta name="facebook-domain-verification" content="yq2el43ug3oykuejgtxq1p7kgopbxx" /> 136<meta name="apple-mobile-web-app-title" content="JosephGuadagno.NET" /> 137 138<!-- Generated by https://realfavicongenerator.net/social/#.XGBFaFxKiUk --> 139<meta property="og:image:width" content="128"> 140<meta property="og:image:height" content="128"> 141 142 </head> 143 144 <body class="layout--single wide" dir="ltr"> 145 146<nav class="skip-links" aria-label="Skip links"> 147 <ul> 148 <li><a href="#site-nav" class="screen-reader-shortcut">Skip to primary navigation</a></li> 149 <li><a href="#main" class="screen-reader-shortcut">Skip to content</a></li> 150 <li><a href="#footer" class="screen-reader-shortcut">Skip to footer</a></li> 151 </ul> 152</nav> 153 154 155 156 157<div class="masthead"> 158 <div class="masthead__inner-wrap"> 159 <div class="masthead__menu"> 160 <nav id="site-nav" class="greedy-nav" aria-label="Primary navigation"> 161 162 <a class="site-logo" href="/"><img src="/assets/icons/android-chrome-96x96.png" alt="JosephGuadagno.net"></a> 163 164 <a class="site-title" href="/"> 165 JosephGuadagno.net 166 167 </a> 168 <ul class="visible-links"><li class="masthead__menu-item"> 169 <a 170 href="/about-joseph-guadagno" 171 title="About Joseph Guadagno" 172 173 >About Me</a> 174 </li><li class="masthead__menu-item"> 175 <a 176 href="/resume" 177 title="The resume of Joseph Guadagno" 178 179 >Resume</a> 180 </li><li class="masthead__menu-item"> 181 <a 182 href="/presentations" 183 title="Topics/Presentations that Joseph Guadagno can present" 184 185 >Presentations</a> 186 </li><li class="masthead__menu-item"> 187 <a 188 href="/speaking-engagements" 189 title="Events that Joseph Guadagno will be speaking, or has spoken, at" 190 191 >Speaking</a> 192 </li><li class="masthead__menu-item"> 193 <a 194 href="/contact" 195 title="Contact Joseph Guadagno" 196 197 >Contact</a> 198 </li><li class="masthead__menu-item"> 199 <a 200 href="/categories" 201 title="See all the posts by categories" 202 203 >Categories</a> 204 </li><li class="masthead__menu-item"> 205 <a 206 href="/tags" 207 title="See all posts around a tag" 208 209 >Tags</a> 210 </li><li class="masthead__menu-item"> 211 <a 212 href="/year-archive" 213 title="See all posts by year" 214 215 >By Year</a> 216 </li></ul> 217 218 <button class="search__toggle" type="button">
219 <span class="visually-hidden">Toggle search</span> 220 <i class="fas fa-search"></i> 221 </button> 222 223 <button class="greedy-nav__toggle hidden" type="button"> 224 <span class="visually-hidden">Toggle menu</span> 225 <div class="navicon"></div> 226 </button> 227 <ul class="hidden-links hidden"></ul> 228 </nav> 229 </div> 230 </div> 231</div> 232 233 234 <div class="initial-content"> 235 236 237 238 239 240 241 242 243 244 245 246 247 248<nav class="breadcrumbs" aria-label="Breadcrumb"> 249 <ol itemscope itemtype="https://schema.org/BreadcrumbList"> 250 251 252 253 254 <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> 255 <a href="/" itemprop="item"><span itemprop="name">Home</span></a> 256 257 <meta itemprop="position" content="1" /> 258 </li> 259 <span class="sep">/</span> 260 261 262 <li class="current">About Joseph Guadagno</li> 263 264 265 </ol> 266</nav> 267 268 269 270 271<div id="main" role="main"> 272 273 274 <div class="sidebar sticky"> 275 276 277 278 279<div itemscope itemtype="https://schema.org/Person" class="h-card"> 280 281 282 <div class="author__avatar"> 283 <a href="https://www.josephguadagno.net/"> 284 <img src="/assets/images/authors/Joe_Guadagno_512x512.jpg" alt="Joseph Guadagno" itemprop="image" class="u-photo"> 285 </a> 286 </div> 287 288 289 <div class="author__content"> 290 <h3 class="author__name p-name" itemprop="name"> 291 <a class="u-url" rel="me" href="https://www.josephguadagno.net/" itemprop="url">Joseph Guadagno</a> 292 </h3> 293 294 <div class="author__bio p-note" itemprop="description"> 295 <p>Vice President of Technology, Head of Engineering, Microsoft MVP, Driving Engineering Excellence through AI-Assisted Workflows & GitHub Copilot, Scaling High-Performance, Remote-First Teams</p> 296 297 </div> 298 299 </div> 300 301 <div class="author__urls-wrapper"> 302 <button class="btn btn--inverse">Follow</button> 303 <ul class="author__urls social-icons"> 304 305 <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place"> 306 <i class="fas fa-fw fa-location-dot" aria-hidden="true"></i> <span itemprop="name" class="p-locality">Chandler, AZ, USA</span> 307 </li> 308 309 310 311 312 313 <li><a href="mailto:[email protected]" rel="nofollow noopener noreferrer me"><i class="fas fa-fw fa-envelope" aria-hidden="true"></i><span class="label">Email</span></a></li> 314 315 316 317 <li><a href="https://www.josephguadagno.net" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fa-solid fa-globe" aria-hidden="true"></i><span class="label">Website</span></a></li> 318 319 320 321 <li><a href="https://www.linkedin.com/in/josephguadagno/" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span class="label">LinkedIn</span></a></li> 322 323 324 325 <li><a href="https://bsky.app/profile/jguadagno.com" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-bluesky" aria-hidden="true"></i><span class="label">Bluesky</span></a></li> 326 327 328 329 <li><a href="https://github.com/jguadagno" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-github" aria-hidden="true"></i><span class="label">GitHub</span></a></li> 330 331 332 333 <li><a href="https://www.facebook.com/JosephGuadagnoNet" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span class="label">Facebook</span></a></li> 334 335 336 337 <li><a href="https://x.com/jguadagno" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-x-twitter" aria-hidden="true"></i><span class="label">X</span></a></li> 338 339 340 341 <li><a href="https://www.youtube.com/playlist?list=PLESGit66MnblZW06pJQwB_VPFZnOT-gG2" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">'Coding with JoeG' Videos</span></a></li> 342 343 344 345 <li><a href="https://www.youtube.com/playlist?list=PLESGit66MnbmnDhXdTZicVFF2Pql430pJ" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-youtube" aria-hidden="true"></i><span class="label">Previous Presentations</span></a></li> 346 347 348 349 <li><a href="https://www.twitch.tv/jguadagno" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-twitch" aria-hidden="true"></i><span class="label">'Coding with JoeG' stream</span></a></li> 350 351 352 353 <li><a href="https://www.paypal.me/jguadagno" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fab fa-fw fa-paypal" aria-hidden="true"></i><span class="label">Sponsor - PayPal</span></a></li> 354 355 356 357 <li><a href="https://buymeacoffee.com/jguadagno" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-coffee" aria-hidden="true"></i><span class="label">Sponsor - Buy Me a Tea</span></a></li> 358 359 360 361 <li><a href="https://jjg.me/headshots" rel="nofollow noopener noreferrer me" itemprop="sameAs"><i class="fas fa-fw fa-camera" aria-hidden="true"></i><span class="label">Headshots</span></a></li> 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 <!-- 415 <li> 416 <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer me"> 417 <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link 418 </a> 419 </li> 420--> 421 </ul> 422 </div> 423</div> 424 425 426 427 </div> 428 429 430 431 <article class="page h-entry" itemscope itemtype="https://schema.org/CreativeWork"> 432 <meta itemprop="headline" content="About Joseph Guadagno"> 433 434 435 436 437 <div class="page__inner-wrap"> 438 439 <header> 440 <h1 id="page-title" class="page__title p-name" itemprop="headline"> 441 <a href="https://www.josephguadagno.net/about-joseph-guadagno/" itemprop="url">About Joseph Guadagno 442</a> 443 </h1> 444 445 446 447 448 </header> 449 450 451 <section class="page__content e-content" itemprop="text"> 452 453 <p>Joseph Guadagno is a <strong>senior technology executive</strong>, <strong>international public speaker</strong>, and <strong>
453longâtime community leader</strong> with more than 25 years of experience building highâperforming engineering organizations and empowering developers around the world. He blends strategic leadership with handsâon technical depth, helping companies modernize their engineering practices, adopt AIâassisted development, and deliver reliable, scalable software.</p> 454 455<p>As a <strong>Senior Vice President of Technology</strong>, Joseph has led crossâfunctional engineering, QA, SRE, and platform teams, driving clarity, accountability, and innovation across global organizations. He is known for establishing strong engineering cultures, maturing delivery practices, and aligning technology strategy with business outcomes. His leadership includes defining technology roadmaps, guiding architectural transformation, improving developer experience, and mentoring emerging leaders.</p> 456 457<p>Joseph is also a <strong>Microsoft Developer Services MVP</strong> (since 2007) and a <strong>former President and Vice President of the .NET Foundation</strong>, where he helped strengthen the openâsource .NET ecosystem and support thousands of contributors and community leaders. He has been an active force in developer communities for decadesâfounding the Southeast Valley .NET User Group, organizing Desert Code Camp, contributing to openâsource projects, and supporting global volunteer initiatives such as GeekGive and GiveCamp.</p> 458 459<p>A seasoned <strong>international speaker</strong>, Joseph has delivered hundreds of sessions across the United States and abroad on topics including .NET, Azure, cloud architecture, AIâassisted development, engineering leadership, and modern developer productivity. His approachable style, practical insights, and realâworld experience make him a frequent speaker at conferences, user groups, and corporate events.</p> 460 461<p>Joseph continues to invest in the next generation of speakers and community leaders through <strong>MoreSpeakers.com</strong>, a platform he created to connect aspiring presenters with experienced mentors. He also shares technical content, leadership insights, and demos through his blog, livestreams, and openâsource repositories.</p> 462 463<p>When heâs not leading teams or speaking at events, Joseph enjoys spending time with his family, exploring home automation, and contributing to projects that make the developer community stronger.</p> 464 465<h2 id="some-of-my-notable-achievements">Some of my notable achievements</h2> 466 467<ul> 468 <li>Microsoft Developer Services <a href="https://jjg.me/MVPLink" target="_blank">MVP</a> â Since January 2007</li> 469 <li>Previously served on the <a href="https://dotnetfoundation.org/" target="_blank">.NET Foundation</a> Board of Directors 470 <ul> 471 <li>President (July 2023 - July 2024)</li> 472 <li>Vice President (October 2022 â June 2023)</li> 473 </ul> 474 </li> 475 <li>Occasionally streaming â<em>Coding with JoeG</em>â on <a href="https://twitch.tv/jguadagno" target="_blank">Twitch</a></li> 476 <li><a href="https://www.progress.com/" target="_blank">Progress</a> <a href="https://www.progress.com/champion" target="_blank">Champion</a> - Since January 2022</li> 477 <li><a href="https://www.telerik.com/" target="_blank">Telerik</a> <a href="https://www.telerik.com/ninjas" target="_blank">Ninja</a> - (August 2020 - January 2022)</li> 478 <li><a href="https://www.c-sharpcorner.com/" target="_blank">C# Corner</a> <a href="https://www.c-sharpcorner.com/article/how-to-become-a-csharp-corner-mvp/" target="_blank">MVP</a> - Since Sept 2020</li> 479 <li>Friend of Redgate <a href="https://www.red-gate.com/community/friends-of-rg" target="_blank">program</a> (2015 to 2018)</li> 480 <li><a href="https://dotnetfoundation.org/">.NET Foundation</a> <a href="https://github.com/dotnet-foundation/wg-membership" target="_blank">Membership Committee</a> volunteer (2015 to 2018)</li> 481 <li>Former President, Vice President, and Marketing Director of <a href="https://ineta.org/" target="_blank">INETA</a> North America (2007-2015)</li> 482 <li>Founder of the Southeast Valley .NET User Group (<a href="https://sevdnug.org/home.aspx" target="_blank">SEVDNUG</a>) in Chandler, AZ (2007-2013)</li> 483 <li>Previously served on the <a href="https://www.chandleraz.gov/" target="_blank">City of Chandler</a>âs <a href="https://www.chandleraz.gov/default.aspx?pageid=287" target="_blank">Parks</a> and <a href="https://www.chandleraz.gov/default.aspx?pageid=732" target="_blank">Recreation</a> <a href="https://www.chandleraz.gov/default.aspx?pageid=268" target="_blank">board</a> (2010 to 2018)</li> 484 <li><a href="https://www.telerik.com/community/client-profile.aspx?cI
484d=187651" target="_blank">Telerik MVP</a> (2010 to 2012)</li> 485 <li>Microsoft Visual Basic MVP (1996)</li> 486</ul> 487 488<h3 id="open-source-projects-httpsgithubcomjguadagno">Open-Source Projects (<a href="https://github.com/jguadagno" target="_blank">https://github.com/jguadagno</a>)</h3> 489 490<ul> 491 <li><a href="https://github.com/jguadagno/jjgnet-broadcast" target="_blank">JJG.NET Broadcasting</a> - Repository for the automated broadcasting of blog post, conferences, and streams.</li> 492 <li><a href="https://github.com/jguadagno/JosephGuadagno.Extensions" target="_blank">JosephGuadagno.Extensions</a> - A collection of extensions for .NET.</li> 493 <li><a href="https://github.com/jguadagno/JosephGuadagno.AzureHelpers.Cosmos" target="_blank">JosephGuadagno.AzureHelpers.Cosmos</a> - A collection of helpers for Azure Cosmos DB Table storage.</li> 494 <li><a href="https://github.com/jguadagno/JosephGuadagno.AzureHelpers.Storage" target="_blank">JosephGuadagno.AzureHelpers.Storage</a> - A collection of helpers for Azure Storage Queues and Blobs.</li> 495 <li><a href="https://github.com/jguadagno/JosephGuadagno.AzureHelpers" target="_blank">JosephGuadagno.AzureHelpers</a> - A collection of helpers for using Microsoft Azure.</li> 496 <li><a href="https://github.com/jguadagno/bootstrapThemeSwitcher" target="_blank">bootstrapThemeSwitcher</a>: jquery plugin to dynamically load Bootstrap themes.</li> 497 <li><a href="https://github.com/jguadagno/twbs-flickrCarousel" target="_blank">twbs-flickrCarousel</a>: a bootstrap carousel to loop through Flickr pictures.</li> 498</ul> 499 500<p>You can see more of my work on <a href="https://www.github.com/jguadagno" target="_blank">GitHub</a>.</p> 501 502<h3 id="events-i-organize-or-participate-in">Events I organize or participate in</h3> 503 504<ul> 505 <li><a href="https://desertcodecamp.com/" target="_blank">Desert Code Camp</a></li> 506 <li><a href="https://azgivecamp.org/" target="_blank">AZGiveCamp</a></li> 507 <li>Organizer for the 1st Time MVP event at the MVP Summit</li> 508 <li><a href="/mvp-summit-2011-c-mvp-2-mvp-sessions/" target="_blank">MVP 2 MVP Sessions</a> at MVP Summit.</li> 509 <li>Awesome bean pusher at <a href="https://geekgive.org/project/mvpsummit2012.aspx" target="_blank">GeekGive</a> at the MVP Summit.</li> 510</ul> 511 512<h2 id="resume">Resume</h2> 513 514<p><a href="/resume/">Resume of Joseph Guadagno</a></p> 515 516<h2 id="book-reviews">Book Reviews</h2> 517 518<p>If you want me to review your book or product on this site. 519Please contact me at <a href="mailto:[email protected]?Subject=%27Product%20Review%20Request%27" title="Send me an email">[email protected]</a></p> 520 521<h2 id="other">Other</h2> 522 523<p>If you wish to contact me, email <a href="mailto:[email protected]">[email protected]</a>. 524If you are curious about what technologies were used to build this site, 525please visit the <a href="/site-technologies/">Site Technologies</a> page.</p> 526 527 528 </section> 529 530 <footer class="page__meta"> 531 532 533 534 535 536 537 538 539 540 541 542 543 </footer> 544 545 <section class="page__share"> 546 <h4 class="page__share-title">Share on</h4> 547 548 <a href="https://bsky.app/intent/compose?text=About+Joseph+Guadagno%20https%3A%2F%2Fwww.josephguadagno.net%2Fabout-joseph-guadagno%2F" class="btn btn--bluesky" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="Share on Bluesky"> 549 <i class="fab fa-fw fa-bluesky" aria-hidden="true"></i><span> Bluesky</span> 550 </a> 551 552 <a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.josephguadagno.net%2Fabout-joseph-guadagno%2F" class="btn btn--facebook" aria-label="Share on Facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="Share on Facebook"> 553 <i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span> 554 </a> 555 556 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.josephguadagno.net/about-joseph-guadagno/" class="btn btn--linkedin" aria-label="Share on LinkedIn" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="Share on LinkedIn"> 557 <i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span> 558 </a> 559 560 <a href="https://www.reddit.com/submit?url=https%3A%2F%2Fwww.josephguadagno.net%2Fabout-joseph-guadagno%2F&title=About Joseph Guadagno" class="btn btn--primary" title=" Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a> 561 562 <a href="https://x.com/intent/tweet?via=jguadagno&text=About+Joseph+Guadagno%20https%3A%2F%2Fwww.josephguadagno.net%2Fabout-joseph-guadagno%2F" class="btn btn--x" aria-label="Share on X" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="Share on X"> 563 <i class="fab fa-fw fa-x-twitter" aria-hidden="true"></i><span> X</span> 564 </a> 565 566 <h4 class="page__share-title">Like what you read?</h4> 567 <p>Please consider sponsoring this blog.</p> 568 <a href="https://www.buymeacoffee.com/jguadagno"><img src="https://user-images.githubusercontent.com/1376749/120938564-50c59780-c6e1-11eb-814f-22a0399623c5.png" alt="Buy me a Coffee"></a> 569 <a href="https://www.paypal.me/jguadagno" title="Support via PayPal"><img src="https://cdn.jsdelivr.net/gh/twolfson/[email protected]/
569dist/button.svg" alt="Support via PayPal"></a> 570 <iframe src="https://github.com/sponsors/jguadagno/button" title="Sponsor jguadagno" height="32" width="114" style="border: 0; border-radius: 6px; vertical-align: middle;"></iframe> 571</section> 572 573 574 575 576 </div> 577 578 579 </article> 580 581 582 583</div> 584 585 586 </div> 587 588 589 <div class="search-content"> 590 591<div class="search-content__inner-wrap"><form class="search-content__form" onkeydown="return event.key != 'Enter';" role="search"> 592 <label class="sr-only" for="search"> 593 Enter your search term... 594 </label> 595 <input type="search" id="search" class="search-input" tabindex="-1" placeholder="Enter your search term..." /> 596 </form> 597 <div id="results" class="results"></div></div> 598 599 </div> 600 601 602 <div id="footer" class="page__footer"> 603 <footer> 604 <!-- Replaced entire file with my updated version. Dan's Customizations START and END for entire file. 605 Google Analytics introduced new required consent tags in 2023, so we had to update the code to account for them. 606 More info: https://developers.google.com/tag-platform/security/guides/consent?consentmode=basic#gtag.js 607--> 608
609<script> 610 window.dataLayer = window.dataLayer || []; 611 function gtag() { dataLayer.push(arguments); } 612 613 // Consent not granted by default. 614 gtag('consent', 'default', { 615 'ad_user_data': 'denied', 616 'ad_personalization': 'denied', 617 'ad_storage': 'denied', 618 'analytics_storage': 'denied', 619 // Wait 500ms to allow consent function to update consent values before calling Google Analytics. 620 'wait_for_update': 500, 621 }); 622 623 gtag('js', new Date()); 624 gtag('config', 'G-HKYKNTCV88', {'anonymize_ip': true}); 625</script>
vendor: 65 bytes, lines 625-627
625 626 627<script async src="https://www.googletagmanager.com/gtag/js?id=
627G-HKYKNTCV88
vendor: 12 bytes, line 627
627"></script>
628<script> 629 function RunGoogleAnalyticsJavaScript() 630 { 631 window.dataLayer = window.dataLayer || []; 632 function gtag() { dataLayer.push(arguments); } 633 634 // Update consent values from denied to granted. 635 gtag('consent', 'update', { 636 ad_user_data: 'granted', 637 ad_personalization: 'granted', 638 ad_storage: 'granted', 639 analytics_storage: 'granted' 640 }); 641 } 642</script>
642 643 644<!-- Microsoft Clarity script for analytics (https://clarity.microsoft.com) -->
645<script type="text/javascript"> 646 function RunMsClarityJavaScript() 647 { 648 // Code copied from the MS Clarity website. 649 (function (c, l, a, r, i, t, y) 650 { 651 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) }; 652 t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i; 653 y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y); 654 })(window, document, "clarity", "script", "9ykk4t8vq2"); 655 656 // Let MS Clarity know the user consented so it can setup it's cookie tracking. 657 // More info: https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-consent-api-v2 658 window.clarity('consentv2', { 659 ad_storage: "granted", 660 analytics_storage: "granted" 661 }); 662 } 663</script>
663 664 665<!-- Put an advertisement in the site's footer. --> 666<!-- The advertisement shown at the bottom of a blog post. --> 667<div style="text-align: center; margin-top: 1rem"> 668 <span> 669
669<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2734487984973844" 670 crossorigin="anonymous"></script>
670 671 <!-- Blog.DansKingdom.com Responsive Ad 1 --> 672 <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2734487984973844" data-ad-slot="7917470839" 673 data-ad-format="auto" data-full-width-responsive="true"></ins> 674
674<script> 675 function RunGoogleAdsensePostAdvertisementJavaScript() 676 { 677 (adsbygoogle = window.adsbygoogle || []).push({}); 678 } 679 </script>
679 680 </span> 681</div> 682 683<!-- Put an advertisement in the site's footer. --> 684<div style="text-align: center; margin-bottom: 1rem;"> 685 <span> 686
686<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2734487984973844" 687 crossorigin="anonymous"></script>
687 688 <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-2734487984973844" data-ad-slot="1591735639" 689 data-ad-format="auto" data-full-width-responsive="true"></ins> 690
690<script> 691 function RunGoogleAdsenseFooterAdvertisementJavaScript() 692 { 693 (adsbygoogle = window.adsbygoogle || []).push({}); 694 } 695 </script>
695 696 </span> 697</div> 698 699<!-- Original code taken from https://jekyllcodex.org/without-plugin/cookie-consent/ then modified. --> 700<style> 701 #cookie-notice { 702 padding: 0.5rem 1rem; 703 display: none; 704 text-align: center; 705 position: fixed; 706 bottom: 0; 707 width: 100%; 708 background: #222; 709 color: rgba(255, 255, 255, 0.8); 710 } 711 712 #cookie-notice a { 713 display: inline-block; 714 cursor: pointer; 715 margin-left: 0.5rem; 716 } 717 718 #cookie-notice-accept { 719 background: #07a21c; 720 color: white; 721 } 722 723 #cookie-notice-more-info { 724 background: #007bff; 725 color: white; 726 } 727 728 #cookie-notice-reject { 729 background: #dc3545; 730 color: white; 731 } 732 733 #cookie-notice-buttons { 734 display: inline-block; 735 } 736</style> 737 738<div id="cookie-notice"> 739 <span>This website uses cookies to ensure you get the best experience.</span> 740 <span id="cookie-notice-buttons"> 741 <a id="cookie-notice-more-info" class="btn btn-primary btn-sm" href="/privacy">More info</a> 742 <a id="cookie-notice-accept" class="btn btn-primary btn-sm">OK</a> 743 </span> 744</div> 745
746<script> 747 function createCookie(name, value, days) 748 { 749 var expires = ""; 750 if (days) 751 { 752 var date = new Date(); 753 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 754 expires = "; expires=" + date.toUTCString(); 755 } 756 document.cookie = name + "=" + value + expires + "; path=/"; 757 } 758 759 function readCookie(name) 760 { 761 var nameEQ = name + "="; 762 var ca = document.cookie.split(';'); 763 for (var i = 0; i < ca.length; i++) 764 { 765 var c = ca[i]; 766 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 767 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 768 } 769 return null; 770 } 771 772 function eraseCookie(name) 773 { 774 createCookie(name, "", -1); 775 } 776 777 function RunThirdPartyCodeThatUsesCookies() 778 { 779 // Call the functions that should not be ran until the user has accepted cookies. 780 781// If the user is not viewing a post, the Post Ad function will not be defined, so only call it if it is defined. 782if (typeof(RunGoogleAdsensePostAdvertisementJavaScript) === typeof(Function)) 783{ 784 RunGoogleAdsensePostAdvertisementJavaScript() 785} 786RunGoogleAdsenseFooterAdvertisementJavaScript() 787 788RunMsClarityJavaScript() 789 790// Google Analytics are not included when running locally/debugging, so to avoid an error only call this function if it is defined. 791if (typeof (RunGoogleAdsensePostAdvertisementJavaScript) === typeof(Function)) 792{ 793 RunGoogleAnalyticsJavaScript(); 794} 795 796 } 797 798 // Rather than requiring consent, we just display a notice and assume consent if the user continues to use the website. 799 // Google displays its own consent automatically for countries that require it: https://umbracocommunity.social/@steve_gibe/111925508834045878 800 RunThirdPartyCodeThatUsesCookies() 801 802 if (readCookie('cookie-notice-response') != 'accepted') 803 { 804 // Display the cookie notice. 805 document.getElementById('cookie-notice').style.display = 'block'; 806 } 807 808 document.getElementById('cookie-notice-accept').addEventListener("click", function () 809 { 810 // Persist cookie acceptance for 180 days and hide the cookie notice. 811 createCookie('cookie-notice-response', 'accepted', 180); 812 document.getElementById('cookie-notice').style.display = 'none'; 813 814 // Reload the page so the analytics scripts, etc. are ran on this page, not just future pages. 815 // I considered just calling the RunThirdPartyCodeThatUsesCookies() function here, but was 816 // not sure how that would affect some analytics metrics, like the time to load the page, etc. 817 location.reload(); 818 }); 819</script>
819 820 821 822 823 824<div class="page__footer-follow"> 825 <ul class="social-icons"> 826 827 828 829 830 831 <li><a href="https://bsky.app/profile/jguadagno.com" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-bluesky" aria-hidden="true"></i> Bluesky</a></li> 832 833 834 835 <li><a href="https://github.com/jguadagno" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li> 836 837 838 839 <li><a href="https://www.facebook.com/JosephGuadagnoNet" rel="nofollow noopener noreferrer"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i> Facebook</a></li> 840 841 842 843 844 845 <li><a href="https://feeds.feedburner.com/JosephGuadagno"><i class="fas fa-fw fa-square-rss" aria-hidden="true"></i> Feed</a></li> 846 847 </ul> 848</div> 849 850 851<div class="page__footer-copyright">© 2026 <a href="https://www.josephguadagno.net">JosephGuadagno.net</a>. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/jekyll-themes/minimal-mistakes/" rel="nofollow">Minimal Mistakes</a>.</div> 852 853 </footer> 854 </div> 855 856 857 858
858<script src="/assets/js/main.min.js"></script>
858 859 860 861 862 863
864<script src="/assets/js/lunr/lunr.min.js"></script>
vendor: 1 bytes, line 864
864
865<script src="/assets/js/lunr/lunr-store.js"></script>
vendor: 1 bytes, line 865
865
866<script src="/assets/js/lunr/lunr-en.js"></script>
866 867 868 869 870 871 872 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 872-873
872 873<script async src="https://www.googletagmanager.com/gtag/js?id=
873G-HKYKNTCV88
vendor: 12 bytes, line 873
873"></script>
874<script> 875
vendor: 134 bytes, lines 875-879
875window.dataLayer = window.dataLayer || []; 876 function gtag(){dataLayer.push(arguments);} 877 gtag('js', new Date()); 878 879 gtag('config', '
879G-HKYKNTCV88
vendor: 30 bytes, line 879
879', { 'anonymize_ip': false});
880</script>
880 881 882 883 884 885 886 887 888 889 890 </body> 891</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.