section.poweredvideos.container 
    .poweredvideos__grid
        +powvideo(
            "https://www.youtube.com/watch?v=3FFexcYIpmA",
            "/img/poweredby/videos/001.png",
            "IBM",
            "Leveraging In&nbsp;Memory Compute Grids With Core Systems Of&nbsp;Record"
        )
            p Apache Ignite is&nbsp;used for IBM Z&nbsp;Mainframes workloads 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 be handled through container services. After a successful POC, Ignite fully met their requirements and was quickly rolled into production.

        +powvideo(
            "https://techblog.yahoo.co.jp/oss/yahoo_shopping_purchases_ignite/",
            "/img/poweredby/videos/005.png",
            "American Airlines",
            "In-Memory Computing Patterns For High Volume, Real Time Applications",
            "", false
        )
            p American Airlines IT&nbsp;transformations are due to&nbsp;the following advantages of&nbsp;Apache Ignite:
            ul.dashlist.pt-1
                li Bandwidth and response times improvement
                li Improved availability
                li Horizontal and vertically scalability
                li Efficiency
                li ANSI-99 SQL and ACID transaction guarantees ant 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&nbsp;a&nbsp;horizontally scalable framework allows to&nbsp;define different statistical analyses and execute it&nbsp;on&nbsp;TB&rsquo;s of&nbsp;numerical data in&nbsp;real-time, without movement of&nbsp;data.

            +powvideo(
                "https://www.youtube.com/watch?v=NUxdoL-K9Ys",
                "/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&nbsp;key infrastructure component of&nbsp;TRex platform. It&nbsp;supports real-time ingest of&nbsp;data from the field along with OLTP style analytics and queries against that data such as&nbsp;thematic tiling, volumes &amp;&nbsp;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 1Millions 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&nbsp;a&nbsp;high-performance compute system for drugs&rsquo; 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 Re-configurable Microservices Platform",
                "comvideo__txt--black comvideo__txt--medium"
            )
                p How to&nbsp;build an&nbsp;event driven, dynamically re-configurable 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 Potential Hazardous Situations In The Dutch Railway Planning Using Apache Ignite",
                "comvideo__txt--black  comvideo__txt--medium"  
            )
                p Detecting Potential Hazardous Situations in&nbsp;the Dutch Railway Planning to&nbsp;meet challenges of&nbsp;one of&nbsp;the busiest rail infrastructures in&nbsp;Europe JDriven built a&nbsp;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.