1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 6 <meta charset="utf-8"> 7 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 8 <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=2.0"> 9 <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 10 11 <meta name="apple-mobile-web-app-capable" content="yes"> 12 <meta name="apple-itunes-app" content="app-id=1435521937"> 13 <meta name="description" content="Virtual Stack is a podcast about the glorious world of Enterprise IT. On this show, we discuss networking, virtualisation, cloud and all things software-defined."> 14 <meta itemprop="name" content="Virtual Stack"> 15 <meta itemprop="description" content="Virtual Stack is a podcast about the glorious world of Enterprise IT. On this show, we discuss networking, virtualisation, cloud and all things software-defined."> 16 <meta itemprop="image" content="https://assets.libsyn.com/secure/content/23131492"> 17 <meta property="og:type" content="website"> 18 <meta property="og:url" content="https://virtualstack.tech/"> 19 <meta property="og:title" content="Virtual Stack"> 20 <meta property="og:image" content="http://assets.libsyn.com/content/23131492?height=250&width=250"> 21 <meta property="og:image:width" content="250"> 22 <meta property="og:image:height" content="250">
23 <meta property="og:description" content="Virtual Stack is a podcast about the glorious world of Enterprise IT. On this show, we discuss networking, virtualisation, cloud and all things software-defined."> 24 <meta name="twitter:card" content="summary"> 25 <meta name="twitter:title" content="Virtual Stack"> 26 <meta name="twitter:description" content="Virtual Stack is a podcast about the glorious world of Enterprise IT. On this show, we discuss networking, virtualisation, cloud and all things software-defined."> 27 <meta name="twitter:image" content="http://assets.libsyn.com/content/23131492"> 28 <title>Virtual Stack</title> 29 30 <link rel="alternate" type="application/rss+xml" title="Virtual Stack" href="http://virtualstack.tech/rss"> 31 32 <!-- Bootstrap Core CSS --> 33 <link href="https://ssl-static.libsyn.com/p/assets/platform/websuite/css/bootstrap.css" rel="stylesheet"> 34 <link href="https://ssl-static.libsyn.com/p/assets/platform/websuite/css/jquery.smartmenus.bootstrap.css" rel="stylesheet"> 35 36 <!-- Custom CSS --> 37 <link href="https://ssl-static.libsyn.com/p/assets/platform/websuite/css/default-theme.css" rel="stylesheet"> 38 39 <!-- Custom Fonts --> 40 <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> 41 42 <link href="https://://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css"> 43 44 45 <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> 46 <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 47 <!--[if lt IE 9]> 48
48<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
48 49
49<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
49 50 <![endif]--> 51 52 <!-- style overrides --> 53 <style> 54 .image-pop:hover { 55 cursor: hand; 56 cursor: pointer; 57 opacity: .8; 58 } 59 60 .image-pop { 61 height:auto; 62 width:100%; 63 max-width:400px; 64 padding-right:20px; 65 } 66 67 .img-social { 68 max-height:16px; 69 } 70 71 .producer-message-row { 72 word-wrap: break-word; 73 } 74 75 ul.social-list { 76 list-style: none; 77 } 78 79 ul.social-list li{ 80 display: inline; 81 margin-left: 5px; 82 } 83 84 .profile { 85 background: url(https://assets.libsyn.com/secure/content/23131492/?height=80) no-repeat center center; 86 background-size: cover; 87 } 88 .intro-header, .banner, .navbar-default .navbar-nav>li>a, .navbar-brand, .producer-message, .producer-message-row a, .btn-widget-login, .navbar-default .navbar-nav .open, .dropdown-submenu, .widget-header{ 89 color:#ffffff !important; 90 } 91 .producer-message-row a { 92 text-decoration: underline; 93 } 94 .intro-message h1, .subtitle-text { 95 color:#000000 !important; 96 background: #fff; 97 } 98 99 .navbar-default, .producer-message, .btn-send, .btn-widget-login, .dropdown-menu, .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus, .nav .open > a, .nav .open > a:hover, .nav .open > a:focus, .widget-btn{ 100 background-color:#000000 !important; 101 } 102 103 .custom-blog-thumbnail { 104 border:1px solid #000000 !important; 105 } 106 107 .libsyn-item a { 108 color:#337ab7 !important; 109 } 110 111 .dropdown-menu > li > a { 112 color: #ffffff; 113 } 114 115 .navbar-nav > li > .dropdown-menu > li a:hover { 116 background: #ffffff !important; 117 color:#000000 !important; 118 } 119 120 body { 121 font-weight:normal !important; 122 } 123 124 .dropdown-submenu{ 125 display: block; 126 padding: 3px 20px; 127 clear: both; 128 font-weight: 400; 129 line-height: 1.42857143; 130 white-space: nowrap; 131 } 132 133 .left-side { 134 padding-top:0px !important; 135 } 136 137 .section-heading{ 138 margin:5px 0 25px 0; 139 } 140 141 p.date { 142 margin:5px 0 5px 0; 143 } 144 145 .item-height-restriction, .item-height-restriction-video { 146 height:auto; 147 } 148 149 .show_more { 150 direction:rtl; 151 text-indent: 25px; 152 font-size:15px; 153 font-weight:400; 154 } 155 156 .adjusted-player { 157 width: 1px; 158 min-width: 100%; 159 } 160 161 .adjusted-player { 162 width: 1px; 163 min-width: 100%; 164 } 165 166 .navbar-fixed-top .navbar-collapse, .navbar-fixed-bottom .navbar-collapse { 167 max-height: 1000px; 168 } 169 170 @media screen and (max-width: 767px){ 171 .navbar-form{ 172 margin-right: 0px; 173 margin-left: 0px; 174 } 175 } 176 177 </style> 178 179 180 <!-- Google Analytics --> 181 182 183
183<script>
vendor: 349 bytes, lines 183-189
183 184 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 185 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 186 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 187 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 188 189 ga('create', '
189UA-1417413-3
vendor: 49 bytes, lines 189-192
189', 'auto'); 190 ga('send', 'pageview'); 191 192
192</script>
192 193 194 <!-- End Google Analytics --> 195 196</head> 197 198<body> 199
199<script> 200 (function(w, d){ 201 var id='embedly-platform', n = 'script'; 202 if (!d.getElementById(id)){ 203 w.embedly = w.embedly || function() {(w.embedly.q = w.embedly.q || []).push(arguments);}; 204 var e = d.createElement(n); e.id = id; e.async=1; 205 e.src = ('https:' === document.location.protocol ? 'https' : 'http') + '://cdn.embedly.com/widgets/platform.js'; 206 var s = d.getElementsByTagName(n)[0]; 207 s.parentNode.insertBefore(e, s); 208 } 209 })(window, document); 210 </script>
210 211 212 <div id="fb-root"></div> 213
213<script>(function(d, s, id) { 214 var js, fjs = d.getElementsByTagName(s)[0]; 215 if (d.getElementById(id)) return; 216 js = d.createElement(s); js.id = id; 217 js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.8&appId=834757889913083"; 218 fjs.parentNode.insertBefore(js, fjs); 219 }(document, 'script', 'facebook-jssdk'));</script>
219 220 221 222 <!-- Navigation --> 223 <nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation" id="main-menu"> 224 <div class="container topnav"> 225 <!-- Brand and toggle get grouped for better mobile display --> 226 <div class="navbar-header"> 227 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> 228 <span class="sr-only">Toggle navigation</span> 229 <span class="icon-bar"></span> 230 <span class="icon-bar"></span> 231 <span class="icon-bar"></span> 232 </button> 233 <a title="Home Page" class="navbar-brand topnav" href="/"><div class="profile"></div></a> 234 </div> 235 <!-- Collect the nav links, forms, and other content for toggling --> 236 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 237 238 <ul class="nav navbar-nav navbar-right" data-sm-skip-collapsible-behavior="true"> 239 <li> 240 241 <form class="navbar-form navbar-right" method="GET" action="https://virtualstack.tech/size/5/"> 242 <div class="form-group search-form"> 243 <input type="text" aria-label="Search for Episodes" name="search" class="form-control" value="" placeholder="Search"> 244 </div> 245 <button type="submit" aria-label="Click to submit search" class="btn btn-default"><i class="fa fa-search"></i></button> 246 </form> 247 </li> 248 <li> 249 <a href="" class="share-link" data-toggle="modal" data-target="#aboutModal">About</a> 250 </li> 251 <li><a href="#">Episodes <span class="caret"></span></a> 252 <ul class="dropdown-menu"> 253 <li><a href="/">All Episodes</a></li> 254 255 <!-- premium episodes link --> 256 257 <!-- categories --> 258 259 <!-- archives --> 260 <li><a href="#">Archives <b class="caret"></b> </a> 261 <ul class="dropdown-menu"> 262 <li><a href="/2022">2022 <b class="caret"></b> </a><ul class="dropdown-menu"><li><a href="/2022/05">May</a></li><li><a href="/2022/04">April</a></li><li><a href="/2022/03">March</a></li><li><a href="/2022/02">February</a></li></ul></li><li><a href="/2021">2021 <b class="caret"></b> </a><ul class="dropdown-menu"><li><a href="/2021/04">April</a></li><li><a href="/2021/03">March</a></li></ul></li><li><a href="/2020">2020 <b class="caret"></b> </a><ul class="dropdown-menu"><li><a href="/2020/11">November</a></li><li><a href="/2020/07">July</a></li><li><a href="/2020/06">June</a></li><li><a href="/2020/05">May</a></li><li><a href="/2020/04">April</a></li><li><a href="/2020/03">March</a></li><li><a href="/2020/02">February</a></li><li><a href="/2020/01">January</a></li></ul></li><li><a href="/2019">2019 <b class="caret"></b> </a><ul class="dropdown-menu"><li><a href="/2019/12">December</a></li><li><a href="/2019/10">October</a></li><li><a href="/2019/09">September</a></li><li><a href="/2019/08">August</a></li><li><a href="/2019/06">June</a></li><li><a href="/2019/05">May</a></li><li><a href="/2019/04">April</a></li><li><a href="/2019/03">March</a></li><li><a href="/2019/02">February</a></li><li><a href="/2019/01">January</a></li></ul></li><li><a href="/2018">2018 <b class="caret"></b> </a><ul class="dropdown-menu"><li><a href="/2018/12">December</a></li><li><a href="/2018/11">November</a></li><li><a href="/2018/10">October</a></li><li><a href="/2018/09">September</a></li></ul></li> 263 </ul> 264 </li> 265 </ul> 266 </li> 267 <!-- premium episodes link --> 268 </ul> 269 </div> 270 <!-- /.navbar-collapse --> 271 </div> 272 <!-- /.container --> 273 </nav> 274 275 276 <!-- Header --> 277 <a name="about"></a> 278 <div class="intro-header"> 279 <div class="container main-container"> 280 <div class="row"> 281 <div class="col-lg-12"> 282 <div class="click-alert alert alert-info fade"> 283 <strong>Preview Mode</strong> Links will not work in preview mode 284 </div> 285 <div class="intro-message"> 286 <h1>Virtual Stack</h1> 287 <h3></h3> 288 </div> 289 </div> 290 </div> 291 </div> 292 <!-- /.container --> 293 294 </div> 295 <!-- /.intro-header --> 296 297 <!-- Page Content --> 298 299 <div class="container"> 300 301 <div class="alert alert-info alert-dismissible producer-message"> 302 <div class="row"> 303 <div class="col-lg-12"> 304 <div class="col-lg-12 col-sm-12 align-top"> 305 <ul class="text-center social-list"> 306 <li style="display: inline;"><a aria-label="Subscribe to RSS Feed" title="Subscribe to RSS Feed" data-toggle="tooltip" data-placement="bottom" target="_blank" rel="noopener noreferrer" href="http://virtualstack.tech/rss" class="btn btn-default"><i class="fa fa-rss fa-fw"></i></a></li><li style="display: inline;"><a aria-label="Listen on Apple Podcasts" title="Listen on Apple Podcasts" data-toggle="tooltip" data-placement="bottom" target="_blank" rel="noopener noreferrer" href="https://itunes.apple.com/nl/podcast/virtual-stack/id1435521937?l=en&mt=2&ls=1" class="btn btn-default"><i class="fa fa-podcast fa-fw"></i></a></li><li style="display: inline;"><a aria-label="Listen on Stitcher" title="Listen on Stitcher" data-toggle="tooltip" data-placement="bottom" target="_blank" rel="noopener noreferrer" href="http://www.stitcher.com/s?fi
306d=231248&refid=stpr" class="btn btn-default btn-social"><img src="https://ssl-static.libsyn.com/p/assets/platform/websuite/stitcher.png" class="img-social" alt="Stitcher"></a></li><li style="display: inline;"><a aria-label="Listen on Spotify" title="Listen on Spotify" data-toggle="tooltip" data-placement="bottom" target="_blank" rel="noopener noreferrer" href="https://open.spotify.com/show/79Er3qIo7ciZTgM3IxVtLI?si=ZDx1DtCCT2K0cJqjZRJXBg" class="btn btn-default"><i class="fa fa-spotify fa-fw"></i></a></li> </ul> 307 </div> 308 </div> 309 </div> 310 </div> 311 312 <!-- bread crumbs --> 313 <div class="col-lg-12 col-md-12 item-container"><div class="row libsyn-item libsyn libsyn-item-free libsyn-item-23226659" data-id="23226659"><div class="col-lg-6 col-md-6 left-side libsyn-item-23226659"><h2 class="section-heading"><a data-iframe-id="embed_23226659" class="read_more" href="https://virtualstack.tech/44-virtual-stack-ebpf-and-its-use-cases">44 - Virtual Stack - eBPF and its Use Cases</a></h2><iframe id="embed_23226659" title="44 - Virtual Stack - eBPF and its Use Cases" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/23226659/height/90/theme/custom/thumbnail/yes/direction/forward/tdest_id/791135/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe><div class="row"><div class="col-lg-4 col-sm-4 download-div"><a href="https://virtualstack.tech/44-virtual-stack-ebpf-and-its-use-cases#comments" class="facebook-comments-count" data-uri="https://virtualstack.tech/44-virtual-stack-ebpf-and-its-use-cases"></a></div></div></div><div class="col-lg-6 col-md-6 col-sm-12 right-side"><p class="date">May 25, 2022</p><p class="lead"><div data-pm-slice="1 1 []" data-en-clipboard="true">eBPF is one of 314the most interesting emerging technologies in the area of 315observability, networking and security. On the 44th episode of the 316Virtual Stack Podcast, Moustafa Harbi (Sr. Technical Account 317Manager at Red Hat) and I have a chat about this technology and its 318use cases in today's enterprise IT industry.</div> 319<div> </div> 320<div>Show...</div> 321</p></p><div class="row"><div class="col-md-12 text-right show_more"><a data-iframe-id="embed_23226659" class="read_more" href="https://virtualstack.tech/44-virtual-stack-ebpf-and-its-use-cases">Read More</a></div></div></div></div><hr><div class="row libsyn-item libsyn libsyn-item-free libsyn-item-22926650" data-id="22926650"><div class="col-lg-6 col-md-6 left-side libsyn-item-22926650"><h2 class="section-heading"><a data-iframe-id="embed_22926650" class="read_more" href="https://virtualstack.tech/43-virtual-stack-network-automation">43 - Virtual Stack - Network Automation</a></h2><iframe id="embed_22926650" title="43 - Virtual Stack - Network Automation" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/22926650/height/90/theme/custom/thumbnail/yes/direction/forward/tdest_id/791135/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe><div class="row"><div class="col-lg-4 col-sm-4 download-div"><a href="https://virtualstack.tech/43-virtual-stack-network-automation#comments" class="facebook-comments-count" data-uri="https://virtualstack.tech/43-virtual-stack-network-automation"></a></div></div></div><div class="col-lg-6 col-md-6 col-sm-12 right-side"><p class="date">Apr 27, 2022</p><p class="lead"><div data-pm-slice="1 1 []" data-en-clipboard="true">On the 43rd 322episode of the Virtual Stack Podcast, I'm joined by <a href= 323"https://www.linkedin.com/in/seanecavanaugh/">Sean Cavanaugh</a> 324(Senior Principal Technical Marketing Manager - Ansible Automation 325Platform, at Red Hat) and we discuss all things network automation. 326If you'd like to hear about main use cases, common obstacles and 327the solution you need (spoiler alert:...</div> 328</p></p><div class="row"><div class="col-md-12 text-right show_more"><a data-iframe-id="embed_22926650" class="read_more" href="https://virtualstack.tech/43-virtual-stack-network-automation">Read More</a></div></div></div></div><hr><div class="row libsyn-item libsyn libsyn-item-free libsyn-item-22568837" data-id="22568837"><div class="col-lg-6 col-md-6 left-side libsyn-item-22568837"><h2 class="section-heading"><a data-iframe-id="embed_22568837" class="read_more" href="https://virtualstack.tech/42-virtual-stack-company-as-code">42 - Virtual Stack - Company as Code</a></h2><iframe id="embed_22568837" title="42 - Virtual Stack - Company as Code" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/22568837/height/90/theme/custom/thumbnail/yes/direction/forward/tdest_id/791135/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe><div class="row"><div class="col-lg-4 col-sm-4 download-div"><a href="https://virtualstack.tech/42-virtual-stack-company-as-code#comments" class="facebook-comments-count" data-uri="https://virtualstack.tech/42-virtual-stack-company-as-code"></a></div></div></div><div class="col-lg-6 col-md-6 col-sm-12 right-side"><p class="date">Mar 25, 2022</p><p class="lead"><div data-pm-slice="1 1 []" data-en-clipboard="true">On the 42th 329episode of Virtual Stack Podcast, I'm joined by <a href= 330"https://www.linkedin.com/in/gilhoffer/">Gil Hoffer</a> (co-founder 331& CTO at Salto) and we discuss about their solution of automating 332the configuration of SaaS applications, which they describe as 333company-as-code.</div> 334<div data-pm-slice="1 1 []" data-en-clipboard="true"> </div> 335<div>Can we manage and operate our business applications the same 336way as our CI/CD pipelines...</div> 337</p></p><div class="row"><div class="col-md-12 text-right show_more"><a data-iframe-id="embed_22568837" class="read_more" href="https://virtualstack.tech/42-virtual-stack-company-as-code">Read More</a></div></div></div></div><hr><div class="row libsyn-item libsyn libsyn-item-free libsyn-item-22297064" data-id="22297064"><div class="col-lg-6 col-md-6 left-side libsyn-item-22297064"><h2 class="section-heading"><a data-iframe-id="embed_22297064" class="read_more" href="https://virtualstack.tech/41-virtual-stack-microshift">41- Virtual Stack - MicroShift</a></h2><iframe id="embed_22297064" title="41- Virtual Stack - MicroShift" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/22297064/height/90/theme/custom/thumbnail/yes/direction/forward/tdest_id/791135/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe><div class="row"><div class="col-lg-4 col-sm-4 download-div"><a href="https://virtualstack.tech/41-virtual-stack-microshift#comments" class="facebook-comments-count" data-uri="https://virtualstack.tech/41-virtual-stack-microshift"></a></div></div></div><div class="col-lg-6 col-md-6 col-sm-12 right-side"><p class="date">Mar 1, 2022</p><p class="lead">On the 41st episode, <a href= 338"https://www.linkedin.com/in/nbarcet/">Nick Barcet</a> (Sr. 339Director Technology Strategy, Office of the CTO at Red Hat) joins 340me on the show we talk about MicroShift, an open source project of 341optimizing OpenShift for edge/small form factor use cases. We also 342talk about how Red Hat looks into emerging technology projects.
343Virtual Stack is...</p></p><div class="row"><div class="col-md-12 text-right show_more"><a data-iframe-id="embed_22297064" class="read_more" href="https://virtualstack.tech/41-virtual-stack-microshift">Read More</a></div></div></div></div><hr><div class="row libsyn-item libsyn libsyn-item-free libsyn-item-22137149" data-id="22137149"><div class="col-lg-6 col-md-6 left-side libsyn-item-22137149"><h2 class="section-heading"><a data-iframe-id="embed_22137149" class="read_more" href="https://virtualstack.tech/40-virtual-stack-2022-tech-trends">40 - Virtual Stack - 2022 Tech Trends</a></h2><iframe id="embed_22137149" title="40 - Virtual Stack - 2022 Tech Trends" style="border: none" src="//html5-player.libsyn.com/embed/episode/id/22137149/height/90/theme/custom/thumbnail/yes/direction/forward/tdest_id/791135/render-playlist/no/custom-color/000000/" height="90" width="100%" scrolling="no" allowfullscreen webkitallowfullscreen mozallowfullscreen oallowfullscreen msallowfullscreen></iframe><div class="row"><div class="col-lg-4 col-sm-4 download-div"><a href="https://virtualstack.tech/40-virtual-stack-2022-tech-trends#comments" class="facebook-comments-count" data-uri="https://virtualstack.tech/40-virtual-stack-2022-tech-trends"></a></div></div></div><div class="col-lg-6 col-md-6 col-sm-12 right-side"><p class="date">Feb 15, 2022</p><p class="lead"><div data-pm-slice="1 1 []" data-en-clipboard="true">Virtual Stack 344Podcast is back after a 10 months long hiatus! On the 40th episode 345of the show, I'm joined by a fellow Red Hatter and the co-host of 346the The Cloudcast, <a href= 347"https://www.linkedin.com/in/briangracely/">Brian 348Gracely</a>.</div> 349<div>With Brian, we look into several technology trends such as 350cloud computing, web3, security then we discuss what to expect in 3512022 and...</div> 352</p></p><div class="row"><div class="col-md-12 text-right show_more"><a data-iframe-id="embed_22137149" class="read_more" href="https://virtualstack.tech/40-virtual-stack-2022-tech-trends">Read More</a></div></div></div></div><hr> 353 </div> 354 <!-- /.container --> 355 356 357 </div> 358 <!-- /.content-section-a --> 359 360 361 362 <!-- About Modal --> 363 <div id="aboutModal" class="modal fade" role="dialog"> 364 <div class="modal-dialog"> 365 <!-- Modal content--> 366 <div class="modal-content"> 367 <div class="modal-header"> 368 <button type="button" class="close" data-dismiss="modal">×</button> 369 <h4 class="modal-title">About the Podcast</h4> 370 </div> 371 <div class="modal-body"> 372 <p>
372Virtual Stack is a podcast about the glorious world of Enterprise IT. On this show, we discuss networking, virtualisation, cloud and all things software-defined.</p> 373 </div> 374 <div class="modal-footer"> 375 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 376 </div> 377 </div> 378 </div> 379 </div> 380 381 <!-- Share Modal --> 382 <div id="shareModal" class="modal" role="dialog"> 383 <div class="modal-dialog"> 384 <!-- Modal content--> 385 <div class="modal-content"> 386 <div class="modal-header"> 387 <button type="button" class="close" data-dismiss="modal">×</button> 388 <h4 class="modal-title">Share This Episode</h4> 389 </div> 390 <div class="modal-body"> 391 <p id="pw-share"><div class="addthis_inline_share_toolbox"></div></p> 392 </div> 393 <div class="modal-footer"> 394 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 395 </div> 396 </div> 397 </div> 398 </div> 399 400 <!-- Private Premium Modal --> 401 <div id="loginModal" class="modal" role="dialog"> 402 <div class="modal-dialog"> 403 <!-- Modal content--> 404 <div class="modal-content"> 405 <div class="modal-header"> 406 <h4 class="modal-title"><i class="fa fa-lock fa-lg"></i> Private Premium Login</h4> 407 </div> 408 <div class="modal-body"> 409 <p> 410 <form class="form-signin" method="POST" action=""> 411 <h5 class="form-signin-heading">Login</h5> 412 <label for="inputEmail" class="sr-only">Email</label> 413 <input type="email" id="inputEmail" name="email" class="form-control" placeholder="Email address" required autofocus> 414 <label for="inputPassword" class="sr-only">Password</label> 415 <input type="password" id="inputPassword" name="password" class="form-control" placeholder="Password" required> 416 <p class="pull-right"><a href="'">Having trouble logging in?</a></p> 417 <button name="Login for Premium Access" class="btn btn-lg btn-primary btn-block btn-widget-login" type="submit">Login <i class="fa fa-arrow-circle-right fa-lg pull-right"></i></button> 418 </form> 419 </p> 420 </div> 421 422 </div> 423 </div> 424 </div> 425 426 <!-- Image Enlarge Modal --> 427 <div class="modal fade" id="imagemodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 428 <div class="modal-dialog"> 429 <div class="modal-content"> 430 <div class="modal-header"> 431 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> 432 </div> 433 <div class="modal-body" style="text-align:center;"> 434 <img src="" id="imagepreview" style="width: auto; height: 300px;" > 435 </div> 436 <div class="modal-footer"> 437 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 438 </div> 439 </div> 440 </div> 441 </div> 442 443 444 445 <!-- Footer --> 446 <footer> 447 <div class="container"> 448 <div class="row"> 449 <div class="col-lg-12"> 450 <p class="copyright small pull-right">© </p> 451 </div> 452 </div> 453 </div> 454 </footer> 455 456 <!-- jQuery --> 457
457<script src="https://ssl-static.libsyn.com/p/assets/platform/websuite/js/jquery.js"></script>
457 458 459 <!-- Bootstrap Core JavaScript --> 460
460<script src="https://ssl-static.libsyn.com/p/assets/platform/websuite/js/bootstrap.js"></script>
460 461 462 <!-- Smart Menu JS --> 463
463<script src="https://ssl-static.libsyn.com/p/assets/platform/websuite/js/jquery.smartmenus.js"></script>
463 464
464<script src="https://ssl-static.libsyn.com/p/assets/platform/websuite/js/jquery.smartmenus.bootstrap.js"></script>
464 465 466 467 468 469
469<script> 470 var addthis_config = {}; 471 addthis_config.pubid = 'ra-57f683ee47f14d2b'; 472 473 var lockScroll = false; 474 var premiumAuthorized = true; 475 var enablePremiumDownload = false; 476 477 function noPremium(){ 478 479 480 premiumAuthorized = false; 481 482 } 483 484 function adjustPlayerWidth(){ 485 $(".producer-message iframe[src*='html5-player']").addClass('adjusted-player'); 486 $(".libsyn-item iframe[src*='html5-player']").addClass('adjusted-player'); 487 $(".libsyn-item-video iframe[src*='html5-player']").addClass('adjusted-player-video'); 488 makeImagesResponsive(); 489 } 490 491 function makeImagesResponsive(){ 492 $(".right-side img").addClass("img-responsive"); 493 $(".left-side img").addClass("img-responsive"); 494 } 495 496 function getFBCommentCount(uri,element){ 497 var apiUrl = "//graph.facebook.com/?ids=" + uri; 498 var commentsCount = 0; 499 $.ajax({ 500 url: apiUrl, 501 success: function(result) { 502 if ( typeof result != "undefined" && result.hasOwnProperty(uri) && typeof result[uri].share != "undefined" ) { 503 commentsCount = result[uri].share.comment_count; 504 element.html('<i class="fa fa-comments" title="Leave a Comment"></i> ' + commentsCount + " Comment(s)"); 505 } 506 } 507 }); 508 return false; 509 } 510 511 function updateCommentsCount(){ 512 $(".facebook-comments-count" ).each(function() { 513 if($(this).html() == ""){ 514 var pageIndex = $(this).data("uri"); 515 getFBCommentCount(pageIndex,$(this)); 516 } 517 }); 518 } 519 520 $(function() { 521 522 var lastScroll = 0; 523 524 $('#main-menu').on('show.bs.collapse', function () { 525 $(this).removeClass("navbar-fixed-top").addClass("navbar-static-top"); 526 lastScroll = $(window).scrollTop(); 527 $(window).scrollTop(0); 528 }); 529 530 $('#main-menu').on('hide.bs.collapse', function () { 531 $(window).scrollTop(lastScroll); 532 $(this).removeClass("navbar-static-top").addClass("navbar-fixed-top"); 533 }); 534 535 window.fbAsyncInit = function() { 536 FB.Canvas.setAutoGrow(); 537 } 538 539 function sizeChangeCallback() { 540 FB.Canvas.setSize({ width: 520, height: 1400 }); 541 } 542 543 //social tooltip instantiation 544 $('[data-toggle="tooltip"]').tooltip(); 545 546 //share link 547 $(document.body).on("click",".share-link", function(event) { 548 549 var url = $(this).data('item-url'); 550 var title = $(this).data('item-title'); 551 var image = $(this).data('item-image-url'); 552 553 $.getScript( "//s7.addthis.com/js/300/addthis_widget.js#async=1" ) 554 .done(function( script, textStatus ) { 555 addthis.init(); 556 addthis.update('share', 'url', url); 557 addthis.update('share', 'title', title); 558 addthis.update('share', 'description', ""); 559 addthis.update('share', 'image', image) 560 }) 561 .fail(function( jqxhr, settings, exception ) { 562 //do nothing 563 }); 564 }); 565 566 //resize players 567 adjustPlayerWidth(); 568 569 //change profile pic on scroll 570 $(window).scroll(function(){ 571 if($(window).scrollTop() > 225){ 572 $(".profile").addClass('profile-small'); 573 } 574 else{ 575 $(".profile").removeClass('profile-small'); 576 } 577 }); 578 579 // get all premium episodes 580 var show_id = '130324'; 581 var id_prefix = "libsyn-item-"; 582 var episode_ids = new Array(); // For some reason, this line was causing Firefox to become unresponsive. 583 $('.libsyn-item-premium').each(function(index){ 584 var id = $(this).data('id'); 585 episode_ids.push(id); 586 }); 587 588 var episodes = (episode_ids.length > 0) ? episode_ids.join(',') : 0; 589 590 noPremium(); 591 592 //image modal 593 $(document.body).on("click",".image-pop", function() { 594 $('#imagepreview').attr('src', $(this).attr('src')); 595 $('#imagemodal').modal('show'); 596 }); 597 598 599 }); 600 601 if( $('#download_app_div').size() > 0 ){ 602 var isMac = (navigator.platform.indexOf('Mac') != -1); 603 var isIos = !!navigator.platform && (/iPad|iPhone|iPod/.test(navigator.platform) || isMac); 604 605 if(isIos){ 606 $.ajax({ 607 type: 'GET', 608 url: "//my.libsyn.com/app/generate-websuite-plist-url", 609 data: {destination_id: 791135}, 610 dataType: 'jsonp', 611 success:function(json){ 612 console.log(json); 613 if(typeof json.success != "undefined"){ 614 if(json.success){ 615 var plistAnchor = $('<a>').addClass('btn').addClass('btn-default').attr('aria-label','Download iOS App') 616 .attr('href', 'itms-services://?action=download-manifest&url=' + encodeURIComponent(json.plist_url)).append( 617 $('<i>').addClass('fa').addClass('fa-download').addClass('fa-5x') 618 ).append('<div>Download/Install iOS App</div>'); 619 620 $('#download_app_div').empty(); 621 622 if(isMac){ 623 $('#download_app_div').append($('<p>').html('If you are using an iPad, you may install the app below:')); 624 } 625 626 $('#download_app_div').append(plistAnchor); 627 628 } else { 629 $('#download_app_div').empty().html('An error has occurred:' + json.message); 630 } 631 } else { 632 $('#download_app_div').empty().html('An error has occurred'); 633 } 634 }, 635 error:function(xhr, textStatus, errorThrown){ 636 $('#download_app_div').empty().html('An error has occurred: ' + textStatus); 637 } 638 }); 639 } else { 640 $('#download_app_div').empty().html('Sorry, app download is only available for iOS devices.'); 641 } 642 } 643 644 645 var page_filter = 1; 646 var category_filter = ""; 647 var text_filter = ""; 648 var size_filter = "5"; 649 var year_filter = "0"; 650 var month_filter = "0"; 651 var text_posts_only = false;
652 var premium_filter = false; 653 var player_position = "above"; 654 655 //lets create widget bar 656 657 var colWidth = 6; 658 659 function escapeHtml(text) { 660 return text 661 .replace(/&/g, "&") 662 .replace(/</g, "<") 663 .replace(/>/g, ">") 664 .replace(/"/g, """) 665 .replace(/'/g, "'"); 666 } 667 668 //load more on bottom of page 669 $(window).scroll(function () { 670 671 if(!lockScroll){ 672 if ($(window).scrollTop() >= $(document).height() - $(window).height() - 60) { 673 674 lockScroll = true; 675 676 var requestUrl = "https://virtualstack.tech/"; 677 requestUrl += "/page/"+ (page_filter + 1); 678 679 if(text_posts_only){ 680 requestUrl += "/podcast/blog"; 681 } 682 else if(premium_filter){ 683 requestUrl += "/search/is_premium"; 684 } 685 else if(text_filter != ""){ 686 requestUrl += "/search/"+ text_filter; 687 } 688 else if(month_filter != 0) { 689 requestUrl += "/"+ year_filter +"/"+ month_filter; 690 } 691 else if(year_filter != 0) { 692 requestUrl += "/" + year_filter; 693 } 694 else { 695 requestUrl += (category_filter != "" ? "/category/"+category_filter : ""); 696 } 697 698 requestUrl += "/render-type/json"; 699 700 $.ajax({ 701 type: 'GET', 702 url: requestUrl, 703 async: false, 704 success:function(json){ 705 var items = JSON.parse(json); 706 if(items.length > 0){ 707 for(var i = 0; i < items.length; i++){ 708 var item = new Array(); 709 item = items[i]; 710 711 var isTextOnly = typeof item.primary_content == 'undefined'; 712 var isVideo; 713 714 if(isTextOnly){ 715 isVideo = false; 716 } else { 717 isVideo = item.primary_content.file_class == "video"; 718 } 719 720 //create action buttons 721 var actionButtonsRow = '<div class="row">'; 722 if(isTextOnly){ 723 var escapedItemTitle = escapeHtml(item.item_title); 724 actionButtonsRow += '<div class="col-lg-4 col-sm-4 share-div">'; 725 actionButtonsRow += '<a class="share-link" href="" data-image-url="'+ item.image_url +'" data-item-url="'+ item.full_item_url +'" data-item-title="'+ escapedItemTitle +'" data-toggle="modal" data-target="#shareModal">'; 726 actionButtonsRow += '<i class="fa fa-share-alt" title="Share This Episode"></i> Share</a></div>'; 727 } 728 729 730 if(item.display_download_link == true){ 731 if(isTextOnly){ 732 actionButtonsRow += '<div class="col-lg-4 col-sm-4 download-div"><a href="' + item.primary_content.url_secure +'" download><i class="fa fa-download" title="Download This Episode"></i> Download</a></div>'; 733 } 734 } 735 736 if(item.extra_content.length > 0){ 737 for (var x = 0; x < item.extra_content.length; x++) { 738 if(item.extra_content[x].file_class == "pdf"){ 739 var extraContentLabel = item.extra_content[x].content_title !== "" ? item.extra_content[x].content_title : item.extra_content[x].content_type; 740 actionButtonsRow += '<div class="col-lg-4 col-sm-4 download-div"><a href="' + item.extra_content[x].url +'" download><i class="fa fa-download" title="Bonus content"></i> ' + extraContentLabel + '</a></div>'; 741 } else { 742 if(enablePremiumDownload == true){ 743 var extraContentLabel = item.extra_content[x].content_title !== "" ? item.extra_content[x].content_title : item.extra_content[x].content_type; 744 actionButtonsRow += '<div class="col-lg-4 col-sm-4 download-div"><a href="' + item.extra_content[x].url +'" download><i class="fa fa-download" title="Bonus content"></i> ' + extraContentLabel + '</a></div>'; 745 } 746 } 747 748 } 749 } 750 actionButtonsRow += "</div>"; 751 752 753 //begin row 754 html = '<div class="row libsyn-item libsyn' + (isVideo == true ? '-video' : '') + ' libsyn-item-' + item.premium_state + ' libsyn-item-'+ item.item_id +'" data-id="'+ item.item_id +'">'; 755 756 if(isTextOnly){ 757 html += '<div class="col-lg-12" col-md-12 left-side libsyn-item-'+ item.item_id +'">'; 758 html += '<h2 class="section-heading"><a href="'+ item.full_item_url +'">'+ item.item_title +'</a>'; 759 html += '</h2>'; 760 html += '<p class="date">'+ item.release_date +'</p>'; 761 html += '<p class="lead">'+ item.item_body_short +'</p>'; 762 html += '<div class="row"><div class="col-md-12 text-right show_more">'; 763 html += '<a href="'+ item.full_item_url +'">Read More</a></div></div>'; 764 html += actionButtonsRow; 765 html += '</div>'; 766 } else { 767 768 //player 769 var playerSide = '<h2 class="section-heading"><a data-iframe-id="embed_'+item.item_id+'" class="read_more" href="'+item.full_item_url+'">'+item.item_title+'</a>'; 770 playerSide += '</h2>'; 771 if(item.premium_state == "premium" && !premiumAuthorized){ 772 playerSide += '<h3><i class="fa fa-lock"></i> This is a Premium Episode</h3>'; 773 } else { 774 775 if(item.primary_content.file_class == "pdf"){ 776 playerSide += '<a href="' + item.primary_content.url_secure +'" download class="pdf-download"><i class="fa fa-file-pdf-o" title="Download PDF"></i> Download PDF</a>'; 777 } else { 778 playerSide += item.player; 779 } 780 781 playerSide += actionButtonsRow; 782 } 783 784 //description 785 var descriptionSide = '<p class="date">'+item.release_date+'</p>'; 786 descriptionSide += '<p class="lead">'+item.item_body_short+'</p>'; 787 descriptionSide += '<div class="row"><div class="col-md-12 text-right show_more">'; 788 descriptionSide += '<a data-iframe-id="embed_'+item.item_id+'" class="read_more" href="'+item.full_item_url+'">Read More</a></div></div>'; 789 790 html += '<div class="col-lg-'+colWidth+' col-md-'+colWidth+' col-sm-12 left-side">'; 791 html += player_position == "above" ? playerSide : descriptionSide; 792 html += '</div>'; 793 794 html += '<div class="col-lg-'+colWidth+' col-md-'+colWidth+' col-sm-12 right-side">'; 795 html += player_position == "above" ? descriptionSide : playerSide; 796 html += '</div>'; 797 } 798 799 800 html += '</div>'; 801 html += '<hr>'; 802 803 //add to container 804 $(".item-container").append(html); 805 806 } 807 808 page_filter++; 809 adjustPlayerWidth(); 810 lockScroll = false;
811 } else { 812 lockScroll = true; 813 } 814 }, 815 error:function(xhr, textStatus, errorThrown){ 816 console.log(errorThrown); 817 } 818 }); 819 } 820 } 821 }); 822 823 824 $("#btn-send-contact").click(function(event){ 825 event.preventDefault(); 826 827 var error = ""; 828 //validate 829 var valid = true; 830 $('#podcast-page-contact-form').find(':input:not(button)').each(function(){ 831 var name = $(this).attr("name"); 832 var value = $(this).val(); 833 if (typeof name != 'undefined' && value == ""){ 834 valid = false; 835 return false; 836 } 837 }); 838 839 if(valid){ 840 //submit form 841 var datastring = $("#podcast-page-contact-form").serialize(); 842 $.ajax({ 843 type: "POST", 844 url: "https://web-support.libsyn.com/contact/submit", 845 data: datastring, 846 dataType: "json", 847 success: function(data) { 848 if(data == false){ 849 error = "<strong>Error</strong> Your message could not be sent at this time. Please try again later."; 850 $("#podcast-page-contact-form-error").html(error).fadeIn().delay(5000).fadeOut(); 851 } else { 852 $('#podcast-page-contact-form').find(":input").val("").hide(); 853 $('#podcast-page-contact-form').fadeOut(); 854 $("#podcast-page-contact-form-success").show(); 855 } 856 }, 857 error: function() { 858 error = "<strong>Error</strong> Your message could not be sent at this time. Please try again later."; 859 $("#podcast-page-contact-form-error").html(error).fadeIn().delay(5000).fadeOut(); 860 } 861 }); 862 863 } else { 864 error = "<strong>Error</strong> Please fill out all fields and submit again."; 865 $("#podcast-page-contact-form-error").html(error).fadeIn().delay(5000).fadeOut(); 866 return false; 867 } 868 869 }); 870 871 872 873 var playerStatusRequestSent = false; 874 var href = null; 875 /* $(document).on('click', ".read_more", function (e){ 876 var iframeId = $(this).data("iframe-id"); 877 if (document.getElementById(iframeId).contentWindow) { 878 e.preventDefault(); 879 href = $(this).attr("href"); 880 881 var addColon = $("#"+iframeId).attr("src").indexOf(":") == -1 ? ':' : ''; 882 883 var iframeHref = 0 + $("#"+iframeId).attr("src"); 884 var receiver = document.getElementById(iframeId).contentWindow; 885 window.addEventListener('message', receiveMessage); 886 receiver.postMessage('player_status_request', iframeHref); 887 playerStatusRequestSent = true; 888 } 889 }); */ 890 891 function receiveMessage(e) { 892 893 if(playerStatusRequestSent){ 894 try { 895 var playerData = JSON.parse(e.data); 896 if(typeof(playerData.elapsed) != "undefined" && playerData.elapsed != "00:00:00"){ 897 localStorage.setItem(href, JSON.stringify(playerData)); 898 } 899 if(href !== null){ 900 window.location = href; 901 } 902 } catch (e) { 903 return false; 904 } 905 } 906 } 907 908 909 910 </script>
910 911 912</body> 913 914</html> 915
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.