<!--
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
-->

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<!DOCTYPE html>
<html lang="en">
<head>

    <link rel="canonical" href="https://ignite.apache.org/screencasts.html"/>
    <!--#include virtual="/includes/scriptshead.html" -->
<meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http-equiv="Expires" content="0"/>
    <title>Videos and Recordings - Apache Ignite</title>
    <!--#include virtual="/includes/styles.html" -->
</head>
<body>
<!--#include virtual="/includes/header.html" -->
<article>
    <header>
        <div class="container">

            <h1>Apache Ignite <strong>Videos and Recordings</strong></h1>
        </div>
    </header>
    <div class="container" id="screencasts">

        <p>
            Apache Ignite is a feature-rich in-memory computing platform that can power many use cases.
            Explore our collection of videos featuring presentations of Ignite community members as well as short
            screencasts.
        </p>

        <h2>Apache Ignite Essentials</h2>
        <div class="row">
            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#imc-modal"
                   data-title="In-Memory Computing Essentials"
                   data-video-url="https://www.youtube.com/embed/UeQKuAQaMNU" data-toggle="modal">
                    <p>In-Memory Computing <br/>Essentials </p>
                    <span>Webinar Recording</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#compute-modal" data-toggle="modal"
                   data-title="Distributed Computing With Apache Ignite&reg;"
                   data-video-url="https://www.youtube.com/embed/hrnrsIkCnI0">

                    <p>DISTRIBUTED COMPUTING <br/> WITH APACHE IGNITE</p>
                    <span>Webinar Recording</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#tx-modal" data-toggle="modal"
                   data-title="Architects' Guide for Apache Ignite ACID Transactions and Consistency"
                   data-video-url="https://www.youtube.com/embed/TCsl-W0tsEE">

                    <p>CONSISTENCY AND TRANSACTIONS <br/> OF APACHE IGNITE</p>
                    <span>Webinar Recording</span>
                </a>

            </div>

        </div>

        <div style="height: 70px"></div>

        <div class="row">
            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#sql-modal"
                   data-title="Getting Started With Ignite SQL"
                   data-video-url="https://www.youtube.com/embed/eYV-tNLzIts" data-toggle="modal">
                    <p>Apache Ignite SQL <br/>Essentials </p>
                    <span>Webinar Recording</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#ignite-in-kubernetes-modal" data-toggle="modal"
                   data-title="How-to for Apache Ignite Deployments in Kubernetes"
                   data-video-url="https://www.youtube.com/embed/38YgdAOs038">

                    <p>Deploying Apache Ignite <br/> in Kubernetes</p>
                    <span>Webinar Recording</span>
                </a>

            </div>

            <div class="col-md-4">

                <a class="video" data-target="#videoModal" href="#ignite-ml-modal" data-toggle="modal"
                   data-title="Architects' Guide for Apache Ignite Machine Learning"
                   data-video-url="https://www.youtube.com/embed/eGlmZoBSS8g">

                    <p>Machine Learning <br/> With Apache Ignite</p>
                    <span>Webinar Recording</span>
                </a>

            </div>

        </div>

        <div aria-hidden="true" aria-labelledby="videoModal" class="modal fade" id="videoModal" role="dialog"
             tabindex="-1">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button aria-label="Close" class="close" data-dismiss="modal" type="button"><span
                                aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title"></h4>
                    </div>

                    <div class="modal-body">
                        <iframe id="data-grid" src="" frameborder="0" allowfullscreen=""></iframe>
                    </div>

                </div>
            </div>
        </div>

        <div style="height: 30px"></div>
    </div>

    <div class="container">
        <p class="text-center">
        Explore the <a href="https://www.youtube.com/channel/UChYD3lCEnzHlWioUb2sNgSg"
                       target="_blank" rel="noopener">full collection of Apache Ignite videos</a> and recordings on YouTube.
        </p>
    </div>
</article>
<!--#include virtual="/includes/footer.html" -->

<!--#include virtual="/includes/scripts.html" -->

<script type="text/javascript">
    jQuery('#videoModal').on('show.bs.modal', function (event) {
        console.log(jQuery(event.relatedTarget));

        const title = jQuery(event.relatedTarget).data('title');
        jQuery(this).find('h4').text(title);

        const video = jQuery(event.relatedTarget).data('video-url');
        jQuery(this).find('iframe').attr('src', video);
    });

</script>
</body>
</html>
