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

<!--
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>Screencasts - Apache Ignite</title>
    <!--#include virtual="/includes/styles.html" -->
</head>
<body>
<!--#include virtual="/includes/header.html" -->
<article>
    <header>
        <div class="container">

            <h1>Apache Ignite <strong>Video Tutorials</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>

</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>
