PageSourceSearch

https://virtualstack.tech/

html virtualstack.tech collected 2026-09-30 21:43:08 UTC 46,982 bytes, 915 lines download raw bytes

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&amp;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>&nbsp;</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">&nbsp;</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">&times;</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">&times;</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">&times;</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">&copy; </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, "&amp;")
662          .replace(/</g, "&lt;")
663          .replace(/>/g, "&gt;")
664          .replace(/"/g, "&quot;")
665          .replace(/'/g, "&#039;");
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.