CINXE.COM
Radar – O’Reilly
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <title> Radar – O’Reilly </title> <link rel="stylesheet" href="https://cdn.oreillystatic.com/assets/css/wp_sites/style-20200701.css?1658885015"> <link rel="alternate" type="application/rss+xml" title="Radar All Posts Feed" href="https://www.oreilly.com/radar/feed/index.xml"> <link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/12.0.0-1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.oreilly.com\/radar\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.3.18"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://www.oreilly.com/radar/wp-includes/css/dist/block-library/style.min.css?ver=5.3.18' type='text/css' media='all' /> <link rel='stylesheet' id='ssp-frontend-player-css' href='https://www.oreilly.com/radar/wp-content/plugins/seriously-simple-podcasting/assets/css/player.css?ver=1.20.10' type='text/css' media='all' /> <script type='text/javascript' src='https://www.oreilly.com/radar/wp-includes/js/jquery/jquery.js?ver=1.12.4-wp'></script> <script type='text/javascript' src='https://www.oreilly.com/radar/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script> <link rel="alternate" type="application/rss+xml" title="Podcast RSS feed" href="https://www.oreilly.com/radar/feed/podcast" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="language_name" content="English"> <meta name="native_language_name" content="English"> <meta name="format-detection" content="telephone=no"> <link rel="icon" type="image/png" href="//www.oreilly.com/favicon.ico"> <!--[if lte IE 9]> <script> 'article aside footer header main nav section time'.replace(/\w+/g,function(n){document.createElement(n)}) </script> <![endif]--> <!--[if IE 9]> <style type="text/css"> #menu-toggle:checked ~ .mobile-nav { display:block; } .mobile-nav { display: none; } </style> <![endif]--> <meta property="twitter:card" content="summary_large_image" /> <meta property="twitter:site" content="@OReillyMedia" /> <meta property="twitter:title" content="Radar - O’Reilly" /> <meta property="twitter:description" content="Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology" /> <meta property="twitter:url" content="https://www.oreilly.com/radar" /> <meta property="twitter:image" content="https://cdn.oreillystatic.com/oreilly/images/radar-blog-social-1200x630.jpg" /> <meta property="og:type" content="article" /> <meta property="og:site_name" content="O’Reilly Media" /> <meta property="og:title" content="Radar - O’Reilly" /> <meta property="og:description" content="Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology" /> <meta property="og:url" content="https://www.oreilly.com/radar/" /> <meta property="og:image" content="https://cdn.oreillystatic.com/oreilly/images/radar-blog-social-1200x630.jpg" /> <meta name="description" content="Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology" /> <meta name="description:site" content="Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology" /> <meta name="oreilly:content_type" content="text" /> <script> loggedInObject = new Object(); var dataLayer = window.dataLayer || []; //Check for O'Reilly Unified logged-in status if (document.cookie.split(';').filter(function(item) { return item.indexOf('orm-jwt=') >= 0; }).length) { loggedInObject.loggedIn = 'yes'; dataLayer.push(loggedInObject); } </script> <script> dataLayer = [{"content.formatType":"none","content.free":"yes","content.identifier":"none","content.parentTopic":"none","content.publisher":"O'Reilly Media Inc.","content.releaseDate":"none","content.subTopic":"none","content.subdirectory":"radar","content.title":"Radar - O’Reilly","product.identifier":"none","product.title":"none","product.type":"none"}]; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5P4V6Z');</script> <!-- End Google Tag Manager --> <!-- Start VWO Async SmartCode --> <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com/" /> <script type='text/javascript' id='vwoCode'> window._vwo_code || (function() { var account_id=27087, version=2.1, settings_tolerance=2000, hide_element='body', hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important', /* DO NOT EDIT BELOW THIS LINE */ f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var i=this.getSettings(),n=d.createElement('script'),r=this;t=t||{};if(i){n.textContent=i;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var i=this.hide_element(),n=i?i+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=n;else t.appendChild(d.createTextNode(n));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var n=d.createElement('div');n.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';n.setAttribute('id','_vis_opt_path_hides');n.classList.add('_vis_hide_layer');t.parentNode.insertBefore(n,t.nextSibling)}var o='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:o})}else{this.load(o+'&x=true')}}};w._vwo_code=code;code.init();})(); </script> <!-- End VWO Async SmartCode --> </head> <body class="home blog multisite-radar"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P4V6Z" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="skipToMain" id="skipToMain"><a href="#maincontent"><span class="skipToMain-text">Skip to main content</span></a></div> <header role="banner"> <div class="content"> <nav role="navigation" aria-label="site sections"> <a href="https://www.oreilly.com/" class="logo" title="home page"><img src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"></a> <button id="mobileNavButton" class="mobileNavButton mobileNavButton--collapse mobileNavButton--3dx" type="button" aria-expanded="false" aria-controls="menuList"> <span class="mobileNavButton-box"> <span class="mobileNavButton-inner"></span> </span> </button> <ul id="menuList" class="menuList mobileHidden"> <li class="menuList-itemsP1"> <ul> <li class="menuList-item menuList-signIn"><a id="nav-signIn" href="https://www.oreilly.com/member/login/">Sign In</a></li> <li class="menuList-item menuList-tryNow"><a id="nav-tryNow" class="menuList-cta" href="https://oreilly.com/online-learning/try-now.html">Try Now</a></li> </ul> </li> <li class="menuList-itemsP2"> <ul> <li class="menuList-item menuList-itemWithSub"><csif cond="{cs.var.site-section}" eq="teams"><a href="https://www.oreilly.com/online-learning/teams.html" aria-current="page"><cselse><a href="https://www.oreilly.com/online-learning/teams.html"></csif>Teams</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/teams.html">For business</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/government.html">For government</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/academic.html">For higher ed</a></li> </ul> </li> <li class="menuList-item"><csif cond="{cs.var.site-section}" eq="individuals"><a href="https://www.oreilly.com/online-learning/individuals.html" aria-current="page"><cselse><a href="https://www.oreilly.com/online-learning/individuals.html"></csif>Individuals</a></li> <li class="menuList-item menuList-itemWithSub"><csif cond="{cs.var.site-section}" eq="features"><a href="https://www.oreilly.com/online-learning/features.html" aria-current="page"><cselse><a href="https://www.oreilly.com/online-learning/features.html"></csif>Features</a> <ul class="menuList-subList"> <li class="menuList-subItem menuList-extra"><a href="https://www.oreilly.com/online-learning/features.html">All features</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/courses.html">Courses</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-certification.html">Certifications</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/intro-interactive-learning.html">Interactive learning</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/live-events.html">Live events</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/feature-answers.html">Answers</a></li> <li class="menuList-subItem"><a href="https://www.oreilly.com/online-learning/insights-dashboard.html">Insights reporting</a></li> </ul> </li> <li class="menuList-item"><a href="https://www.oreilly.com/radar/">Blog</a></li> <li class="menuList-item" id="nav-forMarketers"><csif cond="{cs.var.site-section}" eq="content-sponsorship"><a href="https://www.oreilly.com/content-marketing-solutions.html" aria-current="page"><cselse><a href="https://www.oreilly.com/content-marketing-solutions.html"></csif>Content sponsorship</a></li> <li class="menuList-item menuList-item-search" id="nav-search"> <form id="js-searchForm" class="searchForm" action="https://www.oreilly.com/search/"><input id="search" type="search" name="query" placeholder="Explore our content" autocomplete="off" required=""><button id="js-searchCloseButton" class="navSearchCloseButton">Close</button></form> <button id="js-searchButton" class="navSearchButton">Search</button> </li> </ul> </li> </ul> </nav> </div> <!-- <div class="head-search-bar"> <div class="content"> <p>This is where the search bar goes</p> </div> </div> --> </header> <main role="main" id="maincontent"><section class="hero hero-wp"> <div class="content"> <div class="hero-textWrap"> <h1>Radar</h1> <div class="radar-post-page-subhead"> <p>Now, next, and beyond: Tracking need-to-know trends at the intersection of business and technology</p> </div> </div> </div> </section> <section class="textSection radar-intro"> <div class="content"> <h2>Areas we’re focusing on:</h2> <div class="defSections"> <div class="defSection"> <a class="textCTA-small" href="https://www.oreilly.com/radar/topics/ai-ml/">AI/ML</a> <p>Few technologies have the potential to change the nature of work and how we live as artificial intelligence (AI) and machine learning (ML).</p> </div> <div class="defSection"> <a class="textCTA-small" href="https://www.oreilly.com/radar/topics/future-of-the-firm/">Future of the Firm</a> <p>Everything from new organizational structures and payment schemes to new expectations, skills, and tools will shape the future of the firm.</p> </div> <div class="defSection"> <a class="textCTA-small" href="https://www.oreilly.com/radar/topics/innovation-and-disruption/">Innovation & Disruption</a> <p>Stay on top of the emerging tools, trends, issues, and context necessary for making informed decisions about business and technology.</p> </div> <div class="defSection"> <a class="textCTA-small" href="https://www.oreilly.com/radar/topics/next-architecture/">Next Architecture</a> <p>See how companies are using the cloud and next-generation architectures to keep up with changing markets and anticipate customer needs.</p> </div> <div class="defSection"> <a class="textCTA-small" href="https://www.oreilly.com/radar/topics/next-economy/">Next Economy</a> <p>We’re charting a course from today’s tech-driven economy to a “next” economy that strikes a better balance between people and automation.</p> </div> </div> </div> </section> <section class="textSection sectionBreak radarFeatures"> <div class="content"> <div class="homepage-cards"> <article id="post-16101" class="homepage-card"> <div><a href="https://www.oreilly.com/radar/tag/commentary/" class="post-type">Commentary</a></div> <div class="homepage-card-img" style="background-image:url(https://www.oreilly.com/radar/wp-content/uploads/sites/3/2024/01/Podcast_Cover_GenAI_in_the_Real_World.png)" > <a href="https://www.oreilly.com/radar/podcast/generative-ai-in-the-real-world-robert-nishihara-on-ai-and-the-future-of-data/"> <h2 class="post-title">Generative AI in the Real World: Robert Nishihara on AI and the Future of Data</h2> </a> </div> <div class="homepage-card-author"> By <a href="https://www.oreilly.com/people/ben-lorica/">Ben Lorica</a> and <a href="https://www.oreilly.com/people/robert-nishihara/">Robert Nishihara</a> </div> <a href="https://www.oreilly.com/radar/tag/commentary/" class="textCTA-small more-post-type">More Commentary</a> </article> <article id="post-16000" class="homepage-card"> <div><a href="https://www.oreilly.com/radar/tag/deep-dive/" class="post-type">Deep Dive</a></div> <div class="homepage-card-img" style="background-image:url(https://www.oreilly.com/radar/wp-content/uploads/sites/3/2019/06/hacker-1944688_crop-b34a76e3cab9c07c5900b706c70a12c3.jpg)" > <a href="https://www.oreilly.com/radar/the-state-of-security-in-2024/"> <h2 class="post-title">The State of Security in 2024</h2> </a> </div> <div class="homepage-card-author"> By <a href="https://www.oreilly.com/people/mike-loukides/">Mike Loukides</a> </div> <a href="https://www.oreilly.com/radar/tag/deep-dive/" class="textCTA-small more-post-type">More Deep Dive</a> </article> <article id="post-16096" class="homepage-card"> <div><a href="https://www.oreilly.com/radar/tag/research/" class="post-type">Research</a></div> <div class="homepage-card-img" style="background-image:url(https://www.oreilly.com/radar/wp-content/uploads/sites/3/2019/06/transitive_closure.svg_crop-c483691094b8c1c2b8fe281904ec788d-1.jpg)" > <a href="https://www.oreilly.com/radar/unbundling-the-graph-in-graphrag/"> <h2 class="post-title">Unbundling the Graph in GraphRAG</h2> </a> </div> <div class="homepage-card-author"> By <a href="https://www.oreilly.com/people/paco-nathan/">Paco Nathan</a> </div> <a href="https://www.oreilly.com/radar/tag/research/" class="textCTA-small more-post-type">More Research</a> </article> <article id="post-16089" class="homepage-card"> <div><a href="https://www.oreilly.com/radar/tag/signals/" class="post-type">Signals</a></div> <div class="homepage-card-img" style="background-image:url(https://www.oreilly.com/radar/wp-content/uploads/sites/3/2020/01/in-dis-canyon-7a-1400x950.jpg)" > <a href="https://www.oreilly.com/radar/blown-away/"> <h2 class="post-title">Blown Away</h2> </a> </div> <div class="homepage-card-author"> By <a href="https://www.oreilly.com/people/mike-loukides/">Mike Loukides</a> </div> <a href="https://www.oreilly.com/radar/tag/signals/" class="textCTA-small more-post-type">More Signals</a> </article> </div> </div> </section> </main> <footer id="footer" class="footer"> <div class="content"> <div class="footer-main" aria-label="company info"> <div class="footer-mainLeft"> <div class="footer-mainLeftOne"> <div class="footer-approach"> <h2 class="footer-header"><a href="https://www.oreilly.com/about/">About O’Reilly</a></h2> <ul class="footer-links"> <li><a href="https://www.oreilly.com/work-with-us.html">Teach/write/train</a></li> <li><a href="https://www.oreilly.com/careers/">Careers</a></li> <li><a href="https://www.oreilly.com/press/">O’Reilly news</a></li> <li><a href="https://www.oreilly.com/press/media-coverage.html">Media coverage</a></li> <li><a href="https://www.oreilly.com/partner/signup.csp">Community partners</a></li> <li><a href="https://www.oreilly.com/affiliates/">Affiliate program</a></li> <li><a href="https://www.oreilly.com/online-learning/rfp.html">Submit an RFP</a></li> <li><a href="https://www.oreilly.com/diversity/">Diversity</a></li> <li><a href="https://www.oreilly.com/content-marketing-solutions.html" id="footerSponsorshipLink">O’Reilly for marketers</a></li> </ul> </div> </div> <div class="footer-mainLeftTwo"> <div class="footer-contact"> <h2 class="footer-header"><a href="https://www.oreilly.com/online-learning/support/">Support</a></h2> <ul class="footer-links"> <li><a href="https://www.oreilly.com/about/contact.html">Contact us</a></li> <li><a href="https://www.oreilly.com/emails/newsletters/">Newsletters</a></li> <li><a href="https://www.oreilly.com/privacy.html">Privacy policy</a></li> </ul> <a href="https://www.linkedin.com/company/oreilly-media" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>linkedin-logo</title><path class="cls-1" d="M17.43,13.53v0l0,0ZM16.12,0A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0ZM11.77,22.92H8.12v-11h3.65ZM9.94,10.44h0a1.89,1.89,0,0,1-2-1.89A1.91,1.91,0,0,1,10,6.65a1.9,1.9,0,1,1,0,3.79Zm15,12.48H21.28V17.05c0-1.48-.53-2.49-1.85-2.49a2,2,0,0,0-1.88,1.34,2.63,2.63,0,0,0-.12.89v6.13H13.79s.05-10,0-11h3.64V13.5a3.63,3.63,0,0,1,3.29-1.82c2.4,0,4.21,1.57,4.21,4.95Z"/></svg></a> <a href="https://www.youtube.com/user/OreillyMedia" target="_blank"><svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 32.25 32.25"><defs><style>.cls-1{fill:#d30000;fill-rule:evenodd;}</style></defs><title>youtube-logo</title><path class="cls-1" d="M18.35,18.68a.89.89,0,0,0-.86.63V16.94h-1v7.59h1v-.59a.92.92,0,0,0,.89.74c.52,0,.86-.36,1-1.07a8.56,8.56,0,0,0,.14-1.9,10.47,10.47,0,0,0-.12-1.93C19.21,19.05,18.87,18.68,18.35,18.68Zm.09,4.14c-.05.52-.2.77-.45.77s-.43-.21-.49-.63a7.22,7.22,0,0,1,0-1c0-.72,0-1.14,0-1.26.07-.58.23-.88.51-.88s.4.27.46.79c0,.09,0,.47,0,1.13S18.46,22.71,18.44,22.82ZM8.61,18.19H9.86v6.34H11V18.19H12.2V16.94H8.61Zm7.71-6.12c.27,0,.43-.22.49-.66,0-.09,0-.45,0-1.07V9.78c0-.58,0-.93,0-1-.07-.43-.23-.65-.48-.65s-.41.19-.48.57a8.79,8.79,0,0,0,0,1v.53c0,.71,0,1.09,0,1.16C15.88,11.82,16.05,12.07,16.32,12.07Zm-1.74,10.4a2.92,2.92,0,0,1-.06.71c-.07.25-.2.37-.4.37s-.32-.11-.38-.34a2.63,2.63,0,0,1-.05-.66V18.83h-1v4.48c0,.91.33,1.37,1,1.37A1,1,0,0,0,14.6,24v.57h1v-5.7h-1Zm7.1-3.79a1.35,1.35,0,0,0-1.22.59,2.48,2.48,0,0,0-.3,1.07c0,.23,0,.61,0,1.16s0,1.13,0,1.37a2.93,2.93,0,0,0,.35,1.27,1.25,1.25,0,0,0,1.14.54,1.36,1.36,0,0,0,1.13-.45,2.29,2.29,0,0,0,.37-1.43s0-.07,0-.11v-.12h-1c0,.75-.17,1.12-.51,1.12s-.38-.18-.45-.56a4.68,4.68,0,0,1-.06-.9c0-.18,0-.31,0-.37h2v-.43a4.86,4.86,0,0,0-.3-2.11A1.28,1.28,0,0,0,21.68,18.68ZM22.15,21h-1c0-.05,0-.11,0-.16v-.08a1.64,1.64,0,0,1,.11-.8.39.39,0,0,1,.38-.23.42.42,0,0,1,.43.33,2.32,2.32,0,0,1,.07.7Zm-6-21A16.13,16.13,0,1,0,32.25,16.12,16.12,16.12,0,0,0,16.12,0Zm2.51,7.2h1V11a2.52,2.52,0,0,0,.06.66c.06.23.18.34.38.34s.34-.12.41-.37a3.76,3.76,0,0,0,.05-.71V7.2h1v5.74h-1v-.57a1,1,0,0,1-.93.72c-.66,0-1-.46-1-1.38ZM15,8a1.29,1.29,0,0,1,1.33-.92A1.3,1.3,0,0,1,17.65,8a6.77,6.77,0,0,1,.23,2.1,6.77,6.77,0,0,1-.23,2.1,1.3,1.3,0,0,1-1.32.92A1.29,1.29,0,0,1,15,12.17a6.77,6.77,0,0,1-.23-2.1A6.86,6.86,0,0,1,15,8ZM11.45,5.3l.89,2.87.88-2.87H14.4L12.88,9.7v3.24h-1.1V9.7L10.24,5.3ZM24.93,23.91a3,3,0,0,1-3,3h-12a3,3,0,0,1-3-3V18.05a3,3,0,0,1,3-3h12a3,3,0,0,1,3,3Z"/></svg></a> </div> <div class="footer-international"> <h2 class="footer-header">International</h2> <ul class="footer-links"> <li><a href="https://www.oreilly.com/anz/">Australia & New Zealand</a></li> <li><a href="https://oreilly.hk/">Hong Kong & Taiwan</a></li> <li><a href="https://oreillylearning.in/">India</a></li> <li><a href="https://oreilly.id/">Indonesia</a></li> <li><a href="https://www.oreilly.co.jp/index.shtml">Japan</a></li> </ul> </div> </div> </div> <div class="footer-download" id="download-info"> <h2 class="footer-header">Download the O’Reilly App</h2> <p>Take O’Reilly with you and learn anywhere, anytime on your phone <span class="nowrap">and tablet.</span></p> <div class="footer-downloadLinks"> <a href="https://itunes.apple.com/us/app/safari-to-go/id881697395"><img src="https://cdn.oreillystatic.com/oreilly/images/app-store-logo.png" alt="Apple app store" /></a> <a href="https://play.google.com/store/apps/details?id=com.safariflow.queue"><img src="https://cdn.oreillystatic.com/oreilly/images/google-play-logo.png" alt="Google play store" /></a> </div> </div> <div class="footer-download" id="tv-info"> <h2 class="footer-header">Watch on your big screen</h2> <p>View all O’Reilly videos, Superstream events, and Meet the Expert sessions on your <span class="nowrap">home TV.</span></p> <div class="footer-downloadLinks"> <a href="https://channelstore.roku.com/details/c8a2d0096693eb9455f6ac165003ee06/oreilly"><img src="https://cdn.oreillystatic.com/oreilly/images/roku-tv-logo.png" alt="Roku Payers and TVs" /></a> <a href="https://www.amazon.com/OReilly-Media-Inc/dp/B087YYHL5C/ref=sr_1_2?dchild=1&keywords=oreilly&qid=1604964116&s=mobile-apps&sr=1-2"><img src="https://cdn.oreillystatic.com/oreilly/images/amazon-appstore-logo.png" alt="Amazon appstore" /></a> </div> </div> <div class="footer-donotsell" id="donotsell-info"> <h2 class="footer-header"><a href="https://www.oreilly.com/privacy.html?donotsell=show">Do not sell my personal information</a></h2> </div> </div> <div class="footer-subfooter"> <a href="https://www.oreilly.com/" title="home page" aria-current="page"> <img class="footer-subfooterLogo" id="footer-subfooterLogo" src="https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red.svg" onerror="this.src='https://cdn.oreillystatic.com/images/sitewide-headers/oreilly_logo_mark_red_@2x.png'; this.onerror=null;" alt="O'Reilly home"> </a> <p>© 2024, O’Reilly Media, Inc. All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.</p> <p><a href="https://www.oreilly.com/terms/">Terms of service</a> • <a href="https://www.oreilly.com/privacy.html">Privacy policy</a> • <a href="https://www.oreilly.com/about/editorial_independence.html">Editorial independence</a></p> </div> </div> </footer> <!-- <script src="https://cdn.oreillystatic.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> --> <style type="text/css"> .ssp-wave wave wave { background: #00d4f7 !important; } </style> <script type='text/javascript' src='https://www.oreilly.com/radar/wp-content/plugins/seriously-simple-podcasting/assets/js/media.player.js?ver=1.20.10'></script> <script type='text/javascript' src='https://www.oreilly.com/radar/wp-content/plugins/seriously-simple-podcasting/assets/js/html5.player.js?ver=1.20.10'></script> <script type='text/javascript' src='https://www.oreilly.com/radar/wp-includes/js/wp-embed.min.js?ver=5.3.18'></script> <script> (function($) { //Toggle isActive and mobileHidden classes for mobileNavButton $('nav #mobileNavButton').on('click', function() { var expanded = $(this).attr('aria-expanded') === 'true' || false; $(this).attr('aria-expanded', !expanded); $(this).toggleClass("isActive"); $(this).next().toggleClass("mobileHidden"); }); //Toggle isFocused class for keyboard navigation of submenus $('nav #menuList .menuList-subItem a').each(function(navItem) { $(this).on('focus', function() { $(this).parent().parent().toggleClass('isFocused'); }); $(this).on('blur', function() { $(this).parent().parent().toggleClass('isFocused'); }); }); //Toggle mobileHidden class accordian elements $('.mobileAccordian').each(function() { var $btn = $(this).find('button'); var $target = $(this).next(); $btn.on('click', function() { var expanded = $btn.attr('aria-expanded') === 'true' || false; $btn.attr('aria-expanded', !expanded); $target.toggleClass("mobileHidden"); }); }); // truncate months in footer conf listings var months = $('.confMonth'); months.each(function(){ var m = $(this).text(); if(m.length < 3 ) return; $(this).html(m.slice(0,3)); }); //Search platform form action function searchSubmit(e) { e.preventDefault(); sParameter = searchForm.search.value; sParameter = encodeURIComponent(sParameter.trim()); sURL = searchForm.action + '?query=' + sParameter; window.location = sURL; //GA event for search dataLayer.push({ 'event': 'eventTracker', 'eventCat':'site search', 'eventAct':'search box', 'eventLbl':'explore our content', 'eventVal':0, 'nonInteraction': 0, }); } const searchForm = document.getElementById('js-searchForm'); searchForm.addEventListener('submit', searchSubmit); //Search button action function showNavSearch(e) { $('.menuList-item-search').addClass('overlay'); $('.menuList-item-search input#search').focus(); } const searchButton = document.getElementById('js-searchButton'); searchButton.addEventListener('click', showNavSearch); //Close search button action function hideNavSearch(e) { $('.menuList-item-search').removeClass('overlay'); } const searchCloseButton = document.getElementById('js-searchCloseButton'); searchCloseButton.addEventListener('click', hideNavSearch); //"Try Now" nav button tracking $('#nav-tryNow').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'try now', 'eventVal':0, 'nonInteraction': 0, }); }); //"Sign in" nav button tracking $('#nav-signIn').on('click', function() { dataLayer.push({ 'event': 'eventTracker', 'eventCat':'marketing', 'eventAct':'nav', 'eventLbl':'sign in', 'eventVal':0, 'nonInteraction': 0, }); }); })(jQuery); </script> <script type="text/javascript" id="MathJax-script"> var math = document.getElementsByClassName('math-tex'); if (math.length > 0) includeMathJax(); function includeMathJax() { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"; script.type = 'text/javascript'; script.async = 'async'; head.appendChild(script) } </script> <script type="text/javascript" src="/bdxdF5/wgY/XHI/Eb9JVw/aYLOwNS2r4zN/WRZ9AQ/HAN/pekpRbB4"></script><link rel="stylesheet" type="text/css" href="/bdxdF5/wgY/XHI/Eb9JVw/GG/clJdAQ/JHU/DIC4SMDVX"> <script src="/bdxdF5/wgY/XHI/Eb9JVw/GG/clJdAQ/WDg/cLU9Qdy4p" async defer></script> <div id="sec-overlay" style="display:none;"> <div id="sec-container"> </div> </div></body> </html>