<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Antonio Cangiano | Engineering Manager and AI Educator at IBM. Co-founder and Lead of IBM Skills Network, published author, and online educator with over 1.1 million course enrollments.">
    <meta name="google-site-verification" content="XXTXxzBWB9HdfoJm2KuVsSVZKKPUCEq3lUS5IhaAa0o">
    <title>Antonio Cangiano | Engineering Manager & AI Educator at IBM</title>
    <link rel="icon" href="favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon" href="apple-touch-icon.png">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,500;0,9..144,700;0,9..144,800;1,9..144,400&family=Karla:wght@400;500;600&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="css/main.css">

    <link rel="canonical" href="https://antoniocangiano.com/">

    <meta property="og:type" content="profile">
    <meta property="og:site_name" content="Antonio Cangiano">
    <meta property="og:title" content="Antonio Cangiano | Engineering Manager &amp; AI Educator at IBM">
    <meta property="og:description" content="Engineering Manager and AI Educator at IBM. Co-founder and Lead of IBM Skills Network, published author, and online educator with over 1.1 million course enrollments.">
    <meta property="og:url" content="https://antoniocangiano.com/">
    <meta property="og:image" content="https://antoniocangiano.com/images/og-card.jpg">
    <meta property="og:image:type" content="image/jpeg">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="og:image:alt" content="Antonio Cangiano, Engineering Manager and AI Educator at IBM">
    <meta property="og:locale" content="en_US">
    <meta property="profile:first_name" content="Antonio">
    <meta property="profile:last_name" content="Cangiano">

    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="@acangiano">
    <meta name="twitter:creator" content="@acangiano">
    <meta name="twitter:title" content="Antonio Cangiano | Engineering Manager &amp; AI Educator at IBM">
    <meta name="twitter:description" content="Engineering Manager and AI Educator at IBM. Co-founder and Lead of IBM Skills Network, published author, and online educator with over 1.1 million course enrollments.">
    <meta name="twitter:image" content="https://antoniocangiano.com/images/og-card.jpg">
    <meta name="twitter:image:alt" content="Antonio Cangiano, Engineering Manager and AI Educator at IBM">

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Person",
      "name": "Antonio Cangiano",
      "url": "https://antoniocangiano.com/",
      "image": "https://antoniocangiano.com/images/og-card.jpg",
      "jobTitle": "Engineering Manager & AI Educator",
      "worksFor": { "@type": "Organization", "name": "IBM" },
      "description": "Engineering Manager and AI Educator at IBM. Co-founder and Lead of IBM Skills Network, published author, and online educator with over 1.1 million course enrollments.",
      "sameAs": [
        "https://x.com/acangiano",
        "https://www.linkedin.com/in/antoniocangiano",
        "https://programmingzen.com/",
        "https://www.instagram.com/tonycangianophotography/",
        "https://www.tiktok.com/@italywithantonio"
      ]
    }
    </script>
  </head>
  <body>

    <header class="site-header">
      <div class="container header-inner">
        <a href="/" class="logo">AC</a>
        <nav class="social-nav" aria-label="Social links">
          <a href="https://x.com/acangiano" aria-label="X (Twitter)">
            <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
          </a>
          <a href="https://linkedin.com/in/antoniocangiano" aria-label="LinkedIn">
            <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
          </a>
          <a href="https://www.instagram.com/tonycangianophotography/" aria-label="Instagram">
            <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
          </a>
          <a href="https://www.tiktok.com/@italywithantonio" aria-label="TikTok">
            <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor"><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"/></svg>
          </a>
        </nav>
      </div>
    </header>

    <section class="hero">
      <div class="container hero-inner">
        <div class="hero-text">
          <p class="hero-label">Engineering Manager & AI Educator at IBM</p>
          <p class="hero-sublabel">Co-founder & Lead of IBM Skills Network</p>
          <h1>Antonio<br>Cangiano</h1>
          <p class="hero-tagline">Making the complex simpler <br>for twenty-five years.</p>
        </div>
        <div class="hero-photo">
          <img src="images/antonio-cangiano.jpg" alt="Antonio Cangiano" width="280" height="280">
        </div>
      </div>
    </section>

    <div class="metrics-strip">
      <div class="container metrics-inner">
        <div class="metric reveal">
          <span class="metric-number">20+</span>
          <span class="metric-label">Years at IBM</span>
        </div>
        <div class="metric reveal">
          <span class="metric-number">1.1M+</span>
          <span class="metric-label">My Course Enrollments</span>
        </div>
        <div class="metric reveal">
          <span class="metric-number">4.7</span>
          <span class="metric-label">My Course Ratings</span>
        </div>
      </div>
    </div>

    <main>
      <section class="section" id="career">
        <div class="container">
          <h2 class="reveal">Career & Impact</h2>
          <div class="prose reveal">
            <p>I've been at IBM for over 20 years. I co-founded and currently lead <strong>IBM Skills Network</strong>, the team and platform behind IBM's courses and labs across Coursera, edX, and CognitiveClass.ai. Our platform covers the LMS, the delivery pipeline, automation, support, and Kubernetes-based lab environments where learners run real code in the cloud.</p>
            <p>I manage developers, data scientists, designers, and marketers. Developing engineers is the part I'm proudest of. I've hired hundreds of technical interns who went on to perform well beyond their years of experience.</p>
            <p>I co-founded <strong>Cognitive Class</strong> and helped grow it as its Marketing Lead from zero to more than 3.5 million learners worldwide, organically, with no marketing budget.</p>
          </div>
          <h3 class="reveal">Awards & Recognition</h3>
          <ul class="awards-list reveal">
            <li>UBC Supervisor of the Year, 2024</li>
            <li>University of Calgary Supervisor of Merit, 2025</li>
            <li>Brandon Hall Silver Award (team tools)</li>
            <li>IDC CIO Award Canada (team tools)</li>
            <li>IBM Outstanding Technical Achievement Award</li>
          </ul>
        </div>
      </section>

      <section class="section" id="teaching">
        <div class="container">
          <h2 class="reveal">Teaching</h2>
          <div class="prose reveal">
            <p>I teach under my own name on Coursera, edX, and Cognitive Class. My course <strong>Generative AI: Prompt Engineering Basics</strong> on Coursera has reached over 669,000 learners, with a 4.7 rating and 97% recommending it.</p>
            <p>Across all platforms, my courses on prompt engineering and conversational AI have passed 1.1 million enrollments.</p>
          </div>
        </div>
      </section>

      <section class="section" id="engineering">
        <div class="container">
          <h2 class="reveal">Engineering</h2>
          <div class="prose reveal">
            <p>I'm a hands-on engineering leader. I was a software developer and technical advocate at the IBM Toronto Software Lab for many years, and I still ship code.</p>
            <p>I built Linguetto end to end. I write the Python data pipelines behind Italy with Antonio, turning ISTAT demographic data into choropleth maps, alongside image processing and EPUB generation. I run Any New Books, including an agentic curation workflow that handles the first pass on new releases.</p>
            <p>Earlier, I wrote the <strong>original DB2 adapter for Ruby on Rails</strong>, which IBM has shipped and supported ever since, and received an Outstanding Technical Achievement Award for it. I created the <strong>Ruby Benchmark Suite</strong> and ran the <strong>Great Ruby Shootout</strong>, VM performance comparisons that language implementers used as a reference. I was an early adopter of Rails, Django, and Elixir, and brought each of them into IBM.</p>
          </div>
        </div>
      </section>

      <section class="section" id="books">
        <div class="container">
          <h2 class="reveal">Books</h2>
          <div class="books-grid reveal">
            <div class="book-card">
              <a href="https://pragprog.com/titles/actb2/" class="book-cover-link">
                <img src="images/technical-blogging-book.jpg" alt="Technical Blogging, 2nd Edition" class="book-cover">
              </a>
              <div class="book-info">
                <h3>Technical Blogging, 2nd Edition</h3>
                <p>The Pragmatic Bookshelf. First edition 2012, second edition 2019. Also available as an <a href="https://amzn.to/4arzPKD">audiobook</a>.</p>
              </div>
            </div>
            <div class="book-card">
              <a href="https://amzn.to/30w52bm" class="book-cover-link">
                <img src="images/ruby-on-rails-book.jpg" alt="Ruby on Rails for Microsoft Developers" class="book-cover">
              </a>
              <div class="book-info">
                <h3>Ruby on Rails for Microsoft Developers</h3>
                <p>Wrox, 2009.</p>
              </div>
            </div>
          </div>
          <p class="aside-note reveal">I also wrote a regular column for PragPub magazine for many years.</p>
        </div>
      </section>

      <section class="section" id="projects">
        <div class="container">
          <h2 class="reveal">Projects</h2>
          <div class="projects-grid">
            <a href="https://programmingzen.com" class="project-card reveal">
              <img src="images/programmingzen.jpg" alt="Programming Zen" loading="lazy">
              <div class="project-card-body">
                <h3>Programming Zen</h3>
                <p>My long-running programming blog.</p>
              </div>
            </a>
            <a href="https://linguetto.com" class="project-card reveal">
              <img src="images/linguetto.jpg" alt="Linguetto" loading="lazy">
              <div class="project-card-body">
                <h3>Linguetto</h3>
                <p>Adaptive Italian language learning app.</p>
              </div>
            </a>
            <a href="https://italywithantonio.com" class="project-card reveal">
              <img src="images/italy-with-antonio.png" alt="Italy with Antonio" loading="lazy">
              <div class="project-card-body">
                <h3>Italy with Antonio</h3>
                <p>Substack about Italy and Italian culture.</p>
              </div>
            </a>
            <a href="https://cognitiveclass.ai" class="project-card reveal">
              <img src="images/cognitiveclass.png" alt="Cognitive Class" loading="lazy">
              <div class="project-card-body">
                <h3>Cognitive Class</h3>
                <p>Learning platform I co-founded. 3.5M+ learners.</p>
              </div>
            </a>
            <a href="https://anynewbooks.com" class="project-card reveal">
              <img src="images/anynewbooks.jpg" alt="Any New Books" loading="lazy">
              <div class="project-card-body">
                <h3>Any New Books</h3>
                <p>New book releases notification service.</p>
              </div>
            </a>
            <a href="https://tonycangiano.com" class="project-card reveal">
              <img src="images/tonycangiano.jpg" alt="Photography Portfolio" loading="lazy">
              <div class="project-card-body">
                <h3>Photography Portfolio</h3>
                <p>My photography portfolio.</p>
              </div>
            </a>
          </div>
        </div>
      </section>

      <section class="section" id="about">
        <div class="container">
          <h2 class="reveal">Beyond Work</h2>
          <div class="prose reveal">
            <p>I'm Italian, naturalized Canadian. Outside work, I write a <a href="https://italywithantonio.com"><strong>Substack about Italy and the Italian language</strong></a> that has reached Bestseller status. My hobbies include photography, fishing, reading, and exploring the outdoors.</p>
          </div>
        </div>
      </section>
    </main>

    <div class="contact-strip">
      <div class="container">
        <p>Want to get in touch? Reach me at <a href="/cdn-cgi/l/email-protection#244d4a424b64454a504b4a4d4b47454a434d454a4b0a474b49"><span class="__cf_email__" data-cfemail="99f0f7fff6d9f8f7edf6f7f0f6faf8f7fef0f8f7f6b7faf6f4">[email&#160;protected]</span></a>.</p>
      </div>
    </div>

    <footer class="site-footer">
      <div class="container footer-inner">
        <p>&copy; 2026 Antonio Cangiano</p>
        <a href="/cdn-cgi/l/email-protection#b9d0d7dfd6f9d8d7cdd6d7d0d6dad8d7ded0d8d7d697dad6d4"><span class="__cf_email__" data-cfemail="0f666169604f6e617b606166606c6e6168666e6160216c6062">[email&#160;protected]</span></a>
      </div>
    </footer>

    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-8687L43ZWD"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-8687L43ZWD');
    </script>

    <noscript><style>.reveal{opacity:1;transform:none}</style></noscript>
    <script>
      document.addEventListener('DOMContentLoaded', () => {
        const observer = new IntersectionObserver(
          (entries) => {
            entries.forEach((entry) => {
              if (entry.isIntersecting) {
                entry.target.classList.add('in-view');
                observer.unobserve(entry.target);
              }
            });
          },
          { threshold: 0.12, rootMargin: '0px 0px -32px 0px' }
        );
        document.querySelectorAll('.reveal').forEach((el) => observer.observe(el));
      });
    </script>

  </body>
</html>
