section.poweredvideos.container 
    .poweredvideos__grid
        +powvideo(
            "https://www.youtube.com/watch?v=3FFexcYIpmA",
            "/img/poweredby/videos/001.png",
            "IBM",
            "Leveraging In-Memory Compute Grids With Core Systems Of&nbsp;Record"
        )
            p Apache Ignite is used for IBM Z Mainframes workload acceleration.
            p 
                a(href="https://www.imcsummit.org/2019/us/session/leveraging-memory-compute-grids-core-systems-record", target="_blank") View presentation and learn more about speaker 

        +powvideo(
            "https://www.youtube.com/watch?v=Mhtt2QL_qCQ",
            "/img/poweredby/videos/002.png",
            "Raiffeisen Bank",
            "How To&nbsp;Use Apache Ignite To&nbsp;Rescue The Backend Of&nbsp;A&nbsp;Bank",
            "comvideo__txt--black"
        )
            p As users transition to digital channels, the load on the bank's systems has increased.
            p.comvideo__gray For example, since the beginning of 2020, the number of requests to the ABS subsystems from Raiffeisen-Online has grown by a third. 
            p Therefore, load reduction and system scaling  are constant and top priorities.

        +powvideo(
            "https://www.youtube.com/watch?v=z28rthKIrDk",
            "/img/poweredby/videos/003.png",
            "Teradata",
            "S9D Using Apache Ignite As&nbsp;A&nbsp;Part Of&nbsp;Real Time Campaigning"
        )
            p Apache Ignite usage for handling real time marketing campaigns.
            p
                a(href="https://www.imcsummit.org/2019/eu/session/using-apache-ignite-part-real-time-campaigning", target="_blank") View presentation and learn more about speakers

        +powvideo(
            "https://techblog.yahoo.co.jp/oss/yahoo_shopping_purchases_ignite/",
            "/img/poweredby/videos/004.png",
            "Yahoo! Japan",
            "&laquo;Recent Purchases&raquo; With Apache Ignite",
            "", false
        )
            p <a href="https://techblog.yahoo.co.jp/oss/yahoo_shopping_purchases_ignite/" target="_blank">This blog post</a> explains why Yahoo! Japan chose Apache Ignite for a highly scalable caching system that can process tens of thousands of requests per second.
            p.comvideo__gray SQL queries were performed via thin clients since they do not require a standard topology join, and therefore are easier to handle through container services. After a successful POC, Ignite fully met their requirements and was quickly rolled into production.

        +powvideo(
            "https://www.youtube.com/watch?v=ZZI7MVE1ZBo&t=2s",
            "/img/poweredby/videos/005.png",
            "American Airlines",
            "In-Memory Computing Patterns For High Volume, Real Time Applications",
        )
            p American Airlines’ IT&nbsp;transformations are due to&nbsp;the following advantages of&nbsp;Apache Ignite:
            ul.dashlist.pt-1
                li Improvement in bandwidth and response times
                li Improved availability
                li Horizontal and vertically scalability
                li Efficiency
                li ANSI-99 SQL and ACID transaction guarantees and ctr.
            p
                a(href="https://www.imcsummit.org/2018/us/session/memory-computing-patterns-high-volume-real-time-applications", target="_blank") View presentation and learn more about speakers

        +powvideo(
            "https://www.youtube.com/watch?v=CPmwnjDJ1Sk",
            "/img/poweredby/videos/006.png",
            "ING Bank",
            "Embracing The Service Consumption Shift In&nbsp;Banking"
        )
            p ING core banking system transformation with Apache Ignite.
            p
                a(href="https://www.imcsummit.org/2018/us/session/embracing-service-consumption-shift-banking", target="_blank") View presentation and learn more about speakers


        +powvideo(
            "https://www.youtube.com/watch?v=g1FcrOPXWyg",
            "/img/poweredby/videos/007.png",
            "Banco do Brasil",
            "Using Ignite And JBoss Drools To&nbsp;Implement A&nbsp;Complex Event Processing Solution",
            "comvideo__txt--black comvideo__txt--medium"
        )
            p Вanco do&nbsp;Brasil is&nbsp;developing the omnichannel Horus platform in-house. They implemented a&nbsp;complex event processing ecosystem that is&nbsp;based on&nbsp;Apache Ignite, JBoss Drools, and other components. The team also built microservices and interface applications, both event-driven.

        +powvideo(
            "https://www.youtube.com/watch?v=EdFOKJIjRSg",
            "/img/poweredby/videos/008.png",
            "24 Hour Fitness",
            "Fitness + In Memory Computing = Getting Ahead Of The Game"
        )
            p Apache Ignite as a digital integration hub and database for a variety of 24 Hour Fitness services.
            p
                a(href="https://www.imcsummit.org/2019/us/session/fitness-memory-computing-getting-ahead-game", target="_blank") View presentation and learn more about speakers

        +powvideo(
            "https://www.youtube.com/watch?v=jF9T2cJB6t0",
            "/img/poweredby/videos/009.png",
            "JPMorgan Chase",
            "High Performance Exposure Management With Apache Ignite",
            "comvideo__txt--black"
        )
            p Exposure management poses unique technical challenges for Asset Management. Requests involve heavy computation on&nbsp;top of&nbsp;millions of&nbsp;data points with target response times of&nbsp;around a&nbsp;1/3&nbsp;second. 
            p This challenge was solved using an&nbsp;Apache Ignite-based platform.

        +powvideo(
            "https://www.youtube.com/watch?v=B8A8yR_e6VM",
            "/img/poweredby/videos/010.png",
            "JPMorgan Chase",
            "Real Time Exposure Management Using Ignite",
            "comvideo__txt--black"
        )
            p The increasing need in&nbsp;the finance world to&nbsp;apply transformations to&nbsp;large datasets in&nbsp;real time led the Asset Management&rsquo;s portfolio management system team to&nbsp;select Ignite to&nbsp;achieve persistence, caching and integrated compute.

    .poweredvideos__linkwrap.pt-5
        a.poweredvideos__loadmore(href="#", data-hideopen="morevideo", data-invis="1") Load more stories

    .poweredvideos__morewrap(data-hidebox="morevideo")
        .poweredvideos__more
            +powvideo(
                "https://www.youtube.com/watch?v=-t-Syy9blXQ",
                "/img/poweredby/videos/011.png",
                "BNP Paribas",
                "Apache Ignite As&nbsp;A&nbsp;Hybrid Transactional-Analytical Processing Solution At&nbsp;A&nbsp;Large Investment Bank",
                "comvideo__txt--black comvideo__txt--medium"
            )
                p A&nbsp;hybrid transactional-analytical processing (HTAP) solution in&nbsp;BNP Paribas is&nbsp;powered by&nbsp;Apache Ignite, and enables the bank to&nbsp;make key business decisions in&nbsp;real time.

            +powvideo(
                "https://www.youtube.com/watch?v=NUxdoL-K9Ys",
                "/img/poweredby/videos/012.png",
                "nference.ai",
                "How nference.ai Leverages Ignite For Distributed Analytics In&nbsp;The Bioinformatics Domain",
                "comvideo__txt--black  comvideo__txt--medium"
            )
                p nference.ai uses Ignite for distributed analytics in&nbsp;the bioinformatics domain.
                p Ignite, as a horizontally scalable framework, allows for the defining of different statistical analyses, and the execution of it on TBs of numerical data in real time, without movement of data.

            +powvideo(
                "https://www.youtube.com/watch?v=KLnvIiwAl2o",
                "/img/poweredby/videos/013.png",
                "Trimble",
                "Building A&nbsp;Live Geospatial Analytics Platform For Construction Productivity With Apache Ignite",
                "comvideo__txt--black  comvideo__txt--medium"
            )
                p Trimble built a&nbsp;live geospatial analytics platform for construction productivity with Apache Ignite.
                p.comvideo__gray Apache Ignite forms a key infrastructural component of the TRex platform. It supports the real time ingestion of data from the field, along with OLTP-style analytics and queries against that data, such as thematic tiling, volumes & cut/fill calculations, spatial profiling, etc.

            +powvideo(
                "https://www.youtube.com/watch?v=_mnZQ3JDcn8",
                "/img/poweredby/videos/014.png",
                "Sentienz",
                "Ignite Success Story: How Ignite Fuels The High Throughput Messaging In&nbsp;Sentienz Akiro",
                "comvideo__txt--black  comvideo__txt--medium"
            )
                p Sentienz uses Apache Ignite to&nbsp;handle more than a million requests per second from 10&nbsp;Million devices with a&nbsp;single cluster IoT platform.

            +powvideo(
                "https://www.imcsummit.org/2017/eu/sessions/using-memory-grid-compute-achieve-scalability-and-high-performance-legacy-travel",
                "/img/poweredby/videos/015.png",
                "JacTravel",
                "Using In-Memory Grid Compute To&nbsp;Achieve Scalability And High Performance With Legacy Travel Applications",
                "", false
            )
                p <a href="https://www.imcsummit.org/2017/eu/sessions/using-memory-grid-compute-achieve-scalability-and-high-performance-legacy-travel">This presentation</a> looks at&nbsp;the technical challenges presented to&nbsp;JacTravel Group following the acquisition of&nbsp;rival hotel accommodation provider TotalStay Group in&nbsp;2016.
                p.comvideo__gray Working with specialist technology consultancy, CG Consultancy, a strategic 18-month project was formed with a roadmap to consolidate booking platforms, ring-fence legacy functionality and to deliver enhanced search capability - underpinned <strong>with in-memory data grid</strong> capabilities of Apache Ignite.

            +powvideo(
                "https://www.youtube.com/watch?v=0iJ0a9Cy_rA",
                "/img/poweredby/videos/016.png",
                "Sberbank",
                "High Availability And Disaster Recovery For IMDG"
            )
                p Digital transformation of Sberbank banking services with Apache Ignite.
                p
                    a(href="https://www.imcsummit.org/2017/us/sessions/high-availability-and-disaster-recovery-imdg", target="_blank") View presentation and learn more about speakers

            +powvideo(
                "https://www.youtube.com/watch?v=MMI0RIiLadM",
                "/img/poweredby/videos/017.png",
                "Wellington Management",
                "Implementation Of&nbsp;Investment Book Of&nbsp;Record (IBOR) Using Apache Ignite"
            )
                p Implementation Of&nbsp;Investment Book Of&nbsp;Record (IBOR) Using Apache Ignite.
                p
                    a(href="https://www.imcsummit.org/2017/us/sessions/implementation-investment-book-record-ibor-using-apache-ignitegridgain", target="_blank") View presentation and learn more about speakers

            +powvideo(
                "https://www.youtube.com/watch?v=PFHb-UuhGkk",
                "/img/poweredby/videos/018.png",
                "E-Therapeutics",
                "Data-Driven Drug Discovery",
                "comvideo__txt--black"
            )
                p Apache Ignite as a high-performance computing system for drug discovery.

            +powvideo(
                "https://www.youtube.com/watch?v=GoXBevB9iKA",
                "/img/poweredby/videos/019.png",
                "Hypi",
                "Building A&nbsp;Graph Centric Platform On&nbsp;Ignite"
            )
                p Apache Ignite as&nbsp;a&nbsp;graph centric platform.
                p
                    a(href="https://www.imcsummit.org/2019/eu/session/building-graph-centric-platform-ignite", target="_blank") View presentation and learn more about speakers

            +powvideo(
                "https://www.youtube.com/watch?v=v5ecWoC1TC4",
                "/img/poweredby/videos/020.png",
                "TrendMiner",
                "Interactive Historical Data Analysis",
                "comvideo__txt--black"
            )
                p Visualization and analysis of&nbsp;massive amounts of&nbsp;historical data in&nbsp;real time with Apache Ignite compute grid capabilities.
                p
                    a(href="https://www.imcsummit.org/2019/eu/session/trendminer-interactive-historical-data-analysis", target="_blank") View presentation and learn more about speakers

            +powvideo(
                "https://www.youtube.com/watch?v=78UE11GrWzk",
                "/img/poweredby/videos/021.png",
                "Agilent Technologies Inc.",
                "Leveraging In-Memory Data Grid For Faster Time To&nbsp;Market"
            )
                p Leveraging in-memory data grid for faster time-to-market and data flexibility problems of&nbsp;digital channels.
                p
                    a(href="https://www.imcsummit.org/2018/us/session/leveraging-memory-data-grid-faster-time-market-and-data-flexibility-problems-digital", target="_blank") View presentation and learn more about speakers

            +powvideo(
                "https://www.youtube.com/watch?v=1D8hyLWMtfM",
                "/img/poweredby/videos/022.png",
                "The Glue",
                "How To&nbsp;Build An&nbsp;Event Driven, Dynamically Reconfigurable Microservices Platform",
                "comvideo__txt--black comvideo__txt--medium"
            )
                p How to&nbsp;build an&nbsp;event driven, dynamically reconfigurable micro services platform with Apache Ignite.

            +powvideo(
                "https://www.youtube.com/watch?v=RxWLt3x_yBk",
                "/img/poweredby/videos/023.png",
                "FSB Tech",
                "Scaling Sports Betting From FSB Tech",
                "comvideo__txt--black"
            )
                p Building a&nbsp;real time sports betting platform with Apache Ignite.

            +powvideo(
                "https://www.youtube.com/watch?v=wkCW8YC8eKU",
                "/img/poweredby/videos/024.png",
                "Dutch Railways",
                "Detecting Potentially Hazardous Situations In Dutch Railway Planning Using Apache Ignite",
                "comvideo__txt--black  comvideo__txt--medium"  
            )
                p Detecting potentially hazardous situations in Dutch railway planning to meet the challenges of one of the busiest rail infrastructures in Europe. JDriven built a space-based architecture with Apache Ignite.

            +powvideo(
                "https://www.youtube.com/watch?v=qYd9GGRC4L0",
                "/img/poweredby/videos/025.png",
                "HomeAway",
                "An&nbsp;Ignite Compute Grid <br>In&nbsp;The Cloud"
            )
                p HomeAway is&nbsp;one of&nbsp;the leading vacation rental websites.
                p With Ignite, HomeAway employed a&nbsp;large, in-memory compute grid to&nbsp;move a&nbsp;myriad of&nbsp;their systems to&nbsp;the Cloud.