3037 lines
219 KiB
HTML
3037 lines
219 KiB
HTML
<!DOCTYPE html>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<!-- Google Optimize Anti-flicker snippet (recommended) -->
|
||
<style>.async-hide { opacity: 0 !important} </style>
|
||
<style>.promo{background:#222528;position:fixed;z-index:1001!important;left:0;top:0;right:0;max-height:48px;min-height:48px;padding-top:0!important;padding-bottom:0!important}.promo,.promo p{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo p{font-size:.8125rem;line-height:1rem;color:#fff;margin-bottom:0;margin-top:0;margin:0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:700}@media only screen and (max-width:650px){.promo p{font-size:.6875rem}}.promo span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.promo a{color:#fff!important;text-decoration:underline!important}.promo a.btn{background:#d0021b;padding:7px 20px;text-decoration:none!important;font-weight:700;margin-left:10px;margin-right:10px;white-space:nowrap;border-radius:5px}@media only screen and (max-width:650px){.promo a.btn{font-size:.6875rem;padding:7px 10px}}.promo.container{padding-top:8px;padding-bottom:8px}@media only screen and (min-width:1050px){.promo.container{padding-top:0;padding-bottom:0}}.promo .actions{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.promo .actions__left{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo .actions__right{-ms-flex-preferred-size:40px;flex-basis:40px;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.promo.hidden{display:none}.promo.show{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.promo.show .container__inner{-webkit-box-flex:1;-ms-flex:1;flex:1}.promo.fixed{position:fixed}.promo.show+header.header{margin-top:48px}.header{background:#fff;-webkit-box-shadow:0 1px 0 #dde2e5;box-shadow:0 1px 0 #dde2e5}.header .actions__left,.header__bottom__events{max-width:100%!important;margin:0}.header .header__events-all{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.header .header__events-all .header__event-slot{-webkit-box-flex:1;-ms-flex:1 100%;flex:1 100%;border-right:1px solid #dde2e5;margin-top:3px;margin-bottom:3px;padding-left:15px;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:5px;min-width:300px}.header .header__events-all .header__event-slot:hover{text-decoration:none!important}.header .header__events-all .header__event-slot img{min-width:40px;height:40px}.header .header__events-all .header__event-slot div{margin-left:10px}.header .header__events-all .header__event-slot span{font-weight:700!important;font-size:.75rem;margin-bottom:0!important;margin-top:0;display:block;line-height:1.125rem;text-align:left}.header .header__events-all .header__event-slot p{font-weight:400;font-size:.625rem;line-height:130%!important;color:#495057!important;margin:0}@media only screen and (min-width:1050px){.header .header__events-all .header__event-slot p{font-size:.625rem}}.header .header__events-all .header__event-slot:first-child{padding-left:0}.header .header__events-all .header__event-slot:last-child{padding-right:0;border-right:0}@media only screen and (min-width:1050px){.header__bottom,.header__middle,.header__top{position:relative;white-space:nowrap}}.header__top{padding:10px 0}@media only screen and (min-width:800px){.header__top{padding:5px 0}}.header__bottom{padding:5px 0;z-index:29;max-width:100%}.header__bottom a{font-size:.8125rem}.header__bottom .trending{margin-left:0;margin-right:0}.header__bottom .actions{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.header__bottom .actions__left{max-width:calc(100% + 8px)}@media only screen and (min-width:800px){.header__bottom .actions__left{max-width:calc(100% + 24px)}}.header__bottom .actions__right{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:none}@media only screen and (min-width:1050px){.header__bottom .actions__right{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__middle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header__middle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}}.header__top .actions__left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}@media only screen and (min-width:1050px){.header__top .actions__right{max-width:430px}}.no-style.header__nav li:nth-child(3){font-weight:700}.no-style.header__nav li:nth-child(3) a{color:#0e5ef1!important}.header__bottom__events::after{background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),to(#fff));background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff 100%);content:'';position:absolute;height:60px;right:10px;width:25px}@media only screen and (min-width:1050px){.header__bottom__events::after{display:none}}.contribute-link{font-weight:400;font-size:.6875rem;color:#000!important;position:relative;padding-left:10px}.contribute-link:hover{color:#00791d!important;text-decoration:none!important}.contribute-link::before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1);left:-1px}.my-0{margin-top:0!important;margin-bottom:0!important}.header__desc.my-0{margin-left:0}.header__bottom__events .actions__left{max-width:100%!important;overflow-x:scroll;-ms-overflow-style:none;scrollbar-width:none;display:block;scroll-behavior:smooth;min-width:100%}.header__bottom__events .actions__left::-webkit-scrollbar{display:none}.header__bottom__events .actions__left:-webkit-scrollbar-thumb{background:#fff}.logo{line-height:1rem}.header{position:relative;z-index:41;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header .input:focus,.header input[type=password]:focus,.header input[type=text]:focus{border:1px solid #00791d}.header a:not(.button):not(.login__action):not(.active){text-decoration:none;color:#222}.header a:not(.button):not(.login__action):not(.active):hover{text-decoration:underline;color:#222}.header__items{display:none;-ms-flex-wrap:wrap;flex-wrap:wrap}@media only screen and (min-width:1050px){.header__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.header__items nav{position:relative;background:0 0;padding:0;left:0;top:0;line-height:inherit;display:block;-webkit-box-shadow:none;box-shadow:none;max-width:100%;max-height:80px}}.header__items>div{width:100%;margin-bottom:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}@media only screen and (min-width:552px){.header__items>div:not(:nth-last-child(-n+2)){margin-bottom:32px}}@media only screen and (min-width:552px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/2 - (32px - 32px * 1/2));flex-basis:calc(99.7% * 1/2 - (32px - 32px * 1/2));max-width:calc(99.7% * 1/2 - (32px - 32px * 1/2));width:calc(99.7% * 1/2 - (32px - 32px * 1/2))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(2n){margin-right:0;margin-left:auto}}@media only screen and (min-width:800px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/4 - (32px - 32px * 1/4));flex-basis:calc(99.7% * 1/4 - (32px - 32px * 1/4));max-width:calc(99.7% * 1/4 - (32px - 32px * 1/4));width:calc(99.7% * 1/4 - (32px - 32px * 1/4))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(4n){margin-right:0;margin-left:auto}}@media only screen and (min-width:1050px){.header__items>div{margin-bottom:0!important;margin-right:0!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.header__items .language__switcher{display:none}.header__items .language__switcher .li-nav.active>a,.header__items .language__switcher>li.active>a{color:#fff!important}.header__items .language__switcher .li-nav.active>a:hover,.header__items .language__switcher>li.active>a:hover{color:#fff!important;background:#0e5ef1}.header__items .language__switcher .li-nav:hover>a,.header__items .language__switcher>li:hover>a{color:#fff}.header+main{display:block;min-height:210px;-webkit-transition:margin .15s ease;transition:margin .15s ease;margin-top:0!important}.header--hide .header+main{margin-top:50px}.header--hide .header__toggle{opacity:0;top:20px;visibility:hidden}.header--hide .header__logo{max-height:0}.header--hide .header__middle,.header--hide .header__top{max-height:0;overflow:hidden;padding-top:0;padding-bottom:0;border-color:transparent}.header--hide .header__bottom .vue-portal-target{top:3px;right:0;bottom:auto;left:auto;position:absolute}.header__middle,.header__top{-webkit-transition:all .15s ease;transition:all .15s ease}.header__middle{border-bottom:1px solid rgba(0,0,0,.1);z-index:33}.header__middle .vue-portal-target{width:100%}@media only screen and (min-width:1050px){.header__middle .vue-portal-target{display:none}}@media only screen and (min-width:1050px){.header__middle{line-height:5.75rem;text-align:left;padding:0;z-index:30}.header__middle .widget__heading{display:none}}.header__top>.actions__left{display:none}@media only screen and (min-width:1050px){.header__top>.actions__left{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__top>.actions__right{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.header__top>.actions__right .dropdown__holder{width:calc(100vw - 16px);max-height:80vh}@media only screen and (min-width:600px){.header__top>.actions__right .dropdown__holder{width:auto}}.header__top>.actions__right>*{margin:0}.header__top>.actions__right .search{display:none}@media only screen and (min-width:1050px){.header__top>.actions__right>*{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap}.header__top>.actions__right .search{display:block}}.header__top .user__login{display:block}.header__top .user__login>.button,.header__top .user__login>button{border-top-right-radius:0;border-bottom-right-radius:0}@media only screen and (min-width:1050px){.header__top{position:relative;right:auto;width:100%}}.header__logo{max-width:165px;position:absolute;top:8px;overflow:hidden;-webkit-transition:all .1s ease;transition:all .1s ease;z-index:32;line-height:2.25rem;height:36px;width:100px;margin-left:50px;-ms-flex-preferred-size:190px;flex-basis:190px}@media only screen and (min-width:800px){.header__logo{top:4px}}@media only screen and (min-width:1050px){.header__logo{position:relative;top:0;overflow:visible;margin-right:20px;margin-left:0;line-height:3.125rem;height:50px}.header__logo>*{width:165px}}@media only screen and (min-width:1280px){.header__logo{margin-right:30px}}.header__desc,.header__more>button{text-transform:capitalize;color:#666;letter-spacing:0;font-size:0;font-weight:400;line-height:1.5rem;vertical-align:top;font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable","Segoe UI",system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-transition:font-size .15s ease-in-out;transition:font-size .15s ease-in-out}@media only screen and (min-width:1050px){.header__desc,.header__more>button{font-size:.6875rem}}.header__desc{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;width:auto}.header__topics{white-space:nowrap;float:right;position:relative}.header__topics *{display:inline-block;vertical-align:top}.header__topics a{font-size:.8125rem}@media only screen and (min-width:1050px){.header__topics{float:none}}.header__more{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:top}.header__more:before{left:-12px}.header__more:after,.header__more:before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1)}.header__more:after{right:-12px}.header__more:hover{cursor:pointer;color:rgba(0,0,0,.75)}.header__user{display:inline-block;vertical-align:top;white-space:nowrap;margin-left:8px}@media only screen and (min-width:1050px){.header__user{margin-left:0}}.header__user>div{display:inline-block;vertical-align:top}.header__user-nav a:not(.button){text-transform:uppercase;font-size:.75rem;font-weight:600}.header__user-nav a:not(.button):not(.active){opacity:.5}.header__user-nav a:not(.button):not(.active):hover{opacity:.75}.header__user-nav a:not(.button):hover{text-decoration:none}.header__user-nav a:not(.button).active{color:#222;cursor:default;text-decoration:none}.header__user-nav a:not(.button):before{margin-right:0}.header__user-nav a:not(.button):not(:last-child){margin-right:16px}@media only screen and (min-width:1050px){.header__user-nav a:not(.button):not(:last-child){margin-right:32px}}@media only screen and (min-width:1050px){.header__user-nav+.header__topics{margin-left:56px}}.header__search{display:none;vertical-align:top;margin-right:0}@media only screen and (min-width:1050px){.header__search{display:inline-block}}.header__search,.header__user{line-height:inherit}.header__nav{border-bottom:1px solid rgba(0,0,0,.1)}@media only screen and (min-width:800px){.header__nav{border-bottom:0}}.header__nav .button{margin-left:0}.header__nav .button__more{margin-right:20px}.header__nav .li-nav,.header__nav>li{-webkit-transition:all .15s ease;transition:all .15s ease}@media only screen and (min-width:1050px){.header__nav .li-nav,.header__nav>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;position:static;border:none;min-height:65px}.header__nav .li-nav:hover.has--subnav .nav .li-nav,.header__nav .li-nav:hover.has--subnav .nav>li,.header__nav>li:hover.has--subnav .nav .li-nav,.header__nav>li:hover.has--subnav .nav>li{white-space:normal}.header__nav .li-nav:hover.has--subnav .nav__subnav,.header__nav>li:hover.has--subnav .nav__subnav{opacity:1;top:100%;visibility:visible;-webkit-transition-delay:.25s;transition-delay:.25s}.header__nav .li-nav:hover.has--subnav .nav__category,.header__nav>li:hover.has--subnav .nav__category{width:100%}.header__nav .li-nav:hover.has--subnav .nav__category:after,.header__nav .li-nav:hover.has--subnav .nav__category:before,.header__nav>li:hover.has--subnav .nav__category:after,.header__nav>li:hover.has--subnav .nav__category:before{-webkit-transition-delay:.25s;transition-delay:.25s;opacity:1}}@media only screen and (min-width:1080px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1280px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1338px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}.header__nav .li-nav>a,.header__nav>li>a{font-size:.875rem;line-height:1.5rem;padding:12px 0;color:#000;display:inline-block;max-width:100%;position:relative;z-index:61;white-space:normal}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{padding:8px 0 0;font-weight:700}}.header__nav .li-nav>a:after,.header__nav .li-nav>a:before,.header__nav>li>a:after,.header__nav>li>a:before{content:'';position:absolute;bottom:-1px;left:50%;width:0;height:0;opacity:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-style:solid;border-width:0 5px 5px 5px;-webkit-transition:opacity .15s ease-in-out;transition:opacity .15s ease-in-out;border-color:transparent transparent #fff transparent}.header__nav .li-nav>a:before,.header__nav>li>a:before{left:50%;bottom:0;border-width:0 6px 6px 6px;border-color:transparent transparent #f5f7f8 transparent}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1rem}}@media only screen and (min-width:1800px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1.125rem}}.header--open{overflow:hidden}@media only screen and (min-width:600px){.header--open{overflow:visible}}.header--open .content-items{max-height:215px;margin:12px 0 24px}.header--open .search{margin-top:16px;display:block}.header--open .header__toggle:before{z-index:10}.header--open .header__toggle>span:nth-child(1){top:50%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.header--open .header__toggle>span:nth-child(2){opacity:0}.header--open .header__toggle>span:nth-child(3){top:50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.header--open .header__items,.header--open .header__items .language__switcher{display:-webkit-box;display:-ms-flexbox;display:flex}.header--open .header__top{z-index:100;position:absolute;left:0;right:8px;background:#fff}@media only screen and (min-width:800px){.header--open .header__top{right:20px}}.header--open .header__top .search{display:none}.header--open .header__logo{z-index:101}.header--open .header__middle{padding-top:60px}.header--open .header__bottom{display:none}.header--open .header__container{max-height:90vh;overflow-x:hidden;overflow-y:auto}@media only screen and (min-width:1050px){.header--open .header__container{overflow:visible}}.header .subnav{position:absolute;-webkit-box-shadow:0 5px 25px 1px rgba(0,0,0,.15);box-shadow:0 5px 25px 1px rgba(0,0,0,.15);background:#fff;visibility:hidden;line-height:1.75rem;max-width:100%;width:100%;left:0;opacity:0;overflow:hidden;border:1px solid #f5f7f8;border-radius:2px;-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;top:105%;z-index:60;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.header .subnav .subnav__categories{-webkit-box-flex:0;-ms-flex:0 1 280px;flex:0 1 280px;padding:24px 0;background:#f5f7f8;margin-right:0!important}.header .subnav .subnav__categories>li{display:block;font-size:.9375rem;padding:2px 48px 2px 24px}.header .subnav .subnav__categories>li a{display:block;font-weight:700}.header .subnav .subnav__categories>li:hover{background:#e1e1e1}.header .subnav .subnav__heading{margin-bottom:20px}.header .subnav .subnav__content{position:relative;-ms-flex-item-align:start;align-self:flex-start;padding:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header .subnav .subnav__content{padding-left:32px;padding-right:32px;margin:0 auto;-webkit-box-flex:1;-ms-flex:1 1 600px;flex:1 1 600px}}.header .subnav .subnav__content .heading__container{-ms-flex-preferred-size:100%;flex-basis:100%}.header .subnav .subnav__content:before{content:'';position:absolute;left:0;top:0;bottom:-100%;width:1px;background:rgba(0,0,0,.1)}.languagesEdition .active{font-weight:700}.header__more.dropdown:after{content:'';display:inline-block;vertical-align:middle;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background-repeat:no-repeat;background-position:center;margin-bottom:2px;width:7px;height:7px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;background-color:#fff!important;background-size:contain}.header__more.dropdown button{color:#000!important;margin-right:-20px;padding-right:20px;z-index:1000}.header__more.dropdown .dropdown__holder{width:165px}.header__more.dropdown .dropdown__content{padding:13px;padding-top:5px;padding-bottom:5px}.header__more.dropdown .languagesEdition li{border-bottom:1px solid #e6e6e6}.header__more.dropdown .languagesEdition li:last-child{border:0}.logo__data{display:none;color:#666;font-size:.6875rem}@media only screen and (min-width:1050px){.logo__data{display:block;line-height:.8125rem}}.container{padding-left:12px;padding-right:12px;margin:0 auto;min-width:320px;-webkit-transition:padding .15s ease-in-out;transition:padding .15s ease-in-out}@media only screen and (min-width:600px){.container{padding-left:16px;padding-right:16px}}@media only screen and (min-width:800px){.container{padding-left:20px;padding-right:20px}}@media only screen and (min-width:1250px){.container{padding-left:60px;padding-right:60px}}@media only screen and (min-width:1400px){.container{padding-left:20px;padding-right:20px}}.container.white{background:#fff}.container__inner{max-width:1290px;margin:0 auto;-webkit-transition:max-width .15s ease-out;transition:max-width .15s ease-out}.search{display:block;position:relative;z-index:33;width:100%;max-width:100%;margin:0}.search:before{position:absolute;top:50%;right:24px;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin-right:0;z-index:34}.search__bar{display:block;border-radius:2px;position:relative;z-index:33}.search__bar #search{margin-bottom:0;max-width:100%;background:#fff}.search__go{top:50%;right:0;bottom:0;left:auto;position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:32;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:36px;line-height:2.25rem;-webkit-box-shadow:none;box-shadow:none;display:block;background:0 0;border:0;font-size:0}@media only screen and (min-width:600px){.search__go{z-index:35}}.header #search,.search__go:hover{cursor:pointer}.header #search{height:36px;position:relative;max-width:100%;background-color:#f5f7f8!important}@media only screen and (min-width:600px){.header #search{font-size:.8125rem;min-width:165px;max-width:100%;opacity:1}}.header #search:hover{cursor:auto}@media only screen and (min-width:1050px){.header #search{margin-left:auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.header #search:focus{min-width:215px}}.header #search:focus{cursor:auto}.header #search .field__desc{display:none}.header #searchForm{width:100%;margin-top:8px}.header #searchForm:before{right:8px}@media only screen and (min-width:600px){.header #searchForm{margin-top:16px}}@media only screen and (min-width:1050px){.header #searchForm{margin-top:0}}</style>
|
||
<script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
|
||
h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
|
||
(a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
|
||
})(window,document.documentElement,'async-hide','dataLayer',4000,
|
||
{'GTM-W9GJ5DL':true});</script>
|
||
|
||
<script type="text/javascript">
|
||
|
||
var loggedIn = false;
|
||
if (loggedIn) {
|
||
var userCountryId = '';
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
|
||
//CookieControl tool recomendation
|
||
// Call the default command before gtag.js or Tag Manager runs to
|
||
// adjust how the tags operate when they run. Modify the defaults
|
||
// per your business requirements and prior consent granted/denied, e.g.:
|
||
gtag('consent', 'default', {
|
||
'ad_storage': 'denied',
|
||
'ad_user_data': 'denied',
|
||
'ad_personalization': 'denied',
|
||
'analytics_storage': 'denied',
|
||
wait_for_update: 500
|
||
});
|
||
gtag('set', 'ads_data_redaction', true);
|
||
gtag('set', 'url_passthrough', true);
|
||
|
||
if((typeof loggedIn != "undefined") && loggedIn){
|
||
window.dataLayer.push({'logged_in': 'true'});
|
||
} else {
|
||
window.dataLayer.push({'logged_in': 'false'});
|
||
}
|
||
|
||
window.dataLayer.push({'show_queryz': ''});
|
||
|
||
gtag('config', 'G-VMVPD4D2JY');
|
||
</script>
|
||
|
||
<!-- Google Tag Manager -->
|
||
<script>
|
||
var gtmProfile="GTM-W9GJ5DL";
|
||
(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', gtmProfile);</script>
|
||
<!-- End Google Tag Manager -->
|
||
|
||
<title>Tammy Bryant Butow on SRE Apprentices - InfoQ</title>
|
||
<link rel="canonical" href="https://www.infoq.com/podcasts/sre-apprentices/"/>
|
||
<link rel="alternate" href="https://www.infoq.com/podcasts/sre-apprentices/" hreflang="en"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="alternate" href="https://www.infoq.com/podcasts/sre-apprentices/" hreflang="x-default" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta http-equiv="pragma" content="no-cache" />
|
||
<meta http-equiv="cache-control" content="private,no-cache,no-store,must-revalidate" />
|
||
<meta http-equiv="expires" content="0" />
|
||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||
<meta name="copyright" content="© 2006 C4Media" />
|
||
|
||
<meta name="google-site-verification" content="0qInQx_1WYOeIIbxnh7DnXlw1XOxNgAYakO2k4GhNnY" />
|
||
<meta name="msapplication-TileColor" content="#ffffff"/>
|
||
<meta name="msapplication-TileImage" content="/styles/static/images/logo/logo.jpg"/>
|
||
<meta property="wb:webmaster" content="3eac1729a8bbe046" />
|
||
<meta content="width=device-width,initial-scale=1" name="viewport">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=10, IE=edge">
|
||
|
||
|
||
<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style.css"/>
|
||
<link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/print.css"/>
|
||
<link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<link rel="preload" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<link rel="preload" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_extra.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||
<noscript>
|
||
<link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_en.css"/>
|
||
<link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/icons.css">
|
||
<link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/style_extra.css"/>
|
||
</noscript>
|
||
|
||
<link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/fonts/font.css"/>
|
||
|
||
<link rel="shortcut icon" href="https://cdn.infoq.com/statics_s2_20260910111657/favicon.ico" type="image/x-icon" />
|
||
<link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s2_20260910111657/apple-touch-icon.png"/>
|
||
|
||
<script type="text/javascript">
|
||
var device='desktop';
|
||
var InfoQConstants = {};
|
||
InfoQConstants.language = 'en';
|
||
InfoQConstants.countryCode = '';
|
||
|
||
InfoQConstants.pageUrl = (typeof window.location != 'undefined' && window.location && typeof window.location.href != 'undefined' && window.location.href) ? window.location.href : "URL_UNAVAILABLE";
|
||
InfoQConstants.cet='PQus9naak0hv0niW';
|
||
InfoQConstants.userDetectedCountryCode = 'US';
|
||
InfoQConstants.bpadb = 'OkdrOhA8BvInkKBonZb7';
|
||
</script>
|
||
|
||
<script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/combinedJs.min.js"></script>
|
||
<script type="text/javascript">
|
||
|
||
var JSi18n = JSi18n || {}; // define only if not already defined
|
||
JSi18n.error='Error';
|
||
JSi18n.login_unverifiedAccount='Unverified account';
|
||
JSi18n.contentSummary_showPresentations_1='';
|
||
JSi18n.contentSummary_showPresentations_2='';
|
||
JSi18n.contentSummary_showPresentations_3='';
|
||
JSi18n.contentSummary_showInterviews_1='';
|
||
JSi18n.contentSummary_showInterviews_2='';
|
||
JSi18n.contentSummary_showInterviews_3='';
|
||
JSi18n.contentSummary_showMinibooks_1='';
|
||
JSi18n.contentSummary_showMinibooks_2='';
|
||
JSi18n.login_sendingRequest='Sending request ...';
|
||
JSi18n.bookmark_saved='<q> Saved </q>';
|
||
JSi18n.bookmark_error='<q style=color:black;> Error </q>';
|
||
JSi18n.categoryManagement_showpopup_viewAllLink_viewAllPrefix='View All';
|
||
JSi18n.categoryManagement_showpopup_viewAllLink_viewAllSuffix='';
|
||
JSi18n.categoryManagement_showpopup_includeExcludeLink_Exclude='Exclude';
|
||
JSi18n.categoryManagement_showpopup_includeExcludeLink_Include='Include';
|
||
JSi18n.login_invalid_email='Please specify a valid email';
|
||
JSi18n.login_email_not_found = 'No user found with that email';
|
||
JSi18n.content_datetime_format='MMM dd, yyyy';
|
||
|
||
// used by frontend
|
||
JSi18n.FE = {
|
||
labels: {
|
||
follow: "Follow",
|
||
followTopic: "Follow Topic",
|
||
unfollow: "Unfollow",
|
||
unfollowTopic: "Unfollow Topic",
|
||
following: "Following",
|
||
followers: "Followers",
|
||
like: "Like",
|
||
liked: "Liked",
|
||
authors: "Peers",
|
||
users : "Users",
|
||
topics: "Topics",
|
||
hide: "Hide Item",
|
||
hidden: "%s was hidden on your profile page.",
|
||
undo: "Undo",
|
||
showLess: "Show less",
|
||
showMore: "Show more",
|
||
moreAuthors: "And %s more",
|
||
bookmarked: "Content Bookmarked",
|
||
unbookmarked: "Content Unbookmarked",
|
||
characterLimit: "Characters Remaining"
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
var usersInPage = JSON.parse('[{\"id\":\"62671158\",\"ref\":\"author-Monica-Beckwith\",\"url\":\"\/profile\/Monica-Beckwith\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Monica Beckwith\",\"bio\":\"Java Champion, Monica Beckwith is a Java performance engineer. She currently works on improving OpenJDK's HotSpot VM at Microsoft. Her past experiences include working with Arm, Oracle\/Sun and AMD; optimizing the JVM for server class systems. Monica was voted a JavaOne Rock Star speaker and was the performance lead for Garbage First Garbage Collector (G1 GC). You can follow Monica on twitter @mon_beck\",\"followers\":1833,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\"},{\"id\":\"45723890\",\"ref\":\"author-Rags-Srinivas\",\"url\":\"\/profile\/Rags-Srinivas\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Rags Srinivas\",\"bio\":\"Raghavan "Rags" Srinivas (@ragss) works as an Architect\/Developer Evangelist goaled with helping developers build highly scalable and available systems. As an OpenStack advocate and solutions architect at Rackspace he was constantly challenged from low level infrastructure to high level application issues. His general focus area is in distributed systems, with a specialization in Cloud Computing and Big Data. He worked on Hadoop, HBase and NoSQL during its early stages. He has spoken on a variety of technical topics at conferences around the world, written for developer portals, conducted and organized Hands-on Labs and taught graduate and online classes in the evening. Rags brings with him over 25 years of hands-on software development and over 15 years of architecture and technology evangelism experience. He has evangelized and influenced the architecture of a number of emerging technology areas. He is also a repeat JavaOne rock star speaker award winner. Rags holds a Masters degree in Computer Science from the Center of Advanced Computer Studies at the University of Louisiana at Lafayette. He likes to hike, run and generally be outdoors but most of all loves to eat.\",\"followers\":356,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\"},{\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Queue Lead Editor | Domain Architect | Cloud Expert\",\"name\":\"Steef-Jan Wiggers\",\"bio\":\"Steef-Jan Wiggers is one of InfoQ's senior cloud editors and works as a Domain Architect at VGZ in the Netherlands. His current technical expertise focuses on implementing integration platforms, Azure DevOps, AI, and Azure Platform Solution Architectures. Steef-Jan is a regular speaker at conferences and user groups and writes for InfoQ. Furthermore, Microsoft has recognized him as a Microsoft Azure MVP for the past sixteen years.\",\"followers\":895,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpg\"},{\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Laureate Application Architect at Blackbaud\",\"name\":\"Thomas Betts\",\"bio\":\"Thomas Betts is the former Lead Editor for Architecture and Design at InfoQ, a co-host of the InfoQ Podcast, and a Senior Laureate Software Architect at Blackbaud, working on Agents for Good.\\r\\n\\r\\nFor over two decades, his focus has always been on providing software solutions that delight his customers. He has worked in a variety of industries, including social good, retail, finance, health care, defense and travel.\\r\\n\\r\\nThomas lives in Denver with his wife and son, and they love hiking and otherwise exploring beautiful Colorado.\",\"followers\":1171,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.jpg\"},{\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"url\":\"\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Sergio De Simone\",\"bio\":\"<b>Sergio De Simone<\/b> is a software engineer. Sergio has been working as a software engineer for over twenty five years across a range of different projects and companies, including such different work environments as Siemens, HP, and small startups. For the last 10+ years, his focus has been on development for mobile platforms and related technologies. He is currently working for BigML, Inc., where he leads iOS and macOS development.\",\"followers\":777,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\"},{\"id\":\"126467140\",\"ref\":\"author-Renato-Losio\",\"url\":\"\/profile\/Renato-Losio\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Expert | AWS Data Hero \",\"name\":\"Renato Losio\",\"bio\":\"Renato has extensive experience as a cloud architect, advisor, and cloud services specialist. Currently, he lives in Berlin and works remotely as a principal cloud architect. His primary areas of interest include cloud services and relational databases. He is an editor at InfoQ and a recognized AWS Data Hero. You can connect with him on LinkedIn.\",\"followers\":913,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/ptroF8HdI2vWXm0NDaKeS0JdiPxMOAra.jpg\"},{\"id\":\"126464202\",\"ref\":\"author-Johan-Janssen\",\"url\":\"\/profile\/Johan-Janssen\",\"followedByCurrentUser\":false,\"minibio\":\"Architect at ASML\",\"name\":\"Johan Janssen\",\"bio\":\"Architect at ASML, loves to share knowledge mainly around Java. Spoke at conferences such as Devoxx, Oracle Code One, Devnexus, and many more. Assisted conferences by participating in program committees and invented and organized JVMCON. Received the JavaOne Rock Star and Oracle Code One Star awards. Wrote various articles both for digital and printed media. Maintainer of various Java JDK\/JRE packages for Chocolatey with around 100 thousand downloads a month.\",\"followers\":536,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/Fb4eZ0mtvMf6MhsmBIhsUVueV4xAs2FD.jpg\"},{\"id\":\"39485652\",\"ref\":\"author-Daniel-Bryant\",\"url\":\"\/profile\/Daniel-Bryant\",\"followedByCurrentUser\":false,\"minibio\":\"InfoQ News Manager | Building Platforms at Syntasso\",\"name\":\"Daniel Bryant\",\"bio\":\"Daniel Bryant is the news manager at InfoQ and the emeritus chair of QCon London. He is also a platform engineer and head of product marketing at Syntasso. Daniel's technical expertise focuses on \u2018DevOps\u2019 tooling, cloud\/container platforms, and microservice implementations. He is a long-time coder and Java Champion who has contributed to several open source projects. Daniel also writes for InfoQ, O\u2019Reilly, and The New Stack and regularly presents at international conferences such as KubeCon, QCon, and JavaOne. In his copious amounts of free time, he enjoys running, reading, and travelling.\",\"followers\":2751,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/tSe5dczMaSGtRUm18VkTR2tcF4W3SogA.jpg\"},{\"id\":\"63268344\",\"ref\":\"author-Chris-Swan\",\"url\":\"\/profile\/Chris-Swan\",\"followedByCurrentUser\":false,\"minibio\":\"Engineer, Atsign\",\"name\":\"Chris Swan\",\"bio\":\"Chris Swan is an Engineer at <a href=\\\"https:\/\/atsign.com\\\" rel=\\\"nofollow\\\">Atsign<\/a>, building the atPlatform, a technology that is putting people in control of their data and removing the frictions and surveillance associated with today\u2019s Internet. He was previously a Fellow at DXC Technology where he held various CTO roles. Before that he held CTO and Director of R&D roles at Cohesive Networks, UBS, Capital SCF and Credit Suisse, where he worked on app servers, compute grids, security, mobile, cloud, networking and containers. Chris co-hosts the <a href=\\\"https:\/\/techdebtburndown.com\/\\\" rel=\\\"nofollow\\\">Tech Debt Burndown Podcast<\/a> and is a Dart Google Developer Expert (<a href=\\\"https:\/\/developers.google.com\/community\/experts\\\" rel=\\\"nofollow\\\">GDE<\/a>).\",\"followers\":1873,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\"},{\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"minibio\":\"Full-Stack Java Developer\",\"name\":\"Karsten Silz\",\"bio\":\"Karsten Silz has worked as a full-stack Java developer for 26 years in Europe and the US. In 2004, he co-founded a software product start-up in the US. Karsten led product development for 13 years and left after the company was sold successfully. Since 2003, he has also worked as a contractor. He co-founded the SaaS start-up "Your Home in Good Hands" as CTO in the UK in 2020.\",\"followers\":399,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\"},{\"id\":\"343314\",\"ref\":\"author-Jonathan-Allen\",\"url\":\"\/profile\/Jonathan-Allen\",\"followedByCurrentUser\":false,\"minibio\":\"Software Architect\",\"name\":\"Jonathan Allen\",\"bio\":\"Jonathan Allen got his start working on MIS projects for a health clinic in the late 90's, bringing them up from Access and Excel to an enterprise solution by degrees. After spending five years writing automated trading systems for the financial sector, he became a consultant on a variety of projects including the UI for a robotic warehouse, the middle tier for cancer research software, and the big data needs of a major real estate insurance company. In his free time he enjoys studying and writing about martial arts from the 16th century.\\r\\n\",\"followers\":1833,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\"},{\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Technical Staff Member, IBM\",\"name\":\"Holly Cummins\",\"bio\":\"Holly Cummins is a Senior Principal Software Engineer on the Red Hat Quarkus team. Before joining Red Hat, Holly was a long time IBMer. In her time at IBM, Holly has been a full-stack javascript developer, a WebSphere Liberty build architect, a client-facing consultant, a JVM performance engineer, and an innovation leader. During her time in the IBM Garage, Holly led projects for enormous banks, tiny startups, and everything in between. Holly has used the power of cloud to understand climate risks, count fish, help a blind athlete run ultra-marathons in the desert solo, and invent stories (although not at all the same time). Holly is also a Java Champion, author, and regular keynote speaker. You can follow her on bluesky at @@hollycummins.com or at hollycummins.com.\\r\\n\\r\\n\\r\\nBefore joining IBM, Holly completed a PhD in Quantum Computation.\\r\\n\",\"followers\":615,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20260910111657\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\"},{\"id\":\"126572501\",\"ref\":\"author-Tammy-Bryant-Butow\",\"url\":\"\/profile\/Tammy-Bryant-Butow\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Tammy Bryant Butow\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"}]');
|
||
|
||
|
||
|
||
|
||
var topicsInPage = JSON.parse('[{\"name\":\"Architecture & Design\",\"id\":\"6816\",\"url\":\"\/architecture-design\",\"followers\":10383,\"followedByCurrentUser\":false},{\"name\":\"Culture & Methods\",\"id\":\"6817\",\"url\":\"\/culture-methods\",\"followers\":3994,\"followedByCurrentUser\":false},{\"name\":\"Agile\",\"id\":\"3\",\"url\":\"\/agile\",\"followers\":1053,\"followedByCurrentUser\":false},{\"name\":\".NET Core\",\"id\":\"15683\",\"url\":\"\/Net-Core\",\"followers\":8030,\"followedByCurrentUser\":false},{\"name\":\"The InfoQ Podcast\",\"id\":\"16964\",\"url\":\"\/the-infoq-podcast\",\"followers\":126,\"followedByCurrentUser\":false},{\"name\":\"InfoQ\",\"id\":\"134\",\"url\":\"\/InfoQ\",\"followers\":95,\"followedByCurrentUser\":false},{\"name\":\"Machine Learning\",\"id\":\"5449\",\"url\":\"\/MachineLearning\",\"followers\":14751,\"followedByCurrentUser\":false},{\"name\":\"Microservices\",\"id\":\"15274\",\"url\":\"\/microservices\",\"followers\":22348,\"followedByCurrentUser\":false},{\"name\":\"Training \/ Certification\",\"id\":\"366\",\"url\":\"\/posts-about-training-certification\",\"followers\":15,\"followedByCurrentUser\":false},{\"name\":\"Coaching and Mentoring\",\"id\":\"50\",\"url\":\"\/coaching_mentoring\",\"followers\":30,\"followedByCurrentUser\":false},{\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\",\"url\":\"\/ai-ml-data-eng\",\"followers\":6077,\"followedByCurrentUser\":false},{\"name\":\"Java9\",\"id\":\"7097\",\"url\":\"\/Java9\",\"followers\":5540,\"followedByCurrentUser\":false},{\"name\":\"DevOps\",\"id\":\"6043\",\"url\":\"\/Devops\",\"followers\":5131,\"followedByCurrentUser\":false},{\"name\":\"Reactive Programming\",\"id\":\"15453\",\"url\":\"\/reactive-programming\",\"followers\":12430,\"followedByCurrentUser\":false},{\"name\":\"Site Reliability Engineering\",\"id\":\"17182\",\"url\":\"\/sre\",\"followers\":82,\"followedByCurrentUser\":false},{\"name\":\"Development\",\"id\":\"6815\",\"url\":\"\/development\",\"followers\":4154,\"followedByCurrentUser\":false}]');
|
||
|
||
|
||
var userContentLikesInPage = [];
|
||
var userCommentsLikesInPage = [];
|
||
|
||
|
||
var currentUserId = 2;
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<!-- Latest Version -->
|
||
<script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js" type="text/javascript"></script>
|
||
<script>
|
||
const config = {
|
||
apiKey: '8910ea974a96ffb6f927952b4ae9b9b0cc3e5973',
|
||
product: 'PRO_MULTISITE',
|
||
|
||
// general settings
|
||
consentCookieExpiry: 90,
|
||
encodeCookie: true,
|
||
sameSiteCookie: true, // if false, cookie set as SameSite=None;secure;
|
||
sameSiteValue: ';secure', // either 'Strict', 'Lax', or 'None'
|
||
subDomains: true,
|
||
initialState: 'notify', // 'notify','top','box' require pro licence
|
||
notifyOnce: false,
|
||
setInnerHTML: true,
|
||
|
||
//layout settings
|
||
layout: 'slideout',
|
||
position: 'left',
|
||
theme: 'light',
|
||
acceptButton: true,
|
||
rejectButton: true,
|
||
closeOnGlobalChange: true,
|
||
closeStyle: 'icon',
|
||
toggleType: 'slider',
|
||
notifyDismissButton: true,
|
||
settingsStyle: 'link',
|
||
excludedCountries: ['US'],
|
||
|
||
/*accessibility: {
|
||
disableSiteScrolling: true,
|
||
},*/
|
||
|
||
statement: {
|
||
description: 'For more detailed information about the cookies we use, see our',
|
||
name: 'Cookie Policy',
|
||
url: 'https://www.infoq.com/cookie-policy',
|
||
updated: '01/01/2024',
|
||
},
|
||
|
||
// cookies starting from 'cookie_expire' are from live.infoq.com but since we use the same tool on the same domain we need to specify those too so
|
||
// that infoq.com cookieControl does not delete live.infoq.com cookies(also infoq.com cookies have been specified in live.infoq.com cookieControl configs)
|
||
necessaryCookies: ['RegUserCookie', 'UserCookie', 'IdpCookie', 'ConversionTrackingV2_','PSAdialog','*P13NWN*','topbarSurvey','__bkm','JSESSIONID','mp_','_mixpanel','CloudFront-Key-Pair-Id','CloudFront-Policy','CloudFront-Signature','cookie_expire','discount_promo_closed','discount_promo_code','discount_promo_submitted','exit_survey_popup','referrer_popup','voting_popup_*','AWSALB','AWSALBCORS','aws-waf-token','iq_sub_preview'],
|
||
|
||
optionalCookies: [
|
||
{
|
||
name: 'analytics',
|
||
label: 'Analytics',
|
||
description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.',
|
||
cookies: ['_ga', '_ga*', '_gid', '_gat', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'],
|
||
onAccept: function(){
|
||
gtag('consent', 'update', {'analytics_storage': 'granted'});
|
||
},
|
||
onRevoke: function(){
|
||
gtag('consent', 'update', {'analytics_storage': 'denied'});
|
||
}
|
||
},
|
||
{
|
||
name: 'marketing',
|
||
label: 'Advertising',
|
||
description: 'We use advertising cookies to display advertisements to you for our products.',
|
||
onAccept: function(){
|
||
gtag('consent', 'update', {'ad_storage': 'granted', 'ad_personalization': 'granted', 'ad_user_data': 'granted'});
|
||
},
|
||
onRevoke: function(){
|
||
gtag('consent', 'update', {'ad_storage': 'denied', 'ad_personalization': 'denied', 'ad_user_data': 'denied'});
|
||
}
|
||
}
|
||
],
|
||
|
||
text : {
|
||
// main preference panels
|
||
title: '<h3>Our use of cookies</h3>',
|
||
intro: 'We use necessary cookies to make our site work. Functional cookies help enhance the performance and functionality of the site. '+
|
||
'We\'d also like to set analytics cookies to help us improve your experience by measuring how you use the site. '+
|
||
'These will be set only if you accept. ',
|
||
acceptSettings: 'I Accept',
|
||
rejectSettings: 'I Do Not Accept',
|
||
necessaryTitle : '<h3>Necessary Cookies</h3>',
|
||
necessaryDescription : 'Necessary cookies enable core functionality ' +
|
||
'such as page navigation and access to secure areas. '+
|
||
'The website cannot function properly without '+
|
||
'these cookies, and can only be disabled by changing '+
|
||
'your browser preferences.',
|
||
closeLabel: 'Close Cookie Control',
|
||
cornerButton: 'Set cookie preferences',
|
||
// main preference panel controls
|
||
on: 'On',
|
||
off : 'Off',
|
||
thirdPartyTitle : 'Some cookies require your attention',
|
||
thirdPartyDescription : 'Consent for the following cookies could not be '+
|
||
'automatically revoked. Please follow the link(s) '+
|
||
'below to opt out manually.',
|
||
// notification panels (only accessible for pro licences)
|
||
notifyTitle : 'Your choice regarding cookies on this site',
|
||
notifyDescription : 'We use cookies to optimise site functionality and '+
|
||
'give you the best possible experience.',
|
||
accept : 'I Accept',
|
||
reject: 'I Do Not Accept',
|
||
settings : 'Settings',
|
||
},
|
||
branding : {
|
||
removeAbout: true,
|
||
},
|
||
};
|
||
// do not load this for local envs only. for testing on local envs remove/modify this condition
|
||
if(InfoQConstants.pageUrl.indexOf('local')===-1){
|
||
CookieControl.load( config );
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "http://schema.org",
|
||
"@type": "NewsArticle",
|
||
"mainEntityOfPage": {
|
||
"@type": "WebPage",
|
||
"@id": "https://www.infoq.com/podcasts/sre-apprentices/"
|
||
},
|
||
"headline": "Tammy Bryant Butow on SRE Apprentices",
|
||
"image": ["https://res.infoq.com/podcasts/sre-apprentices/en/card_header_image/generatedCard-1631223959265.jpg"
|
||
],
|
||
"datePublished": "2021-09-13T09:00:00+0000",
|
||
"dateModified": "2021-09-13T09:00:00+0000",
|
||
"author": [
|
||
{
|
||
"@type": "Person",
|
||
"name": "Thomas Betts",
|
||
"url": "https://www.infoq.com/profile/Thomas-Betts/"
|
||
}
|
||
],
|
||
"contributor": [
|
||
{
|
||
"@type": "Person",
|
||
"name": "Tammy Bryant Butow",
|
||
"url": "https://www.infoq.com/profile/Tammy-Bryant-Butow/"
|
||
}
|
||
],
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "InfoQ",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "https://assets.infoq.com/resources/en/infoQ-logo-big.jpg"
|
||
}
|
||
},
|
||
"description": "In this episode, the discussion covers a formal SRE Apprenticeship program Tammy Bryant Butow led at DropBox, and gets into ideas about the best way to teach people new technical skills.",
|
||
"audio":
|
||
{
|
||
"@type": "AudioObject",
|
||
"name": "Tammy Bryant Butow on SRE Apprentices",
|
||
"description": "In this episode, the discussion covers a formal SRE Apprenticeship program Tammy Bryant Butow led at DropBox, and gets into ideas about the best way to teach people new technical skills.",
|
||
"uploadDate": "2021-09-13T09:00:00+0000",
|
||
"duration": "30:51",
|
||
"contentUrl": "https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1121951917"
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<meta name="ifq:pageType" content="PODCAST_PAGE"/>
|
||
<script type="text/javascript">
|
||
InfoQConstants.pageType = 'PODCAST_PAGE';
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:type" content="website" />
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:image" content="https://res.infoq.com/podcasts/sre-apprentices/en/headerimage/twitter_card-7-1631223959265.jpg"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="twitter:image" content="https://res.infoq.com/podcasts/sre-apprentices/en/card_header_image/generatedCard-1631223959265.jpg"/>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:title" content="Tammy Bryant Butow on SRE Apprentices "/>
|
||
<meta property="og:description" content="In this episode, Thomas Betts speaks with Tammy Bryant Butow, principal SRE at Gremlin, about training new site reliability engineers. The discussion covers a formal SRE Apprenticeship program Butow led at DropBox, and gets into ideas about the best way to teach people new technical skills." />
|
||
<meta property="og:site_name" content="InfoQ"/>
|
||
<meta property="og:url" content="https://www.infoq.com/podcasts/sre-apprentices/"/>
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:title" content="Tammy Bryant Butow on SRE Apprentices "/>
|
||
<meta name="twitter:description" content="In this episode, Thomas Betts speaks with Tammy Bryant Butow, principal SRE at Gremlin, about training new site reliability engineers. The discussion covers a formal SRE Apprenticeship program Butow led at DropBox, and gets into ideas about the best way to teach people new technical skills." />
|
||
|
||
|
||
<link rel="image_src" href="https://res.infoq.com/podcasts/sre-apprentices/en/headerimage/twitter_card-7-1631223959265.jpg"/>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20260910111657/styles/prism.css"/>
|
||
<meta name="keywords" content="sre apprentices,Architecture & Design,The InfoQ Podcast,Coaching and Mentoring,Site Reliability Engineering,InfoQ,Training / Certification,Agile,"/>
|
||
<meta name="description" content="In this episode, the discussion covers a formal SRE Apprenticeship program Tammy Bryant Butow led at DropBox, and gets into ideas about the best way to teach people new technical skills."/>
|
||
<meta name="tprox" content="1631523600000" />
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/relatedVcr.min.js"></script>
|
||
<script type="application/javascript">
|
||
var communityIds = "2498";
|
||
var topicIds = "5560,47,5774,131,362,3";
|
||
VCR.loadAllVcrs(communityIds, topicIds);
|
||
</script>
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/infoq.js"></script>
|
||
|
||
<script type="text/javascript">
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
if (!window || !window.infoq) return
|
||
infoq.init()
|
||
})
|
||
</script>
|
||
|
||
<script defer data-domain="infoq.com" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.tagged-events.js"></script>
|
||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||
|
||
</head>
|
||
|
||
<body >
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<!-- Google Tag Manager (noscript) -->
|
||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9GJ5DL"
|
||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||
<!-- End Google Tag Manager (noscript) -->
|
||
|
||
<div class="intbt">
|
||
<a href="/int/bt/" title="bt">BT</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
var allCountries = [{"id":3,"name":"Afghanistan"},{"id":244,"name":"Åland"},{"id":6,"name":"Albania"},{"id":61,"name":"Algeria"},{"id":13,"name":"American Samoa"},{"id":1,"name":"Andorra"},{"id":9,"name":"Angola"},{"id":5,"name":"Anguilla"},{"id":11,"name":"Antarctica"},{"id":4,"name":"Antigua and Barbuda"},{"id":12,"name":"Argentina"},{"id":7,"name":"Armenia"},{"id":16,"name":"Aruba"},{"id":15,"name":"Australia"},{"id":14,"name":"Austria"},{"id":17,"name":"Azerbaijan"},{"id":31,"name":"Bahamas"},{"id":24,"name":"Bahrain"},{"id":20,"name":"Bangladesh"},{"id":19,"name":"Barbados"},{"id":35,"name":"Belarus"},{"id":21,"name":"Belgium"},{"id":36,"name":"Belize"},{"id":26,"name":"Benin"},{"id":27,"name":"Bermuda"},{"id":32,"name":"Bhutan"},{"id":29,"name":"Bolivia"},{"id":254,"name":"Bonaire, Sint Eustatius, and Saba"},{"id":18,"name":"Bosnia and Herzegovina"},{"id":34,"name":"Botswana"},{"id":33,"name":"Bouvet Island"},{"id":30,"name":"Brazil"},{"id":104,"name":"British Indian Ocean Territory"},{"id":28,"name":"Brunei Darussalam"},{"id":23,"name":"Bulgaria"},{"id":22,"name":"Burkina Faso"},{"id":25,"name":"Burundi"},{"id":114,"name":"Cambodia"},{"id":46,"name":"Cameroon"},{"id":37,"name":"Canada"},{"id":52,"name":"Cape Verde"},{"id":121,"name":"Cayman Islands"},{"id":40,"name":"Central African Republic"},{"id":207,"name":"Chad"},{"id":45,"name":"Chile"},{"id":47,"name":"China"},{"id":53,"name":"Christmas Island"},{"id":38,"name":"Cocos (Keeling) Islands"},{"id":48,"name":"Colombia"},{"id":116,"name":"Comoros"},{"id":39,"name":"Congo (Democratic Republic)"},{"id":41,"name":"Congo (People\u0027s Republic)"},{"id":44,"name":"Cook Islands"},{"id":49,"name":"Costa Rica"},{"id":43,"name":"Cote D\u0027Ivoire"},{"id":97,"name":"Croatia"},{"id":51,"name":"Cuba"},{"id":253,"name":"Curaçao"},{"id":54,"name":"Cyprus"},{"id":55,"name":"Czech Republic"},{"id":58,"name":"Denmark"},{"id":57,"name":"Djibouti"},{"id":59,"name":"Dominica"},{"id":60,"name":"Dominican Republic"},{"id":213,"name":"East Timor"},{"id":62,"name":"Ecuador"},{"id":64,"name":"Egypt"},{"id":203,"name":"El Salvador"},{"id":87,"name":"Equatorial Guinea"},{"id":66,"name":"Eritrea"},{"id":63,"name":"Estonia"},{"id":68,"name":"Ethiopia"},{"id":72,"name":"Falkland Islands (Malvinas)"},{"id":74,"name":"Faroe Islands"},{"id":71,"name":"Fiji"},{"id":70,"name":"Finland"},{"id":75,"name":"France"},{"id":80,"name":"French Guiana"},{"id":170,"name":"French Polynesia"},{"id":208,"name":"French Southern Territories"},{"id":76,"name":"Gabon"},{"id":84,"name":"Gambia"},{"id":79,"name":"Georgia"},{"id":56,"name":"Germany"},{"id":81,"name":"Ghana"},{"id":82,"name":"Gibraltar"},{"id":88,"name":"Greece"},{"id":83,"name":"Greenland"},{"id":78,"name":"Grenada"},{"id":86,"name":"Guadeloupe"},{"id":91,"name":"Guam"},{"id":90,"name":"Guatemala"},{"id":249,"name":"Guernsey"},{"id":85,"name":"Guinea"},{"id":92,"name":"Guinea-Bissau"},{"id":93,"name":"Guyana"},{"id":98,"name":"Haiti"},{"id":95,"name":"Heard Island and McDonald Islands"},{"id":96,"name":"Honduras"},{"id":94,"name":"Hong Kong"},{"id":99,"name":"Hungary"},{"id":107,"name":"Iceland"},{"id":103,"name":"India"},{"id":100,"name":"Indonesia"},{"id":106,"name":"Iran"},{"id":105,"name":"Iraq"},{"id":101,"name":"Ireland"},{"id":245,"name":"Isle of Man"},{"id":102,"name":"Israel"},{"id":108,"name":"Italy"},{"id":109,"name":"Jamaica"},{"id":111,"name":"Japan"},{"id":250,"name":"Jersey"},{"id":110,"name":"Jordan"},{"id":122,"name":"Kazakhstan"},{"id":112,"name":"Kenya"},{"id":115,"name":"Kiribati"},{"id":243,"name":"Kosovo"},{"id":120,"name":"Kuwait"},{"id":113,"name":"Kyrgyzstan"},{"id":123,"name":"Laos"},{"id":132,"name":"Latvia"},{"id":124,"name":"Lebanon"},{"id":129,"name":"Lesotho"},{"id":128,"name":"Liberia"},{"id":133,"name":"Libya"},{"id":126,"name":"Liechtenstein"},{"id":130,"name":"Lithuania"},{"id":131,"name":"Luxembourg"},{"id":143,"name":"Macau"},{"id":139,"name":"Macedonia"},{"id":137,"name":"Madagascar"},{"id":151,"name":"Malawi"},{"id":153,"name":"Malaysia"},{"id":150,"name":"Maldives"},{"id":140,"name":"Mali"},{"id":148,"name":"Malta"},{"id":138,"name":"Marshall Islands"},{"id":145,"name":"Martinique"},{"id":146,"name":"Mauritania"},{"id":149,"name":"Mauritius"},{"id":238,"name":"Mayotte"},{"id":152,"name":"Mexico"},{"id":73,"name":"Micronesia"},{"id":136,"name":"Moldova"},{"id":135,"name":"Monaco"},{"id":142,"name":"Mongolia"},{"id":246,"name":"Montenegro"},{"id":147,"name":"Montserrat"},{"id":134,"name":"Morocco"},{"id":154,"name":"Mozambique"},{"id":141,"name":"Myanmar"},{"id":155,"name":"Namibia"},{"id":164,"name":"Nauru"},{"id":163,"name":"Nepal"},{"id":161,"name":"Netherlands"},{"id":8,"name":"Netherlands Antilles"},{"id":156,"name":"New Caledonia"},{"id":166,"name":"New Zealand"},{"id":160,"name":"Nicaragua"},{"id":157,"name":"Niger"},{"id":159,"name":"Nigeria"},{"id":165,"name":"Niue"},{"id":158,"name":"Norfolk Island"},{"id":118,"name":"North Korea"},{"id":144,"name":"Northern Mariana Islands"},{"id":162,"name":"Norway"},{"id":167,"name":"Oman"},{"id":173,"name":"Pakistan"},{"id":180,"name":"Palau"},{"id":178,"name":"Palestinian Territory"},{"id":168,"name":"Panama"},{"id":171,"name":"Papua New Guinea"},{"id":181,"name":"Paraguay"},{"id":169,"name":"Peru"},{"id":172,"name":"Philippines"},{"id":176,"name":"Pitcairn"},{"id":174,"name":"Poland"},{"id":179,"name":"Portugal"},{"id":177,"name":"Puerto Rico"},{"id":182,"name":"Qatar"},{"id":183,"name":"Reunion"},{"id":184,"name":"Romania"},{"id":185,"name":"Russian Federation"},{"id":186,"name":"Rwanda"},{"id":193,"name":"Saint Helena"},{"id":117,"name":"Saint Kitts and Nevis"},{"id":125,"name":"Saint Lucia"},{"id":251,"name":"Saint Martin"},{"id":175,"name":"Saint Pierre and Miquelon"},{"id":229,"name":"Saint Vincent and the Grenadines"},{"id":247,"name":"Saint-Barthélemy"},{"id":236,"name":"Samoa"},{"id":198,"name":"San Marino"},{"id":202,"name":"Sao Tome and Principe"},{"id":187,"name":"Saudi Arabia"},{"id":199,"name":"Senegal"},{"id":248,"name":"Serbia"},{"id":189,"name":"Seychelles"},{"id":197,"name":"Sierra Leone"},{"id":192,"name":"Singapore"},{"id":252,"name":"Sint Maarten"},{"id":196,"name":"Slovakia"},{"id":194,"name":"Slovenia"},{"id":188,"name":"Solomon Islands"},{"id":200,"name":"Somalia"},{"id":239,"name":"South Africa"},{"id":89,"name":"South Georgia and the South Sandwich Islands"},{"id":119,"name":"South Korea"},{"id":255,"name":"South Sudan"},{"id":67,"name":"Spain"},{"id":127,"name":"Sri Lanka"},{"id":190,"name":"Sudan"},{"id":201,"name":"Suriname"},{"id":195,"name":"Svalbard and Jan Mayen"},{"id":205,"name":"Swaziland"},{"id":191,"name":"Sweden"},{"id":42,"name":"Switzerland"},{"id":204,"name":"Syria"},{"id":220,"name":"Taiwan"},{"id":211,"name":"Tajikistan"},{"id":221,"name":"Tanzania"},{"id":210,"name":"Thailand"},{"id":209,"name":"Togo"},{"id":212,"name":"Tokelau"},{"id":216,"name":"Tonga"},{"id":218,"name":"Trinidad and Tobago"},{"id":215,"name":"Tunisia"},{"id":217,"name":"Turkey"},{"id":214,"name":"Turkmenistan"},{"id":206,"name":"Turks and Caicos Islands"},{"id":219,"name":"Tuvalu"},{"id":223,"name":"Uganda"},{"id":222,"name":"Ukraine"},{"id":2,"name":"United Arab Emirates"},{"id":77,"name":"United Kingdom"},{"id":224,"name":"United States Minor Outlying Islands"},{"id":226,"name":"Uruguay"},{"id":225,"name":"USA"},{"id":227,"name":"Uzbekistan"},{"id":234,"name":"Vanuatu"},{"id":228,"name":"Vatican City (Holy See)"},{"id":230,"name":"Venezuela"},{"id":233,"name":"Vietnam"},{"id":231,"name":"Virgin Islands (British)"},{"id":232,"name":"Virgin Islands (U.S.)"},{"id":235,"name":"Wallis and Futuna"},{"id":65,"name":"Western Sahara"},{"id":237,"name":"Yemen"},{"id":241,"name":"Zaire"},{"id":240,"name":"Zambia"},{"id":242,"name":"Zimbabwe"}];
|
||
var gdprCountriesIds = [196,194,191,184,179,174,161,148,132,131,130,108,101,99,97,88,77,75,70,67,63,58,56,55,54,37,23,21,14];
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<section data-nosnippet class="section container subscribe-box hidden">
|
||
<div class="container__inner">
|
||
<div class="actions">
|
||
<div class="actions__left">
|
||
<h2>InfoQ Software Architects' Newsletter</h2>
|
||
<span><p>A monthly overview of things you need to know as an architect or aspiring architect.</p>
|
||
|
||
<p><a href="https://www.infoq.com/software-architects-newsletter#placeholderPastIssues">View an example</a></p>
|
||
</span>
|
||
<div class="newsletter__subscribe">
|
||
<form class="form gdpr" name="dataCollectCampaignNewsletterForm" id="dataCollectCampaignNewsletterForm" action="#" onsubmit="dataCollectNewsletter.saveSubscription(); return false;">
|
||
<div class="field newsletter__mail input__text input__no-label input__medium email">
|
||
<label for="email-dataCollectnewsletter-infoq" class="label field__label">Enter your e-mail address</label>
|
||
<input id="email-dataCollectnewsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/>
|
||
<input type="text" name="emailH" id="input_email_h_d" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/>
|
||
<input type="hidden" id="fnt_d" name="fnt_d" value="PQus9naak0hv0niW"/>
|
||
<input type="hidden" id="dataCollectNewsletterType" name="dataCollectNewsletterType" value="regular"/>
|
||
<input type="hidden" id="cmpi_d" name="cmpi_d" value="4"/>
|
||
</div>
|
||
<div class="hidden">
|
||
<span class="input__select field country">
|
||
<label for="input-dataCollect-newsletter-country" class="label field__label">Select your country</label>
|
||
<select id="input-dataCollect-newsletter-country" class="select field__input">
|
||
<option value="" class="select__option">Select a country</option>
|
||
</select>
|
||
<p class="input__message field__desc"></p>
|
||
</span>
|
||
<span class="input__checkbox field hidden">
|
||
<input type="checkbox" id="gdpr-consent-campaign">
|
||
<label for="gdpr-consent-campaign" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label>
|
||
</span>
|
||
</div>
|
||
<input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return dataCollectNewsletter.validateEmail('Invalid email address');"/>
|
||
</form>
|
||
<p class="meta">
|
||
<a href="/privacy-notice/" target="_blank">We protect your privacy.</a>
|
||
</p>
|
||
|
||
<span class="success" style="display:none;" id="dataCollectNewsletterMessage"></span>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="actions__right">
|
||
<button aria-label="Close" class="close closeBox button button__unstyled button__icon icon icon__close-black icon--only">Close</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<script type="text/javascript">
|
||
var dataCollectNewsletter = new Newsletter('Enter your e-mail address',
|
||
'email-dataCollectnewsletter-infoq', 'dataCollectNewsletterType','dataCollectNewsletterMessage', 'fnt_d', 'input_email_h_d', 'input-dataCollect-newsletter-country', 'cmpi_d','popup_all_pages');
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="infoq" id="infoq">
|
||
|
||
<!-- ####### SITE START ######### -->
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<section class="section container promo hidden">
|
||
<div class="container__inner">
|
||
<div class="actions">
|
||
<div class="actions__left">
|
||
<p>
|
||
<span>Live Webinar and Q&A: Beyond the PR: The New Control Plane for Agentic Software Delivery (Sept 17, 2026)</span>
|
||
<a class="btn" href="/url/pb/8005d94e-0ba3-41aa-a1aa-1dc61c00b6f7/" target="_blank" rel="nofollow">
|
||
Save Your Seat
|
||
</a>
|
||
</p>
|
||
</div>
|
||
<div class="actions__right">
|
||
<button aria-label="Close"
|
||
class="close button button__unstyled button__icon icon icon__close-white icon--only close-top-promo">Close
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
<header class="header">
|
||
<button aria-label="Toggle Navigation" tabindex="0" class="burger header__toggle button">Toggle Navigation <span></span><span></span><span></span></button>
|
||
<div class="header__container container">
|
||
<div class="container__inner">
|
||
<div data-nosnippet class="actions header__top">
|
||
<div class="actions__left">
|
||
<p class="header__desc my-0">
|
||
Facilitating the Spread of Knowledge and Innovation in Professional Software Development
|
||
</p>
|
||
<div class="button__dropdown dropdown header__more my-0 dropdown__center">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<button aria-label="English edition" class="button button__unstyled button__small">English edition </button>
|
||
<div class="dropdown__holder">
|
||
<!---->
|
||
<div class="dropdown__content">
|
||
<ul class="no-style dropdown__nav languagesEdition">
|
||
<li class="active"><a href="#" onclick="return false;">English edition</a></li>
|
||
<li><a href="https://www.infoq.cn">Chinese edition</a></li>
|
||
<li><a href="/jp/">Japanese edition</a></li>
|
||
<li><a href="/fr/">French edition</a></li>
|
||
</ul>
|
||
</div>
|
||
<!---->
|
||
</div>
|
||
</div>
|
||
<a class="my-0 contribute-link" role="button" href="/write-for-infoq/" title="Write for InfoQ">
|
||
Write for InfoQ
|
||
</a>
|
||
</div>
|
||
<div class="actions__right">
|
||
<div>
|
||
<form id="searchForm" name="search-form" action="/search.action" enctype="multipart/form-data" class="search icon__search icon icon__green">
|
||
<div class="field search__bar input__text input__no-label input__small">
|
||
<label for="search" class="label field__label">Search</label>
|
||
<input name="queryString" type="text" id="search" value="" placeholder="Search" class="input field__input">
|
||
<input type="hidden" name="page" value="1"/>
|
||
<input type="hidden" size="15" name="searchOrder">
|
||
</div>
|
||
<input value="Search" type="submit" class="search__go">
|
||
</form>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="action_button__group">
|
||
<a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__green button__small">Register</a>
|
||
<a href="/social/keycloakLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__small button__outline">Sign in</a>
|
||
</div>
|
||
|
||
<div class="modal_auth_required">
|
||
<div class="modal_auth_required__actions">
|
||
<h2 class="h2">Unlock the full InfoQ experience</h2>
|
||
<p>Unlock the full InfoQ experience by logging in! Stay updated with your favorite authors and topics, engage with content, and download exclusive resources.</p>
|
||
<a href="/social/keycloakLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__has-transition">Log In</a>
|
||
<div class="separator"><span>or</span></div>
|
||
<h3 class="h3">Don't have an InfoQ account?</h3>
|
||
<a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button__outline button__has-transition">Register</a>
|
||
</div>
|
||
<div class="modal_auth_required__content">
|
||
<ul class="newsletter__features">
|
||
<li><strong>Stay updated on topics and peers that matter to you</strong>Receive instant alerts on the latest insights and trends.</li>
|
||
<li><strong>Quickly access free resources for continuous learning</strong>Minibooks, videos with transcripts, and training materials.</li>
|
||
<li><strong>Save articles and read at anytime</strong>Bookmark articles to read whenever youre ready.</li>
|
||
</ul>
|
||
</div>
|
||
<form id="login-form" data-vv-scope="login" class="login__form form" action="#" data-gtm-form-interact-id="0">
|
||
<input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin">
|
||
<input type="hidden" name="fromP13N" id="isP13n" value="">
|
||
<input type="hidden" name="fromP13NId" id="p13n-id" value="">
|
||
<input type="hidden" name="fromP13NType" id="p13n-type" value="">
|
||
</form>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="header__middle">
|
||
<div class="logo header__logo">
|
||
<a href="/" class="logo__symbol active">
|
||
Logo - Back to homepage
|
||
</a>
|
||
</div>
|
||
|
||
<div class="content-items">
|
||
<a href="/news/" class="icon icon__news">News</a>
|
||
<a href="/articles/" class="icon icon__articles">Articles</a>
|
||
<a href="/presentations/" class="icon icon__presentations">Presentations</a>
|
||
<a href="/podcasts/" class="icon icon__podcasts">Podcasts</a>
|
||
<a href="/minibooks/" class="icon icon__guides">Guides</a>
|
||
</div>
|
||
<div class="header__items columns">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div>
|
||
<h3 class="widget__heading">Topics</h3>
|
||
<nav class="nav header__nav topics" data-trk-ref="header_personas">
|
||
<div class="has--subnav li-nav">
|
||
<a href="/development/" title="Development" class="nav__category">Development</a>
|
||
<div class="nav__subnav subnav">
|
||
<ul class="subnav__categories no-style">
|
||
<li><a href="/java/" title="Java">Java</a></li>
|
||
<li><a href="/kotlin/" title="Kotlin">Kotlin</a></li>
|
||
<li><a href="/dotnet/" title=".Net">.Net</a></li>
|
||
<li><a href="/c_sharp/" title="C#">C#</a></li>
|
||
<li><a href="/swift/" title="Swift">Swift</a></li>
|
||
<li><a href="/golang/" title="Go">Go</a></li>
|
||
<li><a href="/rust/" title="Rust">Rust</a></li>
|
||
<li><a href="/javascript/" title="JavaScript">JavaScript</a></li>
|
||
</ul>
|
||
<div class="subnav__content" data-id="6815">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="heading__container actions">
|
||
<div class="actions__left">
|
||
<h3 class="heading section__heading">Featured in Development</h3>
|
||
</div>
|
||
</div>
|
||
<ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style">
|
||
<li>
|
||
<div class="card__content">
|
||
<div class="card__data">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="card__title">
|
||
<a href="/presentations/solopreneur-journey">A Solopreneur's Journey: From Engineer to Puzzle Master and Storyteller</a>
|
||
</h4>
|
||
<p class="card__excerpt">Joe Cassavaugh shares his journey from software engineer to successful solopreneur with a $2M+ indie franchise. He explains how he scaled production to 10 games in 5 years, adopted Unity to boost velocity 4-6x, optimized content pipelines, and leveraged refactoring patterns. He discusses key trade-offs between corporate engineering and solopreneurship for senior devs and leaders.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/solopreneur-journey" class="card__header">
|
||
<img loading="lazy" alt="A Solopreneur's Journey: From Engineer to Puzzle Master and Storyteller" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/solopreneur-journey/en/smallimage/joe-cassavaugh-thumbnail-1788338336404.jpg" class="card__image"/>
|
||
</a>
|
||
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<a href="/development/" class="button__more button button__large button__arrow arrow__right">All in development</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="has--subnav li-nav">
|
||
<a href="/architecture-design/" title="Architecture & Design" class="nav__category">Architecture & Design</a>
|
||
<div class="nav__subnav subnav">
|
||
<ul class="subnav__categories no-style">
|
||
<li><a href="/architecture/" title="Architecture">Architecture</a></li>
|
||
|
||
<li><a href="/enterprise-architecture/" title="Enterprise Architecture">Enterprise Architecture</a></li>
|
||
<li><a href="/performance-scalability/" title="Scalability/Performance">Scalability/Performance</a></li>
|
||
<li><a href="/design/" title="Design">Design</a></li>
|
||
<li><a href="/Case_Study/" title="Case Studies">Case Studies</a></li>
|
||
<li><a href="/microservices/" title="Microservices">Microservices</a></li>
|
||
<li><a href="/servicemesh/" title="Service Mesh">Service Mesh</a></li>
|
||
<li><a href="/DesignPattern/" title="Patterns">Patterns</a></li>
|
||
<li><a href="/Security/" title="Security">Security</a></li>
|
||
</ul>
|
||
<div class="subnav__content" data-id="6816">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="heading__container actions">
|
||
<div class="actions__left">
|
||
<h3 class="heading section__heading">Featured in Architecture & Design</h3>
|
||
</div>
|
||
</div>
|
||
<ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style">
|
||
<li>
|
||
<div class="card__content">
|
||
<div class="card__data">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="card__title">
|
||
<a href="/minibooks/next-gen-architecture-ai-era">Next-Gen Architecture Playbook: Insights and Patterns for the AI Era</a>
|
||
</h4>
|
||
<p class="card__excerpt">This eMag examines how architects can lead with clarity in a rapidly evolving engineering world, distilling industry insights into field-tested practices for teams. Together, these stories reveal a core theme: the technology leader’s role is expanding from building systems to guiding how tech behaves and learns, while enabling engineers and organizations to bring out their best.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/minibooks/next-gen-architecture-ai-era" class="card__header">
|
||
<img loading="lazy" alt="Next-Gen Architecture Playbook: Insights and Patterns for the AI Era" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/minibooks/next-gen-architecture-ai-era/en/smallimage/thumb-image-emag-next-gen-architecture-playbook-1787922032442.jpg" class="card__image"/>
|
||
</a>
|
||
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<a href="/architecture-design/" class="button__more button button__large button__arrow arrow__right">All in architecture-design</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="has--subnav li-nav">
|
||
<a href="/ai-ml-data-eng/" title="AI Infrastructure" class="nav__category">AI Infrastructure</a>
|
||
<div class="nav__subnav subnav">
|
||
<ul class="subnav__categories no-style">
|
||
<li><a href="/bigdata/" title="Big Data">Big Data</a></li>
|
||
<li><a href="/machinelearning/" title="Machine Learning">Machine Learning</a></li>
|
||
<li><a href="/nosql/" title="NoSQL">NoSQL</a></li>
|
||
<li><a href="/database/" title="Database">Database</a></li>
|
||
<li><a href="/data-analytics/" title="Data Analytics">Data Analytics</a></li>
|
||
<li><a href="/streaming/" title="Streaming">Streaming</a></li>
|
||
</ul>
|
||
<div class="subnav__content" data-id="16690">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="heading__container actions">
|
||
<div class="actions__left">
|
||
<h3 class="heading section__heading">Featured in AI, ML & Data Engineering</h3>
|
||
</div>
|
||
</div>
|
||
<ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style">
|
||
<li>
|
||
<div class="card__content">
|
||
<div class="card__data">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="card__title">
|
||
<a href="/articles/when-spec-driven-development-pays-off">When Spec-Driven Development Pays Off</a>
|
||
</h4>
|
||
<p class="card__excerpt">AI coding assistants have become a core part of software development. AI-generated code has shown productivity gains, but it's also contributing to security weaknesses and familiar bug patterns. In this article, author Nitin Garg highlights the bottleneck has moved from code generation to code verification, and how to detect & mitigate it when the AI-generated behavior diverges from the intent.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/articles/when-spec-driven-development-pays-off" class="card__header">
|
||
<img loading="lazy" alt="When Spec-Driven Development Pays Off" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/when-spec-driven-development-pays-off/en/smallimage/When-Spec-Driven-Development-Pays-Off-thumb-1788790605567.jpg" class="card__image"/>
|
||
</a>
|
||
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<a href="/ai-ml-data-eng/" class="button__more button button__large button__arrow arrow__right">All in ai-ml-data-eng</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="has--subnav li-nav">
|
||
<a href="/culture-methods/" title="Culture & Methods" class="nav__category">Culture & Methods</a>
|
||
<div class="nav__subnav subnav">
|
||
<ul class="subnav__categories no-style">
|
||
<li><a href="/agile/" title="Agile">Agile</a></li>
|
||
<li><a href="/diversity/" title="Diversity">Diversity</a></li>
|
||
<li><a href="/leadership/" title="Leadership">Leadership</a></li>
|
||
<li><a href="/lean/" title="Lean/Kanban">Lean/Kanban</a></li>
|
||
<li><a href="/personal-growth/" title="Personal Growth">Personal Growth</a></li>
|
||
<li><a href="/scrum/" title="Scrum">Scrum</a></li>
|
||
<li><a href="/sociocracy/" title="Sociocracy">Sociocracy</a></li>
|
||
<li><a href="/software_craftsmanship/" title="Software Craftmanship">Software Craftmanship</a></li>
|
||
<li><a href="/team-collaboration/" title="Team Collaboration">Team Collaboration</a></li>
|
||
<li><a href="/testing/" title="Testing">Testing</a></li>
|
||
<li><a href="/ux/" title="UX">UX</a></li>
|
||
</ul>
|
||
<div class="subnav__content" data-id="6817">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="heading__container actions">
|
||
<div class="actions__left">
|
||
<h3 class="heading section__heading">Featured in Culture & Methods</h3>
|
||
</div>
|
||
</div>
|
||
<ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style">
|
||
<li>
|
||
<div class="card__content">
|
||
<div class="card__data">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="card__title">
|
||
<a href="/presentations/rust-refactoring">Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase</a>
|
||
</h4>
|
||
<p class="card__excerpt">Lily Mara explains how to avoid high-risk software rewrites through incremental FFI refactoring. She shares how engineering teams can replace Python bottlenecks with Rust via PyO3, demonstrating how to achieve dramatic function-level speedups, seamless integration testing, and meaningful infrastructure cost savings without microservice overhead.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/rust-refactoring" class="card__header">
|
||
<img loading="lazy" alt="Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/rust-refactoring/en/smallimage/lily-mara-thumbnail-1788338447565.jpeg" class="card__image"/>
|
||
</a>
|
||
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<a href="/culture-methods/" class="button__more button button__large button__arrow arrow__right">All in culture-methods</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="has--subnav li-nav">
|
||
<a href="/devops/" class="nav__category">DevOps</a>
|
||
<div class="nav__subnav subnav">
|
||
<ul class="subnav__categories no-style">
|
||
<li><a href="/infrastructure/" title="Infrastructure">Infrastructure</a></li>
|
||
<li><a href="/continuous_delivery/" title="Continuous Delivery">Continuous Delivery</a></li>
|
||
<li><a href="/automation/" title="Automation">Automation</a></li>
|
||
<li><a href="/containers/" title="Containers">Containers</a></li>
|
||
<li><a href="/cloud-computing/" title="Cloud">Cloud</a></li>
|
||
<li><a href="/observability/" title="Observability">Observability</a></li>
|
||
|
||
</ul>
|
||
<div class="subnav__content" data-id="6043">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="heading__container actions">
|
||
<div class="actions__left">
|
||
<h3 class="heading section__heading">Featured in DevOps</h3>
|
||
</div>
|
||
</div>
|
||
<ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style">
|
||
<li>
|
||
<div class="card__content">
|
||
<div class="card__data">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h4 class="card__title">
|
||
<a href="/presentations/ai-platform-engineering-roundtable">Platform Engineering in the Age of AI</a>
|
||
</h4>
|
||
<p class="card__excerpt">The panelists explain how platform teams adapt to support AI-assisted engineering, highlighting which capabilities belong in the platform. They discuss trade-offs between standardization and developer autonomy, while sharing strategies to manage AI tooling, security guardrails, and shifting workflows.</p>
|
||
<div class="card__footer"></div>
|
||
</div>
|
||
|
||
<a href="/presentations/ai-platform-engineering-roundtable" class="card__header">
|
||
<img loading="lazy" alt="Platform Engineering in the Age of AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/ai-platform-engineering-roundtable/en/smallimage/thumb-1788861349861.jpg" class="card__image"/>
|
||
</a>
|
||
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
<a href="/devops/" class="button__more button button__large button__arrow arrow__right">All in devops</a>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="li-nav">
|
||
|
||
<a rel="noreferrer noopener" href="https://events.infoq.com/" class="nav__category" title="Events" target="_blank">Events</a>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
|
||
<div>
|
||
<h3 class="widget__heading">Helpful links</h3>
|
||
<ul class="no-style header__nav">
|
||
<li>
|
||
<a href="/about-infoq" title="About InfoQ">
|
||
About InfoQ
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="/infoq-editors" title="InfoQ Editors">
|
||
InfoQ Editors
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="/write-for-infoq" title="Write for InfoQ">
|
||
Write for InfoQ
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="https://c4media.com/" target="_blank" title="About C4Media">
|
||
About C4Media
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
<div>
|
||
<h3 class="widget__heading">Choose your language</h3>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="language__switcher no-style">
|
||
<li class="active"><a href="#" onclick="return false;" title="InfoQ English">En</a></li>
|
||
<li><a href="https://www.infoq.cn">中文</a></li>
|
||
<li><a href="/jp/">日本</a></li>
|
||
<li><a href="/fr/">Fr</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
<div data-nosnippet class="actions header__bottom header__bottom__events">
|
||
<div class="actions__left">
|
||
<div class="events-list" role="list" aria-label="Upcoming events">
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-09-14">
|
||
<a class="event-card" href="https://certification.qconferences.com/architecture?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortarchitecture26" target="_blank" rel="noopener noreferrer" aria-label="Online InfoQ Architect Certification, Sep 14, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Sep</span><span>14,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">Architect Certification</p>
|
||
<p class="event-description">Distributed systems, decentralized decisions, platform engineering, and AI architecture. <br/><strong>Online. Register Now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-09-18">
|
||
<a class="event-card" href="https://certification.qconferences.com/ai-assisted-engineering?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortaiassistedengineering26" target="_blank" rel="noopener noreferrer" aria-label="AI-Assisted Engineering Certification, Sep 18, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Sep</span><span>18,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">AI-Assisted Engineering Certification</p>
|
||
<p class="event-description">Your coding agent moves fast. Who checks whether it's making the codebase better? <br/><strong>Online. Register Now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="certification" data-sort-date="2026-10-14">
|
||
<a class="event-card" href="https://certification.qconferences.com/ai-security-privacy?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_onlinecohortaisecurity26" target="_blank" rel="noopener noreferrer" aria-label="Online InfoQ AI Security & Privacy Engineering Certification, August 26, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Oct</span><span>14,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">AI Security & Privacy Engineering Certification</p>
|
||
<p class="event-description">Secure and govern production AI systems, from sensitive data to guardrails, evals, and audits.<br><strong>Online. Register now.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2026-11-16">
|
||
<a class="event-card" href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf26" target="_blank" rel="noopener noreferrer" aria-label="QCon San Francisco, Nov 16-20, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Nov</span><span>16-20,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon San Francisco</p>
|
||
<p class="event-description">What's working across AI, architecture, and leadership, from the teams doing it. <br/><strong>Register. Early bird ends August 11.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2026-12-15">
|
||
<a class="event-card" href="https://newyork.qcon.ai/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qainy26" target="_blank" rel="noopener noreferrer" aria-label="QCon AI New York, December 15-16, 2026">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Dec</span><span>15-16,</span><span>2026</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon AI New York</p>
|
||
<p class="event-description">Production AI across agents, context, evals, security, and infrastructure, from the senior engineers building it.<br/><strong>Registration open.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<div class="event-item" role="listitem" data-event-type="qcon" data-sort-date="2027-04-13">
|
||
<a class="event-card" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qconlondon27" target="_blank" rel="noopener noreferrer" aria-label="QCon London, April 13-16, 2027">
|
||
<div class="event-date">
|
||
<div class="event-date-box" aria-hidden="true"><span>Apr</span><span>13-16,</span><span>2027</span></div>
|
||
</div>
|
||
<div class="event-content">
|
||
<p class="event-title">QCon London</p>
|
||
<p class="event-description">What early-adopter teams have proven in production, across 15 engineering tracks. <br/><strong> Register. Early bird ends August 11.</strong></p>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!---->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
|
||
|
||
<!-- ####### CONTENT START ######### -->
|
||
<main>
|
||
|
||
<article data-type="podcast" class="article">
|
||
<section class="container section white">
|
||
<div class="container__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<p class="crumbs">
|
||
<span data-nosnippet><a href="/" title="InfoQ Homepage">InfoQ Homepage</a></span>
|
||
|
||
|
||
|
||
|
||
<span data-nosnippet><a href="/podcasts" title="Podcasts">Podcasts</a></span>
|
||
|
||
|
||
<span data-nosnippet class="active">Tammy Bryant Butow on SRE Apprentices</span>
|
||
|
||
|
||
|
||
|
||
|
||
</p>
|
||
|
||
<div class="actions">
|
||
<div class="actions__left">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="article__category architecture-design">
|
||
|
||
<a
|
||
|
||
href="/architecture-design/"
|
||
|
||
class="article__tag box--info" title="Architecture & Design">
|
||
|
||
Architecture & Design
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div class="actions__right">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div data-nosnippet class="notice">
|
||
<div class="box--warning">
|
||
<a target="_blank" rel="nofollow" href="https://www.infoq.com/url/t/e62b6ae5-1f0e-4213-a673-9dd537e7ffb5/?label=Harness-EventPromoBox ">Beyond the PR: The New Control Plane for Agentic Software Delivery (Webinar Sept 17th) </a>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="actions heading__container article__heading">
|
||
<div class="actions__left">
|
||
<h1 class="heading">
|
||
Tammy Bryant Butow on SRE Apprentices
|
||
</h1>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
$("#translated_"+InfoQConstants.userDetectedCountryCode.toLowerCase()).show();
|
||
</script>
|
||
|
||
<div class="columns article__explore">
|
||
<div class="article__main" data-col="4/6">
|
||
<div class="article__metadata metadata">
|
||
<p class="article__readTime date">
|
||
Sep 13, 2021
|
||
</p>
|
||
<div class="widget article__authors">
|
||
<div>
|
||
<p class="meta">Podcast with</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="no-style authors">
|
||
|
||
|
||
|
||
|
||
<li data-id="author-Tammy-Bryant-Butow">
|
||
<p class="meta author__bio">
|
||
|
||
<a href="/profile/Tammy-Bryant-Butow/" class="avatar author__avatar" aria-label="Tammy Bryant Butow"></a>
|
||
<span class="author__name">
|
||
<a href="/profile/Tammy-Bryant-Butow/" class="author__link">Tammy Bryant Butow</a>
|
||
</span>
|
||
</p>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<p class="meta">by</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul class="no-style authors">
|
||
|
||
|
||
|
||
|
||
<li data-id="author-Thomas-Betts">
|
||
<p class="meta author__bio">
|
||
|
||
<a href="/profile/Thomas-Betts/" class="avatar author__avatar" aria-label="Thomas Betts"></a>
|
||
<span class="author__name">
|
||
<a href="/profile/Thomas-Betts/" class="author__link">Thomas Betts</a>
|
||
</span>
|
||
</p>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="widgets"></div>
|
||
</div>
|
||
<div class="article__content">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="actions__left actions__sidebar article__actions">
|
||
|
||
<button id="toggleLikeContent" class="icon button button__icon like button__gray icon__like" aria-label="Like">Like</button>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="bookmarkReading">
|
||
<button id="bookmarkBtn" data-ref="bookmarkPage" aria-label="Read later" class="login button__gray button button__icon icon icon__bookmark icon--only"> </button>
|
||
<!-- new dropdown rading list -->
|
||
<div class="my-0 button__dropdown dropdown reading_list dropdown__center" id="showBookmarks">
|
||
<button aria-label="Reading list" class="button button__unstyled button__small"></button>
|
||
<div class="dropdown__holder">
|
||
<div class="dropdown__content">
|
||
<ul class="no-style dropdown__nav">
|
||
<li class="active"><a href="/showbookmarks.action">Reading list</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="toastContainer" class="toast-none toast-hide">
|
||
<div class="toast"><span></span></div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<script type="text/javascript">
|
||
|
||
if(loggedIn){
|
||
$('#showBookmarks').css('display', 'flex');
|
||
}
|
||
|
||
function performBookmark() {
|
||
Bookmarks.toggleBookmark('podcasts', 'sre-apprentices');
|
||
}
|
||
|
||
infoq.event.on('bookmarkRequested', function(e) {
|
||
Bookmarks.toggleBookmark('podcasts', 'sre-apprentices');
|
||
});
|
||
|
||
infoq.event.on("loaded", function(){
|
||
if(loggedIn){
|
||
var href = window.location.href;
|
||
if(href.indexOf("#bookmarkPage") != -1){
|
||
$('#bookmarkBtn').click();
|
||
}
|
||
}
|
||
});
|
||
|
||
$(document).ready(function() {
|
||
if(Bookmarks.isContentBookmarked == 'true'){
|
||
$('#bookmarkBtn').addClass('button__green');
|
||
$('#bookmarkBtn').removeClass('button__gray');
|
||
}else{
|
||
$('#bookmarkBtn').removeClass('button__green');
|
||
$('#bookmarkBtn').addClass('button__gray');
|
||
}
|
||
});
|
||
</script>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="intro article__data">
|
||
<div class="intro__text">
|
||
<p>In this episode, Thomas Betts speaks with Tammy Bryant Butow, principal SRE at Gremlin about training new site reliability engineers. The discussion covers a formal SRE Apprenticeship program Tammy led at DropBox, and gets into ideas about the best way to teach people new technical skills. There are benefits for the trainees, the mentors, and the company, when you put in the effort to create a formal training program.</p>
|
||
|
||
</div>
|
||
<div class="separator separator__three-dots center"></div>
|
||
</div>
|
||
|
||
<div class="article__data">
|
||
<div class="takeaways">
|
||
<h3 class="icon icon__takeaways heading">Key Takeaways</h3>
|
||
<ul dir="ltr">
|
||
<li role="presentation">Hiring new site reliability engineers can be challenging. Dropbox decided to create a program to teach a cohort of students the skills necessary to be successful SREs.</li>
|
||
<li role="presentation">A non-traditional approach to find engineers will naturally lead to a more diverse set of applicants. Bringing in people with different backgrounds can lead to new ways of looking at common problems.</li>
|
||
<li role="presentation">Training should start with small tasks, letting the engineer learn by doing. Gradually these build from one-day tasks to longer, one-week, or one-month projects.</li>
|
||
<li role="presentation">If your company creates a formal training program, it needs to be communicated to everyone, so there is understanding and proper expectations when the apprentices work with other employees.</li>
|
||
<li role="presentation">In any new role, there is a need for understanding how to communicate with other people. Inviting junior employees to meetings allows them to see how senior members of the team interact to solve problems.</li>
|
||
</ul>
|
||
|
||
<div class="separator separator__three-dots center"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="podcast__subscribe__list">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h3>Subscribe on:</h3>
|
||
|
||
<button aria-label="Apple podcasts" class="button button__unstyled button__medium" onclick="window.location.href='https://itunes.apple.com/gb/podcast/the-infoq-podcast/id1106971805?mt=2'">Apple Podcasts</button>
|
||
<button aria-label="Youtube Podcasts" class="button button__unstyled button__medium" onclick="window.location.href='https://youtube.com/playlist?list=PLndbWGuLoHeZLVC9vl0LzLvMWHzpzIpir&si=Kvb9UpSdGzObuWgg'">YouTube</button>
|
||
<button aria-label="Soundcloud" class="button button__unstyled button__medium" onclick="window.location.href='https://soundcloud.com/infoq-channel'">Soundcloud</button>
|
||
<button aria-label="Spotify" class="button button__unstyled button__medium" onclick="window.location.href='https://open.spotify.com/show/4NhWaYYpPWgWRDAOqeRQbj'">Spotify</button>
|
||
<button aria-label="Overcast" class="button button__unstyled button__medium" onclick="window.location.href='https://overcast.fm/itunes1106971805/the-infoq-podcast'">Overcast</button>
|
||
<button aria-label="Podcast Feed" class="button button__unstyled button__medium" onclick="window.open('http://feeds.soundcloud.com/users/soundcloud:users:215740450/sounds.rss','_blank')">Podcast Feed</button>
|
||
|
||
|
||
</div>
|
||
|
||
<script type="text/javascript" src="https://w.soundcloud.com/player/api.js"></script>
|
||
|
||
<iframe title="Tammy Bryant Butow on SRE Apprentices" frameborder="no" height="166" id="player" scrolling="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1121951917&color=1d8042&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false" width="100%"></iframe>
|
||
|
||
|
||
<script type="text/javascript">
|
||
var player = SC.Widget('player');
|
||
var milliseconds = -1;
|
||
|
||
player.bind(SC.Widget.Events.PLAY, function() {
|
||
if (milliseconds >= 0) {
|
||
player.seekTo(milliseconds);
|
||
}
|
||
});
|
||
|
||
seekTo = function(minutes, seconds) {
|
||
milliseconds = ((minutes * 60) + seconds) * 1000;
|
||
|
||
player.isPaused(function isPaused(p) {
|
||
if (p == true) {
|
||
player.play();
|
||
} else {
|
||
player.seekTo(milliseconds);
|
||
}
|
||
});
|
||
}
|
||
</script>
|
||
|
||
<div class="article__data">
|
||
<p> </p>
|
||
|
||
<div class="related__group" style="padding: 12px;margin-bottom: 12px;">
|
||
<h2 style="margin-top: 0;">Sponsored by Curity</h2>
|
||
|
||
<p>Want to ensure your app developers can create secure and smooth login experiences for your customers? With <a href="https://infoq.link/CurityPodcastBox">Curity</a> you can protect user identities, secure apps and websites, and manage API access.</p>
|
||
</div>
|
||
|
||
<h2><strong>Transcript</strong></h2>
|
||
|
||
<h2>Introduction [<a href="javascript:void(0);" onclick="seekTo(00,17)">00:17</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: Hello, and thank you for joining us for another episode of InfoQ Podcast. I'm Thomas Betts, cohost of the podcast, and a senior principal software engineer at Blackbaud. Today, I'm speaking with Tammy Bryant Butow. Tammy is the principal SRE at Gremlin, where she works on chaos engineering, the facilitation of controlled experiments to identify systemic weaknesses. Gremlin helps engineers build resilient systems using their control plan and API. Tammy previously led the SRE teams at Dropbox responsible for databases and storage systems used by over 500 million customers. Prior to this, Tammy worked at Digital Ocean and one of Australia's largest banks in security engineering, product engineering and infrastructure engineering. Tammy is the co-founder of Girl Geek Academy, a movement to teach one million girls technical skills by 2025.</p>
|
||
|
||
<p><b>Thomas Betts</b>: Tammy, welcome to the InfoQ Podcast.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Thanks so much for having me, Thomas. Great to be here.</p>
|
||
|
||
<p><b>Thomas Betts</b>: A few months ago, you spoke at QCon Plus about an SRE apprenticeship program, but I want to set the stage. And first, I think it would be helpful to our listeners to know what do you do at Gremlin? What's the product you work on? What is chaos engineering, as a capital C, capital E product?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>:Gremlin is a chaos engineering service. And as a company, we're on a mission to help build a more reliable internet. I've been at Gremlin for almost four years now, so I joined after I'd worked at Dropbox, which is where we did the SRE apprenticeship program. And at Gremlin, what we've created is a SaaS platform to help engineers safely experiment on complex systems in order to identify weaknesses before they impact customers and cause revenue loss. We're really helping folks prevent catastrophes, avoid huge downtime. Gremlin was founded by our CEO, Kolton Andrus, and our CTO, his nickname is Forni. That was back in 2016.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Since then, we've raised 26.8 million in funding from Redpoint Ventures, Index Ventures and Amplify Partners, and our customers are JPMC, Grubhub, Twilio, Walmart and many more. So it's really exciting to be able to be practicing chaos engineering and working for a chaos engineering company. I've been practicing chaos engineering for over 12 years, so a perfect place for me to work.</p>
|
||
|
||
<h2>SRE apprenticeship program at DropBox [<a href="javascript:void(0);" onclick="seekTo(02,32)">02:32</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: Yes, it sounds like it. Let's move onto, you said, Dropbox is where you had this SRE apprenticeship program. I want to understand, why did you take the effort to make a formal apprenticeship program? What were the goals? And I guess, maybe in your own words, describe what is the role of an SRE you're trying to accomplish with that?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: When I first joined Dropbox, I was the SRE manager initially for the databases team, and they'd ask me can you please look after this team first, which is... Dropbox, at the time, had 200 million customers, 500 petabytes of data, a lot of responsibility there. And the team was very small, so when I first started working at Dropbox the databases team was about four people. And we definitely needed to be able to hire more SREs to work at Dropbox, work on the infrastructure team, but it's very hard to hire SREs. Everyone would know this out there. If you've tried to hire site reliability engineers, it's hard to find them. A lot of the time there's not so many of them, and they work at companies where they're very happy. They're enjoying their work, so it's hard to get them to come in. Hey, what about coming over to work with us?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: We thought, well, instead of trying to poach SREs from other companies, what if we could create more SREs? So I sat down with one of our directors of engineering, his name is Andrew, and we decided to think through how could we create these SREs? First off, we thought, well, what about some type of apprenticeship program? And in my spare time, I've been running a company called, Girl Geek Academy, where we train up girls and women to learn technical skills. And we've had a lot of success there teaching folks how to code, how to use tools, like Raspberry Pi, different types of things like that, 3D printing, all sorts of stuff. Basically, we could teach them anything in a day, and they would be able to just do it.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: We were like you really can teach folks things, if you have a great curriculum and you make sure that you focus on what you want them to learn. And you're very, very clear about that. What the success metrics are. What the goals are for this curriculum and this training program. Using those learnings, we then also thought let's try and take folks who have no experience, at all, and then let's also see are there folks who would like to become SREs? Because a few people had said, "How do I become an SRE, if I'm an engineer already, or if I'm, maybe, a technical program manager?" And so, we made the program open to both types of folks. And that was also a really good experiment to be able to see who thrives? Can this work for both types of different people? And that's originally where the whole idea started.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: We got approval from our VP of infrastructure engineering, and his name's Akhil, really awesome. It was so cool that he was 100% onboard and supportive. And we got approval and everything from the people team. They were super supportive, as well. Obviously, recruiting was very happy to help out with this. And it was just such a cool thing to have support from everyone across the company. We also thought it might help us improve diversity of talent, as well. Actually, we hired two women through the program. Three women, actually, two women of color, as well, so pretty amazing and it was small. The first cohort was actually three women and one guy.</p>
|
||
|
||
<h2>How to train an SRE [<a href="javascript:void(0);" onclick="seekTo(05,51)">05:51</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: And then, what were you seeing as these are the skills of the site reliability engineer. You said you can teach anybody anything, as long as you know what your goals are and you have a good curriculum. What do you see as the actual skills? Because I like the idea that you don't have to have a degree in computer science to be good at SRE, but what does help? Is it a mindset? Is it just skills you need to learn?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes, it's definitely a bunch of different things. It's always interesting too. My background is very traditional. I studied computer science as a bachelor's degree. I did master's degree, as well, later on, after working for several years as an engineer. I didn't come from a non-traditional background. I just did the traditional path straight out of school. I'd been on the internet since '95. I've been building computers for as long as I can remember, making things on the internet. But I really was like there's not so many of us. When I look around, I don't meet many women like me. That's just not normal. I've had three women in my entire degree. My master's degree was even less women. Most of my classes had no women.</p>
|
||
|
||
<p>I knew that really wasn't going to be the best approach, if we wanted to improve diversity, as well. And so, thinking through what do you want folks to be able to do? What are the key critical skills you need to do to be an SRE? A great thing to think about is what do you interview for? You can reverse engineer it like that. At Dropbox, we already had our SRE interview, which was focused on coding, troubleshooting, architecture, communication skills, culture. Those are the five areas that we focused on. So, if you think about it like this, we're going to run an apprenticeship program for six months. And at the end of the six months, we would want these SRE apprentices to be able to pass a regular SRE interview. Is that possible? That's the experiment.</p>
|
||
|
||
<h2>Principal engineers as mentors [<a href="javascript:void(0);" onclick="seekTo(07,38)">07:38</a>]</h2>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: And the apprentices that we ended up hiring, they're on proper great salary, similar to what their co-workers on. They're on the same salaries and everything, but they knew that it was an experiment. You don't have a guaranteed job, it's a six month apprenticeship. And at the end, if you pass the interview, you'll have a job. And so, it was all about that. How can we help them learn the skills that they need to be able to actually be able to pass that interview, and then be able to perform their job. And since that time, it's actually been five years since we've launched the apprenticeship program. I didn't want to speak about it too early, because who knows if it was going to be a success. But since then, all of these folks are still working as engineers doing really great in their careers, have gotten promotions. We've then went on to hire more apprentices after that, so pretty amazing.</p>
|
||
|
||
<p><b>Thomas Betts</b>: I was wondering, did some of the apprentices become teachers for subsequent apprentices?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes. Initially, we didn't want them to feel overloaded with that, because they have a lot to learn still. And honestly, I think it's better to have folks who are principal and staff engineers be the mentors for SRE specifically, because there is just so much to learn. And that's what we did with the initial first batch. Part of the apprenticeship program, one of the most important things is to have this match between a Jedi and a Padawan. You want someone super experienced to match with the Padawan to teach them everything they need to know, and to be this wise person that's going to help them. The idea there too is that, you had to do it in six months.</p>
|
||
|
||
<p>An SRE apprentice that's just graduated could teach someone else to be an SRE apprentice, but it's going to take them way longer. That's not their core knowledge yet, so they helped out a little bit but it wasn't their primary job. Their main goal was to just focus on being the best SRE that they could be.</p>
|
||
|
||
<p><b>Thomas Betts</b>: I think that's also one of those things that defines what principal and senior roles should be. You're not just doing the work, you have this mentoring responsibility. And I think a lot of companies are trying to find informal ways to do mentoring, and it's not often you encounter something that's this formalized, where a dedicated part of your job is training this other person.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes, totally. And I actually way prefer that. One, it's way more rewarding for the principal staff engineer, the senior engineer. They're able to be like our goal is to help you get round up, to help you learn everything you need to be to be an effective member on my team. The other thing too is this person is on your team, so they're doing work that you can assign to them. You're reviewing their code. You're able to help them grow and learn. And that's really cool, because they're an extra person to help you out to hit your milestones. And all of the principal engineers are very, very happy with that. They're like this is great. I can assign them work. They'll come to me and ask me great questions. They are learning a lot from all of the questions they were being asked, as well. And everybody passed the interview.</p>
|
||
|
||
<p>To cut to the end, everyone passed the interview. They did a really great job, and they all were so thankful to their mentors, their senior engineers that helped them on the journey.</p>
|
||
|
||
<p><b>Thomas Betts</b>: I want to pull that thread a little bit. What did the principal engineers learn from the experience? What did they then take back to their job and say, well, I've done the apprenticeship program. Maybe they signed up for another cohort, maybe they went back. But, obviously, I know I learn from trying to explain things to other people. That the act of having to be coherent enough to explain something makes me understand something that much more. Do you find that's same growth happened on both sides, and that the principals were better at their jobs in ways?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes. So many things came out of that for these senior engineers. I'd say one of the main things is they developed rock solid leadership skills. That was huge. They already, obviously, have leadership skills, because they made it to that senior level of engineer. For folks listening, who are already senior, you know what that's like. You need to be able to get into a room with your CTO, with other executives, people from, maybe, other departments, as well, and present a plan. Maybe it's even a two five year transformational journey plan of how you're going to completely transform everything and what that's going to look like. Get buy-in, get head count, all of these things take a lot of leadership skills, but their leadership skills dramatically improved through doing this one-on-one mentoring session for six months, which is pretty amazing.</p>
|
||
|
||
<p>It was, I'd say, like a mini-leadership training, but very dedicated and very focused. And also, all of them got promoted after, as well, which is amazing. Because they just excelled at their work after that, and they did so well that they all got promotions. Which we didn't know that was going to happen, but that did happen.</p>
|
||
|
||
<p><b>Thomas Betts</b>: Yes, the unintended consequences, they're really good to hear.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes.</p>
|
||
|
||
<h2>The importance of visibility [<a href="javascript:void(0);" onclick="seekTo(12,14)">12:14</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: I wonder, did you, for secondary cohorts, did anyone from within the company apply and say, "I want to shift over and be an SRE." Maybe they had been trying to do a little bit of the work, and then said, "I like experimenting and trying this chaos stuff or looking into it." And they said, "I want to go through it, but I need some help."</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes. That even happened, actually, for the first cohort, too. Originally, we were going to just hire external folks. The good thing about having a structured program like this, something more formal, is that you can promote it internally. It's not like secret mentoring that's happening that no one knows about, and that's really important. The reason that it's important is think about it like this. We go up to engineering all hands. Share that we're going to run this apprenticeship program. There's project managers in the room. There's engineering leaders in the room. There's senior engineers. There's junior engineers. Everyone knows about it now, so they're able to tell their friends. We're running this experiment. If you'd like to get involved, let us know if you want to be a mentor, if you want to participate.</p>
|
||
|
||
<p>So we did have one program manager put her hand up, and she was a TPM. He had been working at the company for a few years already and she'd done great work, but she wanted to learn to be an SRE. She was like, "Really, I love seeing what the SREs do. I would like to have that as a job. Can I apply for the program?" And we're like, "Yes, totally. You can interview with everyone else." If you pass the first interview, there was an apprentice interview, which was not as hard as the SRE regular interview, and she passed it so then she was accepted into the program. The other thing too, just to explain, how did folks get promotions from doing this work, these senior engineers? Often people talk about how hard it is to get promoted from the work that you do, but I think a lot of the time is because that work is invisible and that's not good. You need to be able to actually share with people what you're doing.</p>
|
||
|
||
<p>And if you've already got buy-in to run a program. You participate in a program. You've been super open the entire time about the results. People have seen you do that work for six months. That's way better of a story than, "I've been mentoring 10 different people over the last year." And then, "Who are these people? How did you actually help them? What was the result? What did they achieve? Did anything come from it?" There's just no good story there. This program, making it public, inviting folks to participate, sharing the stories during the program, I think that was a way better way to do it.</p>
|
||
|
||
<h2>Apprenticeships vs. internships [<a href="javascript:void(0);" onclick="seekTo(14,36)">14:36</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: Yes. I think a lot of big companies do have a summer internship program and that's the only time. But even then it's sometimes a little squishy. We might have a project that someone can pick up, and we let people run on their own. I always like the end of the summer. Here, we're going to see what these people did. And after 10 weeks, you're like, "Really, in 10 weeks you did all of that? And you had no experience? This is your first time sitting down, hands to keyboard, at a real job, and you're able to produce that." I think back to when I was an intern. I did some stuff, but you're always impressed with what people are able to do. It's just that learning growth opportunity, and then it's displayed publicly for everyone to recognize. This is going on. This is what we recognize in the company.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes, totally. The best things I've seen there, as well as a science fair of intern projects, where every engineer across the company is invited to actually go and see what the interns created. And they have a little table with their computer and they demonstrate it, so definitely recommend doing those things to for regular internship programs. I think the reason that a regular internship program doesn't work as good for SREs is because we have had a few people come through the intern program as SREs, but six months is a really good amount of time to help someone train up and learn about your systems enough. Because it is such a critical role in terms of you're going to want to put these folks on call for production. Can you trust them on call? I don't think I've ever put an intern on call, ever. But the idea is that at the end of this apprenticeship, your SREs would be able to be on call. Because they're trained up and they've passed the interview.</p>
|
||
|
||
<p>And so, that's a big responsibility. I was put on call when I very first started, pretty much on my first week of work graduating straight out of university. But I don't know if that was a great idea, looking back.</p>
|
||
|
||
<p><b>Thomas Betts</b>: Yes. I think on call is one of those things that a lot of companies struggle with, with new employees. Well, you get your feet wet. You jump in the deep end. Whatever metaphor you want to have. But you also, sometimes, are setting people up to fail because you have to have enough of a support net for them to not drown when they jump in the deep end. And the idea of saying to someone, who's only here for 10 weeks for a summer internship, is a lot different than you're here for six months this is for the long haul, and you're hoping to stick around afterwards.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: And that's the thing too. The engineers are going to put in a lot of effort to train these folks up, to teach them about the systems, to help them shadow on call situations, because they know that these folks will want to stick around. Sometimes with an intern, they might come and do their first internship with you, then do another internship somewhere else. They might never return, so it's very different. Also, I come from Australia, where we don't really do internships that much. It's not very common, so not every country does internships like in America. If you're listening in from a different country, and you're like, "What are these 10 week internships? Never heard of it." I hadn't either until I moved to America, so all good there.</p>
|
||
|
||
<h2>Advice for training any co-worker [<a href="javascript:void(0);" onclick="seekTo(17,30)">17:30</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: And it's also very regional. You have to have enough of a university around so that companies can hire, and they know that there's enough people coming in. There's a whole support system that has to be in place for it to exist. I do want to go back. You said something about teaching people on call, and it was shadowing. I think that's a great skill for SREs, but I think there's also something to be said about how do you just teach someone? Because a lot of our listeners are not site reliability engineers. They're developers, programmers, principal engineers, whatever, but they do have some of the mentoring. How do you sit down and teach somebody what you're doing? In most cases, they have coding skills, but how do you teach them here's what's important in our domain? Here's how you do it. Do you just come up with scenarios that you made up for the purpose of training, or is it better to sit down with real world examples and walk them through? Let's solve this problem together.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: I'll break it down in terms of coding projects, and projects where you're building, tooling, automation, and then also on call. So there's two different approaches for those different things. If we're talking about coding projects, then what I really recommend is allowing the apprentices to learn by doing. The important thing there is they should be allocated task work, and it should be broken into, at the start, small bite sized tasks that they can take on. And if you read books, like Accelerate, great book. I was just reading it again recently and wrote up a book review on my medium. If you read Accelerate it says you should make sure if you want to be a high performing technology team that you can do work within less than a week, and you can ship an MVP.</p>
|
||
|
||
<p>That book is very much against the whole idea of doing code for months, and months, and months, and then shipping out a huge big patch of work. And that's not possible in all industries, for example, games. But if you're working in a majority of other types of industries, you can do that. You can break your work down into week long tasks, or less even. What I recommend for apprentices is actually starting off by giving them one day of work. Today, I want you to do this, and you have to do the estimation for them. You have to get to know them. Sometimes you might give them a little bit too much, a little bit too less, but you really need to think through that. How much can my apprentice get done in a day? And then once you feel pretty comfortable you know how much they can do in a day, maybe that's a week worth of one-day tasks. Then the next week, you extend it a little bit more. Give them some two-day tasks, some three-day tasks, and then see how they go with that.</p>
|
||
|
||
<p>Because you're gradually just giving them more space to be able to learn, to grow and encourage them too to not just come to you as their mentor, but to also go to other folks. You don't have to know all of the information. Encourage them to chat to the other apprentices in the program. That's why it's also really good to have a cohort, at the same time. And then ask them to meet other people and other teams. Invite them along to meetings so they can hear how you talk to other people. The other thing we would do for code review. At the start of the program, we didn't do regular code review, where you just submit your code via GitHub and someone reviews it remotely, and then you see the result. It's a little bit too invisible for an apprentice. They don't understand what's happening and they can't ask questions easily, so it's really not a great approach for an apprentice.</p>
|
||
|
||
<p>Great for a senior engineer because you can just keep moving, get feedback quickly, and go on with your day. But it's better to do it in real time with an apprentice. So what we would do is we would pull up their code on the big screen in the office. You can do this on Zoom. Pull up their code, and go through it line by line, and give them feedback, and ask questions, and have a discussion about it. Why did you choose to do this? Why did you choose to do that? Imagine it like if you were doing a coding interview and you're asking someone why they chose to do certain things with their code. That's what we'd do. Then we would give them some tips for how to improve it for performance, or reliability, or security, whatever it was. And then, at the end, they submit that code, so it's actually like a real life code review.</p>
|
||
|
||
<p>That actually worked really well. We didn't do so much pair programming, which I think pair programming is great actually. And I learned to code, definitely, in my early days doing a lot of pair programming. I remember I sat next to this one guy that was an amazing senior engineer, probably, for three months we were working on a project together, and we sat together every day. That as awesome, actually. I learned so much from him, but that's hard to, in this remote world, where people are very busy and going to a lot of meetings. I think these days doing the you write your code, and then let's review it together. That works well.</p>
|
||
|
||
<p><b>Thomas Betts</b>: Yes, especially when I was younger, early in my career. You tend to thrash more. You sit there and are like, "I don't know where to go." Being able to get that quick feedback is like, "I'm just stuck on this. Help me walk through that a little bit," the pair programming helps. And besides, even just a rubber duck, you needed to have someone to talk to and just explain your problem. And so, having someone you know you can always go to, and having that... I like the I can go up to the principal that's my primary mentor, but also I can go sideways to the other apprentices and see, well, you might have something similar, let's talk through this from the same level.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Exactly, exactly. We encourage them to build bridges. That's super important. And that's a great skill for them as they continue in their career. That they can build their own bridges across the organization. They can build relationships. A lot of it also is about teaching them how to communicate with other engineers in different teams. What context do you need to share before you ask for help to solve a problem? That's something that, I think, is really key. But they learn that really fast. You just demonstrate, if you're asking someone to solve a problem, share this information out front. Then give a link to what you want. Then ask them or tell them any urgency related to that, if it's due soon, or something like that. That helps people be able to help you.</p>
|
||
|
||
<h2>The value of being "in the room" [<a href="javascript:void(0);" onclick="seekTo(23,16)">23:16</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: One of the topics we highlighted in this year's InfoQ Software Architecture and Trends Report, or two of them were designing for resilience and designing for observability. I feel like that's right in the sweet spot for site reliability engineering. Software architects, your primary role as an architect is to take in and understand multiple viewpoints. And sometimes you can get a lot of insight from a fresh set of eyes. If you keep talking to the same people over and over again, you hear the same answers. You get someone brand new, like an apprentice coming in, you said you brought them to meetings. Do you think that it's useful to have an apprentice, in a safe situation, talk to the architect, and the architect would benefit from showing them their designs saying, "Where should we improve this? What do you think we need?"</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: We definitely did that, for sure, 100%. We definitely did that for architecture discussions, when we were designing new architecture. Because you want to stick around, so you want to have them in there. Because, eventually, they're going to be contributing to this platform, or software, that you're building out. So when we were designing a new system, maybe, say at the time, we were working on improving our backup system. Invite them into the meeting. Have them see all of the discussions that are happening. See how we love white boarding. I'm a huge fan of white boarding during work hours to be able to explain something. It's because I'm very visual, so it just helps me when someone will white board something and talk through it. And you can do that online these days with tools like Miro, but that helps them learn too how to communicate their ideas.</p>
|
||
|
||
<p>You don't just have to sell your idea by talking about it. You can draw a diagram live. That's even better often than coming in with a pre-prepared diagram. If you can draw it live and explain it to folks, it just helps you communicate what you're trying to talk about. And it gives them a chance to ask questions. It doesn't overload the people that are there, and they learn so many skills from just watching the staff engineers and principal engineers that they can then do that themselves when they are presenting their ideas to get feedback from their engineer that they were matched with. I saw so much great stuff from that. The other thing we invited them to was postmortems. That was really good too, because they could see what happens when something goes wrong. And the VP of infrastructure is in that meeting, and he would talk through things, ask great questions. The engineers on the teams would respond, so the apprentices were always there to be able to observe, and learn and everything.</p>
|
||
|
||
<p>That was awesome too. I ask them afterwards if they enjoyed that, if that was good use of their time. They're like, "Yes, that was so interesting. I learn so much about how all the systems work together." Because in postmortems, we would do a lot of white boarding about dependencies and there would be 20, 30 people in the room, so you just learn a ton in that one hour session.</p>
|
||
|
||
<p><b>Thomas Betts</b>: And then, what's the flip side? If the apprentice sat down in the room, what advice can they give to the architect? The staff engineers? Do they bring that perspective of what's important to me is I need to be able to find out when an incident happens? What's going wrong? And so, does your design account for that SRE viewpoint? Because I think sometimes the SRE is an afterthought, and we're trying to get better at that. It's like we didn't think about making it observable, because no one was in the room. Can the apprentice, brand new, come in and say, "I needed this because this is what's important to my job."</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yes. I would say that would be great if apprentices did that. I think, generally, they often are a bit shy, because they just started. Usually they were more asking questions about how are we building this, or trying to clarify what the architecture looked like. What type of database? Maybe they might ask how are we going to monitor this? What kinds of alerts will be set up for this? More like questions like that, just gaining the basic information about the system. And then understanding how it relates to what we do as SREs, definitely. But I think over the six months they definitely grew, as they got more experience. And that's okay, it takes time to be able to understand things. First, you might go into a room and just be like, "What are they talking about? This sounds like they're from a different planet." That's really what it's like for apprentices.</p>
|
||
|
||
<p>I didn't realize that until we did the program, but just even things like, what is Nginx? How do I even say that word, when I see it written down on a piece of paper? Things like that. People are just like, "What is all this stuff?" There's just all these words that, when you've been an engineer for a long time, you know what everything means, and you understand where it fits in your architecture. But this is so much knowledge to grasp, when you first start out as an apprentice. Yes, that's what I would say. Give them the time to learn, draw them diagrams, help them understand where things fit into the bigger picture. And then they'll start to ask really great questions, and then that will help you improve over time.</p>
|
||
|
||
<h2>Girl Geek Academy and closing [<a href="javascript:void(0);" onclick="seekTo(28,00)">28:00</a>]</h2>
|
||
|
||
<p><b>Thomas Betts</b>: Yes. There's always a learning curve with any industry. I feel I can say software has got more acronyms, but I think you go anywhere, everyone has acronyms, everyone has terms, some that you have to learn by doing, and I'd like that the apprenticeship was a little bit more of an intentional program to say we're going to take the time to teach you these things, and we're going to teach you how to say Nginx. I wanted to wrap up. You've mentioned it briefly, but I was curious more about the Girl Geek Academy and trying to teach women and girls technical skills by 2025. You said it's technical skills. It's not just teach girls coding. How are you doing that? Where is it? And how do people get involved?</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: We have a website, girlgeekacademy.com, and we're also on Twitter at Girl Geek Academy. Mostly, we're just focused in Australia, because I'm Australian, live in America now though. And the Australian government has been very supportive. They gave us over $1 million to be able to do this work, which we've been doing it for several years now. And mostly, we do it through running hackathons. That's actually been really cool. And we do them for different age groups, so we do have a Miss Makes Code, which is about helping young girls learn to code when they're around five to eight years old. And then, as you get older, we teach you, not just coding, but other skills, as well, so a lot of hardware hacking too, which I think is pretty cool. When you think about Raspberry Pi, why was that invented? They really wanted to be able to create a technology that helped get folks curious about how computers work, instead of just learning about software on top of it. Understanding like... And this makes a great computer scientist.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: If you go and go to university, it's really great to understand how things actually work underneath, inside the computer, if you can build your own computer. And we also taught them 3D printing, really anything that they wanted to learn. We would do it off requests. Also, how to build games, because one of our founders actually makes video games. She's won a lot of awards for that her name is Lisy. She works at League of Geeks full-time, a gaming company, been there many years. And we also have a security engineer too, so we teach that too. So lots of different skills, but primarily just for Australia, right now, if you're lucky to be in Australia.</p>
|
||
|
||
<p><b>Thomas Betts</b>: I know we have listeners all around the world, so hopefully someone will hear and maybe be enough to get involved, or have their daughters and other friends go and attend.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Yep, sounds great.</p>
|
||
|
||
<p><b>Thomas Betts</b>: That's about all the time we have for today. I want to thank Tammy Bryant Butow for joining me on the InfoQ Podcast. We hope you'll join us again soon.</p>
|
||
|
||
<p><b>Tammy Bryant Butow</b>: Awesome. Thank you so much for having me.</p>
|
||
|
||
<p><b>Thomas Betts</b>: Thank you, Tammy.</p>
|
||
|
||
<h1 dir="ltr">Mentioned</h1>
|
||
|
||
<ul dir="ltr">
|
||
<li role="presentation"><a href="https://plus.qconferences.com/plus2021/presentation/observing-and-understanding-failures-sre-apprentices">Tammy's QCon Plus Presentation</a></li>
|
||
<li role="presentation"><a href="https://www.infoq.com/articles/training-sre-apprentices/">InfoQ article summarizing the SRE Apprenticeship program</a></li>
|
||
<li role="presentation">Tammy Bryant Butow on twitter:<a href="https://twitter.com/tambryantbutow"> @tambryantbutow</a></li>
|
||
<li><a href="https://tammybutow.medium.com/">Tammy Bryant Butow on Medium</a></li>
|
||
</ul>
|
||
|
||
<h2>About the Guest</h2>
|
||
|
||
<p><strong>Tammy Butow</strong> is the principal SRE at Gremlin, where she works on Chaos Engineering, the facilitation of controlled experiments to identify systemic weaknesses. Gremlin helps engineers build resilient systems using their control plane and API. Tammy previously led SRE teams at Dropbox responsible for databases and storage systems used by over 500 million customers. Prior to this Tammy worked at DigitalOcean and at one of Australia’s largest banks in security engineering, product engineering, and infrastructure engineering. Tammy is the co-founder of Girl Geek Academy, a movement to teach 1 millon girls technical skills by 2025.</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="clear"></div>
|
||
|
||
|
||
<h2><strong>More about our podcasts</strong></h2>
|
||
You can keep up-to-date with the podcasts via our <a href="http://www.infoq.com/podcasts/sre-apprentices/" target="_blank">RSS Feed</a>, and they are available via
|
||
<a href="https://soundcloud.com/infoq-channel" target="_blank">SoundCloud</a>,
|
||
<a href="https://itunes.apple.com/gb/podcast/the-infoq-podcast/id1106971805?mt=2" target="_blank">Apple Podcasts</a>,
|
||
<a href="https://open.spotify.com/show/4NhWaYYpPWgWRDAOqeRQbj" target="_blank">Spotify</a>,
|
||
<a href="https://overcast.fm/itunes1106971805/the-infoq-podcast" target="_blank">Overcast</a>
|
||
and <a href="https://youtube.com/playlist?list=PLndbWGuLoHeZLVC9vl0LzLvMWHzpzIpir&si=Kvb9UpSdGzObuWgg" target="_blank">YouTube</a>.
|
||
From this page you also have access to our recorded show notes. They all have clickable links that will take you directly to that part of the audio.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h2><strong>Previous podcasts</strong></h2>
|
||
|
||
<div class="previousPodcasts">
|
||
|
||
<div class="previousPodcasts__item">
|
||
<a class="previousPodcasts__img" href="/podcasts/evolving-desktop-agentic-ux/">
|
||
<img loading="lazy" _href="img://scott-jenson-interviewee-1787734073812.jpeg" alt="Scott Jenson on Evolving Desktop OS, Local-First, & Agentic UX" src="https://res.infoq.com/podcasts/evolving-desktop-agentic-ux/en/mediumimage/scott-jenson-interviewee-1787734073812.jpeg" />
|
||
</a>
|
||
<p>
|
||
<a href="/podcasts/evolving-desktop-agentic-ux/">
|
||
Scott Jenson on Evolving Desktop OS, Local-First, & Agentic UX
|
||
</a>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="previousPodcasts__item">
|
||
<a class="previousPodcasts__img" href="/podcasts/brownfield-codebases-mob-programming/">
|
||
<img loading="lazy" _href="img://interviewee-1787057874183.jpg" alt="The Human Edge: Why Brownfield Codebases Need Mob Programming, Not Just AI Vibes" src="https://res.infoq.com/podcasts/brownfield-codebases-mob-programming/en/mediumimage/interviewee-1787057874183.jpg" />
|
||
</a>
|
||
<p>
|
||
<a href="/podcasts/brownfield-codebases-mob-programming/">
|
||
The Human Edge: Why Brownfield Codebases Need Mob Programming, Not Just AI Vibes
|
||
</a>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="previousPodcasts__item">
|
||
<a class="previousPodcasts__img" href="/podcasts/agentic-ai-sorcerers-apprentice/">
|
||
<img loading="lazy" _href="img://tracy-bannon-interviewee-1786438364920.jpeg" alt="Will Agentic AI Bring Fantasia’s Sorcerer's Apprentice to Life?: A Conversation with Tracy Bannon" src="https://res.infoq.com/podcasts/agentic-ai-sorcerers-apprentice/en/mediumimage/tracy-bannon-interviewee-1786438364920.jpeg" />
|
||
</a>
|
||
<p>
|
||
<a href="/podcasts/agentic-ai-sorcerers-apprentice/">
|
||
Will Agentic AI Bring Fantasia’s Sorcerer's Apprentice to Life?: A Conversation with Tracy Bannon
|
||
</a>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="previousPodcasts__item">
|
||
<a class="previousPodcasts__img" href="/podcasts/cloud-devops-trends-2026/">
|
||
<img loading="lazy" _href="img://trends-report-podcast-290-210-logo-interviewee-pic-1786096703677.jpg" alt="Cloud and DevOps InfoQ Trends Report 2026: AI, Resilience, Platforms, FinOps, and Sovereignty" src="https://res.infoq.com/podcasts/cloud-devops-trends-2026/en/mediumimage/trends-report-podcast-290-210-logo-interviewee-pic-1786096703677.jpg" />
|
||
</a>
|
||
<p>
|
||
<a href="/podcasts/cloud-devops-trends-2026/">
|
||
Cloud and DevOps InfoQ Trends Report 2026: AI, Resilience, Platforms, FinOps, and Sovereignty
|
||
</a>
|
||
</p>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<input type="hidden" name="" value="Thank you for your review!" id="cr_messages_submitSuccess"/>
|
||
|
||
<input type="hidden" name="" value="Rating is required" id="cr_messages_ratingRequired"/>
|
||
|
||
<input type="hidden" name="" value="Tammy Bryant Butow on SRE Apprentices" id="cr_item_title"/>
|
||
|
||
<input type="hidden" name="" value="Tammy Bryant Butow" id="cr_item_author"/>
|
||
|
||
<input type="hidden" name="" value="http://www.infoq.com/podcasts/sre-apprentices/" id="cr_item_url"/>
|
||
|
||
<input type="hidden" name="" value="podcasts" id="cr_item_ctype"/>
|
||
|
||
<input type="hidden" name="" value="en" id="cr_item_lang"/>
|
||
|
||
<input type="hidden" name="" value="1631523600000" id="cr_item_published_time"/>
|
||
|
||
<input type="hidden" name="" value="2498" id="cr_item_primary_topic"/>
|
||
|
||
<script type="text/javascript">
|
||
ContentRating.readMessages();
|
||
ContentRating.readContentItem();
|
||
</script>
|
||
<form class="box__border box form rate contentRatingWidget">
|
||
<h3 class="heading">Rate this Article</h3>
|
||
<div class="criterias">
|
||
<div class="crit" id="relevance_fieldset">
|
||
<div class="crit__name">Adoption</div>
|
||
<span class="stars">
|
||
<input type="radio" id="relevance-star5" name="rating-relevance" value="5" /><label class="star" for="relevance-star5" title="Innovator"></label>
|
||
<input type="radio" id="relevance-star4" name="rating-relevance" value="4" /><label class="star" for="relevance-star4" title="Early adopter"></label>
|
||
<input type="radio" id="relevance-star3" name="rating-relevance" value="3" /><label class="star" for="relevance-star3" title="Early majority"></label>
|
||
<input type="radio" id="relevance-star2" name="rating-relevance" value="2" /><label class="star" for="relevance-star2" title="Late majority"></label>
|
||
<input type="radio" id="relevance-star1" name="rating-relevance" value="1" /><label class="star" for="relevance-star1" title="Laggards"></label>
|
||
</span>
|
||
<span class="stars__total"></span>
|
||
</div>
|
||
<div class="crit" id="style_fieldset">
|
||
<div class="crit__name">Style</div>
|
||
<span class="stars">
|
||
<input type="radio" id="style-star5" name="rating-style" value="5" /><label class="star" for="style-star5" title="Exceptional"></label>
|
||
<input type="radio" id="style-star4" name="rating-style" value="4" /><label class="star" for="style-star4" title="Good"></label>
|
||
<input type="radio" id="style-star3" name="rating-style" value="3" /><label class="star" for="style-star3" title="Average"></label>
|
||
<input type="radio" id="style-star2" name="rating-style" value="2" /><label class="star" for="style-star2" title="Acceptable"></label>
|
||
<input type="radio" id="style-star1" name="rating-style" value="1" /><label class="star" for="style-star1" title="Poor"></label>
|
||
</span>
|
||
<span class="stars__total"></span>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
<div class="reviews tabs contentRatingWidget">
|
||
<div id="editorReview" class="tab" data-title="Editor Review">
|
||
<form class="box__border form contentRatingWidget" onsubmit="return false;">
|
||
<span class="field input__textarea" aria-required="false">
|
||
<textarea id="editor_input" placeholder="Click to leave your review..." name="textarea" value="" class="field__input"></textarea>
|
||
<p class="input__message field__desc serverCallFeedback"></p>
|
||
</span>
|
||
<input class="button button__large submit_rating" type="submit" value="Submit"/>
|
||
</form>
|
||
</div>
|
||
|
||
<div id="chiefEditorReview" class="tab" data-title="Chief Editor Action">
|
||
<form class="box__border form contentRatingWidget" onsubmit="return false;">
|
||
<span class="field input__textarea">
|
||
<textarea id="chiefEditor_input" placeholder="Chief Editor action..." value="" class="field__input"></textarea>
|
||
<p class="input__message field__desc serverCallFeedback"></p>
|
||
</span>
|
||
|
||
<div class="actions">
|
||
<div class="actions__left">
|
||
<input class="button button__large submit_rating" type="submit" value="Submit"/>
|
||
</div>
|
||
<div class="actions__right">
|
||
<span class="field input__checkbox input--small">
|
||
<input type="checkbox" id="auth-checkbox" />
|
||
<label class="label" for="auth-checkbox"><span></span> Author Contacted</label>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/javascript">
|
||
if (!InfoQConstants.editorUser || InfoQConstants.editorUser == 'false') {
|
||
$('.contentRatingWidget').remove();
|
||
} else {
|
||
|
||
if (InfoQConstants.chiefEditor !== 'undefined' && InfoQConstants.chiefEditor == 'false') {
|
||
$('#chiefEditorReview').remove();
|
||
}
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="widget article__fromTopic topics">
|
||
|
||
<div class="widget__head related__for-topic" data-id="134" data-trk-ref="content_primary_topic">
|
||
<h4 class="heading related__heading">
|
||
|
||
|
||
|
||
This content is in the <a href='/InfoQ/'>InfoQ</a> topic
|
||
</h4>
|
||
</div>
|
||
|
||
<h5 class="heading related__inline">Related Topics:</h5>
|
||
<ul class="no-style topics related__topics topics__small" data-trk-ref="content_related_topic">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="6816">
|
||
<a href="/architecture-design/" class="button related__topic button__small button__black">Architecture & Design</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="16964">
|
||
<a href="/the-infoq-podcast/" class="button related__topic button__small button__black">The InfoQ Podcast</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="50">
|
||
<a href="/coaching_mentoring/" class="button related__topic button__small button__black">Coaching and Mentoring</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="17182">
|
||
<a href="/sre/" class="button related__topic button__small button__black">Site Reliability Engineering</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="134">
|
||
<a href="/InfoQ/" class="button related__topic button__small button__black">InfoQ</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="366">
|
||
<a href="/posts-about-training-certification/" class="button related__topic button__small button__black">Training / Certification</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
<li data-id="3">
|
||
<a href="/agile/" class="button related__topic button__small button__black">Agile</a>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
var uriMapping = "podcasts";
|
||
var showVcr = "false";
|
||
var fillWithVcr = "true";
|
||
var sponsorshipsJson = "{"links":[{"styleName":"pdf","style":"PDF","text":"AI's Physical Constraints: How AI Rewired the Data Center","id":"5a42eb51-987e-4407-bcad-141ac7fe5de5","target":"https://www.infoq.com/vendorcontent/show.action?vcr=7bf8495f-cd88-40d6-92aa-1afa5ad24523&utm_source=infoq&utm_medium=VCR&utm_campaign=vcr_fixed_link","active":true}]}";
|
||
var sponsoredLinks = $.parseJSON($("<div/>").html(sponsorshipsJson).text()).links;
|
||
var numberOfSponsoredVcrIds = sponsoredLinks != null ? sponsoredLinks.length : 0;
|
||
|
||
var maxItems = 5 - numberOfSponsoredVcrIds;
|
||
var displayWidget = false;
|
||
var intervalVcrSponsorEditorial = setInterval(function() {
|
||
if (window.vcrsLoaded) {
|
||
clearInterval(intervalVcrSponsorEditorial);
|
||
if(showVcr || fillWithVcr) {
|
||
if(fillWithVcr) {
|
||
for(var index in window.vcrList) {
|
||
if(VCR.isVcrSponsored(sponsoredLinks, window.vcrList[index])) {
|
||
VCR.addToExcludedList(window.vcrList[index]);
|
||
}
|
||
}
|
||
}
|
||
var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, maxItems, false, null);
|
||
if (vcrs != null && vcrs.length > 0 || (sponsoredLinks != null && sponsoredLinks.length > 0)) {
|
||
VCR.addToExcludedList(vcrs);
|
||
getCommonElements(vcrs, uriMapping, "BOTTOM");
|
||
$('.related__group').find(".rvc__list").css("display", "block");
|
||
displayWidget = true;
|
||
} else {
|
||
$('.related__group').find(".rvc__list").parent("li").remove();
|
||
}
|
||
}
|
||
window.contentVcrFinished = true;
|
||
// search for infoq.event.on("contentVcrFinished",... to see how/where it is used
|
||
infoq.event.trigger("contentVcrFinished");
|
||
}
|
||
}, 200);
|
||
</script>
|
||
<input type="hidden" name="" value="2498" id="cont_item_primary_topic"/>
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
$(document).ready(function() {
|
||
$.ajax({
|
||
url: "/api/recommendationlinks.action",
|
||
contentType: "application/x-www-form-urlencoded; charset=utf-8",
|
||
type: 'POST',
|
||
data: {
|
||
"primaryTopicAlias": "architecture-design",
|
||
"topicIds": "5560,362,47,5774",
|
||
"title": "Tammy Bryant Butow on SRE Apprentices",
|
||
"contentPath": "/podcasts/sre-apprentices",
|
||
"language": "en"
|
||
},
|
||
success: displayRelatedEditorial,
|
||
async: false
|
||
});
|
||
});
|
||
|
||
function displayRelatedEditorial(data) {
|
||
$('.related__editorial h4').text("Related Editorial");
|
||
if (data && data.length > 0) {
|
||
if(data[0].fromEs) {
|
||
//change title and tracking params
|
||
var box_title="Architecture & Design";
|
||
//replace html entity since it conflicts with style
|
||
box_title=box_title.replace("&","&");
|
||
$('.related__editorial h4').text("Popular in " + box_title);
|
||
}
|
||
for (var i = 0; i < data.length; i++) {
|
||
if (i === 5) {
|
||
break;
|
||
}
|
||
if (data[i].url.indexOf("/podcasts/sre-apprentices") !== -1) {
|
||
console.log("Removing the current item from list...");
|
||
continue;
|
||
}
|
||
var theLinkURL = data[i].url;
|
||
if(!theLinkURL.endsWith("/")) {
|
||
theLinkURL = theLinkURL + "/";
|
||
}
|
||
var link = $('<li><h5 class="rvc__title"><a title="" href="' + theLinkURL + '">' + data[i].title + '</a></h5></li>');
|
||
$('.related__editorial ul').append(link);
|
||
}
|
||
$('.related__editorial').show();
|
||
displayWidget = true;
|
||
}else{
|
||
$('.related__editorial').parent("li").remove();
|
||
}
|
||
|
||
if(displayWidget==true){
|
||
$('.related__group').attr("data-cols", $('.related__group').find(">li").length);
|
||
$('.related__group').css("display", "flex");
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<ul class="no-style related__group nocontent cards">
|
||
<li>
|
||
<div class="related__editorial">
|
||
<h4 class="heading">Related Editorial</h4>
|
||
<ul></ul>
|
||
</div>
|
||
</li>
|
||
<li>
|
||
<ul class="no-style rvc__list f_rvcbox" data-place="BOTTOM" data-trk-view="true" data-trk-impr="true"
|
||
|
||
style="display: block"
|
||
|
||
|
||
>
|
||
<h4 class="heading">Related Sponsors</h4>
|
||
|
||
<div class="f_rvcList"></div>
|
||
|
||
|
||
<li>
|
||
<span class="icon rvc__icon icon__small icon__pdf"></span>
|
||
<h5 class="rvc__title">
|
||
|
||
<a href="/url/f/5a42eb51-987e-4407-bcad-141ac7fe5de5/" class="rvc__link" rel="nofollow">
|
||
AI's Physical Constraints: How AI Rewired the Data Center
|
||
</a>
|
||
</h5>
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
<li>
|
||
<div class="related__prsp f_sponsorship" data-place="BOTTOM" data-trk-view="true" data-trk-impr="true" jsh="{"topic":"Architecture & Design","id":"5f8e44ed-ae58-4590-8ecf-745df9f29cbf","title":"Tiger Data Architect Influence Program 08/21/2026 - 11/21/2026"}">
|
||
<h4 class="heading">Related Sponsor</h4>
|
||
|
||
|
||
<a href="/url/f/435e8826-b9fc-463a-9fa3-382ba5389da3/" target="_blank" rel="nofollow">
|
||
<img loading="lazy" src="https://imgopt.infoq.com//fit-in/218x500/filters:quality(100)/filters:no_upscale()/sponsorship/topic/5f8e44ed-ae58-4590-8ecf-745df9f29cbf/TigerDataLogoRSB-1787291605874.png" class="related__img" alt="Related sponsor icon"/>
|
||
</a>
|
||
|
||
|
||
<div class="related__desc">
|
||
<p style="clear: both; padding: 10px 0 0 0;"><b>PostgreSQL Built for Time-Series Scale</b><br />
|
||
Handle massive time-series data with PostgreSQL, without sacrificing performance. Discover how Tiger Data delivers high-speed ingest, fast queries, and scalable storage. <b><a href="/url/f/bfd089cf-67a6-48f0-a0df-b45228da036b/" target="_blank" rel="nofollow">Learn More</a>.</b></p>
|
||
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
|
||
|
||
</div>
|
||
<div class="article__more f_article_rightbar" data-col="2/6">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
window.finishedRightbarVcr = false;
|
||
|
||
var _gaq = _gaq || [];
|
||
var recomJson ="[{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-sre-incident-response/en/smallimage/infoq-live-thumbnail-1777368469045.jpg","topicsIds":null,"date":1777375260000,"url":"/presentations/ai-sre-incident-response","title":"AI-Powered SRE for Autonomous Incident Response","authorsList":["Rohit Dhawan","Pavan Madduri","Alina Astapovich","Goutham Rao","Renato Losio"],"itemPath":"/presentations/ai-sre-incident-response","score":50001,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/chaos-engineering-ecs-payments/en/smallimage/chaos-engineering-ecs-payments-thumbnail-1788254676411.jpg","topicsIds":null,"date":1788858000000,"url":"/articles/chaos-engineering-ecs-payments","title":"Implementing Chaos Engineering in Financial Payment Systems: Lessons from Enterprise ECS Deployments","authorsList":["Salim Adedeji"],"itemPath":"/articles/chaos-engineering-ecs-payments","score":1,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/claude-sre-incidents/en/smallimage/alex-palcuie-thumbnail-1786539336984.jpg","topicsIds":null,"date":1787742000000,"url":"/presentations/claude-sre-incidents","title":"Can Claude Fix Itself? Using LLMs for Incident Response","authorsList":["Alex Palcuie"],"itemPath":"/presentations/claude-sre-incidents","score":1,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1787313600000,"url":"/news/2026/08/cloudflare-ai-enforcement","title":"Cloudflare Turns Engineering Standards into an AI-Enforced Control System","authorsList":["Craig Risi"],"itemPath":"/news/2026/08/cloudflare-ai-enforcement","score":1,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/platform-reliability-cycle/en/smallimage/platform-reliability-cycle-thumbnail-1777467114542.jpg","topicsIds":null,"date":1777971600000,"url":"/articles/platform-reliability-cycle","title":"Three Pillars of Platform Engineering: a Virtuous Cycle","authorsList":["Pratik Agarwal"],"itemPath":"/articles/platform-reliability-cycle","score":1,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/outage-lessons/en/smallimage/molly-struve-thumbnail-1776864399990.jpeg","topicsIds":null,"date":1777371180000,"url":"/presentations/outage-lessons","title":"Week-Long Outage: Lifelong Lessons","authorsList":["Molly Struve"],"itemPath":"/presentations/outage-lessons","score":1,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/sovereign-fault-domains-cloud-resilience/en/smallimage/sovereign-fault-domains-cloud-resilience-thumbnail-1776430533702.jpg","topicsIds":null,"date":1776848400000,"url":"/articles/sovereign-fault-domains-cloud-resilience","title":"When a Cloud Region Fails: Rethinking High Availability in a Geopolitically Unstable World","authorsList":["Rohan Vardhan"],"itemPath":"/articles/sovereign-fault-domains-cloud-resilience","score":1,"contentType":"articles"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/configuration-control-plane/en/smallimage/configuration-as-a-control-plane-designing-for-safety-and-reliability-at-scale-thumb-1773657574566.jpg","topicsIds":null,"date":1773997200000,"url":"/articles/configuration-control-plane","title":"Configuration as a Control Plane: Designing for Safety and Reliability at Scale","authorsList":["Karthiek Maralla"],"itemPath":"/articles/configuration-control-plane","score":1,"contentType":"articles"},{"imageStoragePath":null,"topicsIds":null,"date":1789138800000,"url":"/news/2026/09/nvidia-pair-ai-task-router","title":"NVIDIA Personal AI Router Distributes AI Tasks across Local Compute","authorsList":["Sergio De Simone"],"itemPath":"/news/2026/09/nvidia-pair-ai-task-router","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789136220000,"url":"/news/2026/09/netflix-conductor-4-workflow","title":"Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows","authorsList":["Leela Kumili"],"itemPath":"/news/2026/09/netflix-conductor-4-workflow","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789128120000,"url":"/news/2026/09/tsgolint-oxlint-typescript","title":"tsgolint Reaches Stable v7, Bringing Go-Powered Type-Aware Linting to Oxlint","authorsList":["Daniel Curtis"],"itemPath":"/news/2026/09/tsgolint-oxlint-typescript","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789128000000,"url":"/news/2026/09/terraform-aws-provider-6-62","title":"Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex","authorsList":["Craig Risi"],"itemPath":"/news/2026/09/terraform-aws-provider-6-62","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/form3-multicloud-architecture/en/smallimage/ross-mcfarlane-kevin-holditch-thumbnail-1788338652847.jpg","topicsIds":null,"date":1789124400000,"url":"/presentations/form3-multicloud-architecture","title":"How To Run on Three Clouds at Once, and When Not To","authorsList":["Ross McFarlane","Kevin Holditch"],"itemPath":"/presentations/form3-multicloud-architecture","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1789120800000,"url":"/news/2026/09/linkedin-ai-multi-teacher","title":"How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation","authorsList":["Claudio Masolo"],"itemPath":"/news/2026/09/linkedin-ai-multi-teacher","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789114440000,"url":"/news/2026/09/observability-ai-agents","title":"Session Traces and Cost Controls Help Diagnose AI Agent Failures","authorsList":["Mark Silvester"],"itemPath":"/news/2026/09/observability-ai-agents","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789103100000,"url":"/news/2026/09/tinygo-devkit","title":"Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/tinygo-devkit","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789062540000,"url":"/news/2026/09/openai-gpt6-astra","title":"OpenAI Releases GPT-6 Astra for Coding and Computer Use","authorsList":["Daniel Dominguez"],"itemPath":"/news/2026/09/openai-gpt6-astra","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789036140000,"url":"/news/2026/09/autonomous-software-teams","title":"Beyond Autonomous Teams in Software Product Development","authorsList":["Ben Linders"],"itemPath":"/news/2026/09/autonomous-software-teams","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/rust-refactoring/en/smallimage/lily-mara-thumbnail-1788338447565.jpeg","topicsIds":null,"date":1789032840000,"url":"/presentations/rust-refactoring","title":"Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase","authorsList":["Lily Mara"],"itemPath":"/presentations/rust-refactoring","score":0,"contentType":"presentations"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/articles/when-spec-driven-development-pays-off/en/smallimage/When-Spec-Driven-Development-Pays-Off-thumb-1788790605567.jpg","topicsIds":null,"date":1789030800000,"url":"/articles/when-spec-driven-development-pays-off","title":"When Spec-Driven Development Pays Off","authorsList":["Nitin Garg"],"itemPath":"/articles/when-spec-driven-development-pays-off","score":0,"contentType":"articles"},{"imageStoragePath":null,"topicsIds":null,"date":1789021620000,"url":"/news/2026/09/http-query-method","title":"IETF Publishes RFC 10008, Adding the QUERY Method for Safe Requests with a Body","authorsList":["Daniel Curtis"],"itemPath":"/news/2026/09/http-query-method","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1789016700000,"url":"/news/2026/09/riscv-cpython","title":"CPython Officially Adds RISC-V Support as a Tier 3 Platform","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/riscv-cpython","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788976800000,"url":"/news/2026/09/meta-organizational-agents","title":"Meta's Recipe for Building Agents as \\\"Organizational Second Brains\\\"","authorsList":["Sergio De Simone"],"itemPath":"/news/2026/09/meta-organizational-agents","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/unikraft-microvm-sandboxes-cloud-scaling/en/smallimage/felipe-huici-thumbnail-1787813506607.jpg","topicsIds":null,"date":1788951600000,"url":"/presentations/unikraft-microvm-sandboxes-cloud-scaling","title":"Fixing the AI Infra Scale Problem by Stuffing 1M Sandboxes in a Single Server","authorsList":["Felipe Huici"],"itemPath":"/presentations/unikraft-microvm-sandboxes-cloud-scaling","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1788944040000,"url":"/news/2026/09/avd-hybrid-ga","title":"Azure Virtual Desktop Hybrid Reaches GA with Licensing Details Unpublished","authorsList":["Steef-Jan Wiggers"],"itemPath":"/news/2026/09/avd-hybrid-ga","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788933960000,"url":"/news/2026/09/async-lua-neovim","title":"vim.async's Addition Modernizes Neovim’s Async Architecture for Better Stability","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/async-lua-neovim","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-platform-engineering-roundtable/en/smallimage/thumb-1788861349861.jpg","topicsIds":null,"date":1788876000000,"url":"/presentations/ai-platform-engineering-roundtable","title":"Platform Engineering in the Age of AI","authorsList":["Stéphane Di Cesare","Davide de Paolis","Stephen Cihak","Camila Macedo","Renato Losio"],"itemPath":"/presentations/ai-platform-engineering-roundtable","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1788876000000,"url":"/news/2026/09/hashicorp-packer-verification","title":"HashiCorp Packer 1.16 Adds Native SLSA Provenance Generation and Verification for Machine Images","authorsList":["Claudio Masolo"],"itemPath":"/news/2026/09/hashicorp-packer-verification","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788868800000,"url":"/news/2026/09/gitlab-ai-sandbox-access","title":"GitLab Warns That AI Agent Sandboxes Are Only as Secure as Their Network Access","authorsList":["Craig Risi"],"itemPath":"/news/2026/09/gitlab-ai-sandbox-access","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/solopreneur-journey/en/smallimage/joe-cassavaugh-thumbnail-1788338336404.jpg","topicsIds":null,"date":1788858600000,"url":"/presentations/solopreneur-journey","title":"A Solopreneur's Journey: From Engineer to Puzzle Master and Storyteller","authorsList":["Joe Cassavaugh"],"itemPath":"/presentations/solopreneur-journey","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1788854880000,"url":"/news/2026/09/name-domain-drop","title":"Does ICANN Open the Door on Identity Theft by Dropping 3rd Level .name Domains Registrations?","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/name-domain-drop","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788789960000,"url":"/news/2026/09/netflix-flink-autoscaler","title":"Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs","authorsList":["Leela Kumili"],"itemPath":"/news/2026/09/netflix-flink-autoscaler","score":0,"contentType":"news"},{"imageStoragePath":"https://imgopt.infoq.com/fit-in/50x50/filters:quality(80)/presentations/ai-agent-testing-evaluation/en/smallimage/zhou-yu-thumbnail-1787813732120.jpeg","topicsIds":null,"date":1788778800000,"url":"/presentations/ai-agent-testing-evaluation","title":"From AI Agent Demo to Production: Automated Testing and Evaluation","authorsList":["Zhou Yu"],"itemPath":"/presentations/ai-agent-testing-evaluation","score":0,"contentType":"presentations"},{"imageStoragePath":null,"topicsIds":null,"date":1788775740000,"url":"/news/2026/09/apim-standard-v2-zone-redundancy","title":"Zone Redundancy Comes to API Management Standard v2","authorsList":["Steef-Jan Wiggers"],"itemPath":"/news/2026/09/apim-standard-v2-zone-redundancy","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788764820000,"url":"/news/2026/09/cern-debian-infra","title":"CERN Renounces RHEL in Favor of Debian for its Accelerator Controls Infrastructure","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/cern-debian-infra","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788762660000,"url":"/news/2026/09/vlt-npm-replacement","title":"vlt 1.0 Ships as a Drop-in npm Replacement with Phased Installs, Graph Queries, and Malware-Blocking","authorsList":["Daniel Curtis"],"itemPath":"/news/2026/09/vlt-npm-replacement","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788748200000,"url":"/news/2026/09/java-news-roundup-aug31-2026","title":"Java News Roundup: TornadoVM 6, JReleaser, LangChain4j, Java Operator SDK, JHipster, Yupiik Fusion","authorsList":["Michael Redlich"],"itemPath":"/news/2026/09/java-news-roundup-aug31-2026","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788696000000,"url":"/news/2026/09/google-mantis-vulnerability-scan","title":"Google Mantis: an Agentic Vulnerability Scanning Harness for Reducing False Positives","authorsList":["Sergio De Simone"],"itemPath":"/news/2026/09/google-mantis-vulnerability-scan","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788677940000,"url":"/news/2026/09/figma-security-agents","title":"How Figma Uses AI Agents for Security","authorsList":["Renato Losio"],"itemPath":"/news/2026/09/figma-security-agents","score":0,"contentType":"news"},{"imageStoragePath":null,"topicsIds":null,"date":1788674760000,"url":"/news/2026/09/freecore-truenas-fork","title":"FreeCORE: TrueNAS Fork Maintaining Deeply Integrated Virtualization, Jails, and OpenZFS on FreeBSD","authorsList":["Olimpiu Pop"],"itemPath":"/news/2026/09/freecore-truenas-fork","score":0,"contentType":"news"}]";
|
||
var whitepaperVcrsJson = null;
|
||
var topicSponsorshipJson = "";
|
||
var vcrOptionalListJson = null;
|
||
/* do not delete these two, as they are used further in the code */
|
||
var contentDatetimeFormat='MMM dd, yyyy';
|
||
var contentUriMapping="podcasts";
|
||
JSi18n.relatedRightbar_relatedContent='Related Content';
|
||
JSi18n.relatedRightbar_sponsoredContent='Related Sponsors';
|
||
JSi18n.relatedRightbar_sponsoredBy='Sponsored by';
|
||
|
||
var topicIds = "5560,47,5774,131,362,3";
|
||
var communityIds = "2498";
|
||
var company = "Tiger Data";
|
||
|
||
|
||
// this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...)
|
||
var canStartTrackingCustomRightbar = false;
|
||
infoq.event.on('loaded', function(e) {
|
||
canStartTrackingCustomRightbar = true;
|
||
});
|
||
|
||
var intervalRightbar = setInterval(function() {
|
||
if (window.vcrsLoaded) {
|
||
clearInterval(intervalRightbar);
|
||
if(company != null && company != "") {
|
||
whitepaperVcrsJson = VCR.filterByCompany(company, window.vcrList);
|
||
} else {
|
||
whitepaperVcrsJson = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 5, false, null);
|
||
}
|
||
vcrOptionalListJson = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 10, true, null);
|
||
|
||
VCR.displayCustomRightbar(recomJson, whitepaperVcrsJson, topicSponsorshipJson);
|
||
VCR.displayCustomRightbarOptionalVcrWidget(vcrOptionalListJson);
|
||
|
||
window.finishedRightbarVcr = true;
|
||
}
|
||
}, 200);
|
||
|
||
// these two events can happen one before another async(no precedence any can be first or second). Make sure tracking starts when both happened
|
||
var intervalTrackingRightbar = setInterval(function() {
|
||
if(canStartTrackingCustomRightbar && window.finishedRightbarVcr){
|
||
clearInterval(intervalTrackingRightbar);
|
||
VCR.doTrackingCustomRightbar();
|
||
}
|
||
}, 200);
|
||
|
||
|
||
</script>
|
||
<noscript>
|
||
<div class="widget related__content article__widget">
|
||
<h3 class="widget__heading">Related Content</h3>
|
||
<ul class="no-style cards" data-horizontal="true" data-size="xs" data-tax="">
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</noscript>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="newsletter widget" data-bg="infoq">
|
||
<h3 class="heading"><strong>The InfoQ</strong> Newsletter</h3>
|
||
<p class="intro">
|
||
A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers.
|
||
|
||
<a target="_blank" href="https://assets.infoq.com/newsletter/regular/en/newsletter_sample/newsletter_sample.html">View an example</a>
|
||
|
||
|
||
</p>
|
||
<div class="newsletter__subscribe">
|
||
<form class="form gdpr" id="floatingNewsletterForm" action="#" onsubmit="floatingNewsletterForm.saveSubscription(); return false;">
|
||
<div class="field input__text input__no-label input__medium newsletter__mail email">
|
||
<label class="field__label label" for="email-newsletter-infoq-guide">Enter your e-mail address</label>
|
||
<input class="field__input input" id="email-newsletter-infoq-guide" placeholder="Enter your e-mail address" type="email">
|
||
<input type="text" name="emailH" id="input_floating_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off">
|
||
<input type="hidden" id="floating_fnt" name="fnt" value="PQus9naak0hv0niW"/>
|
||
<input type="hidden" id="floatingNewsletterType" name="footerNewsletterType" value="regular"/>
|
||
<input type="hidden" id="cmpi_f" name="cmpi" value="1"/>
|
||
</div>
|
||
<div class="hidden">
|
||
<span class="input__select field country">
|
||
<label for="input-floating-newsletter-country" class="label field__label">Select your country</label>
|
||
<select id="input-floating-newsletter-country" class="select field__input">
|
||
<option value="" class="select__option">Select a country</option>
|
||
</select>
|
||
<p class="input__message field__desc"></p>
|
||
</span>
|
||
<span class="input__checkbox field hidden">
|
||
<input type="checkbox" id="gdpr-consent-simple-floating-nl">
|
||
<label for="gdpr-consent-simple-floating-nl" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label>
|
||
</span>
|
||
</div>
|
||
<input class="button button__medium button__yellow" type="submit" role="button" value="Subscribe" onclick="return floatingNewsletterForm.validateEmail('Invalid email address');">
|
||
</form>
|
||
<p class="meta">
|
||
<a href="/privacy-notice/" target="_blank">We protect your privacy.</a>
|
||
</p>
|
||
|
||
<span class="success" style="display:none;" id="floatingNewsletterEmailMessage"></span>
|
||
</div>
|
||
</div>
|
||
<script type="text/javascript">
|
||
var floatingNewsletterForm = new Newsletter('Enter your e-mail address',
|
||
'email-newsletter-infoq-guide', 'floatingNewsletterType','floatingNewsletterEmailMessage', 'floating_fnt', 'input_floating_email_h', 'input-floating-newsletter-country','cmpi_f','floating_box');
|
||
</script>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</article>
|
||
|
||
<script type="text/javascript">
|
||
// global vars that can be used for this page, us ethis section to add more.
|
||
var contentTitle = "Tammy Bryant Butow on SRE Apprentices",
|
||
contentPath = "/podcasts/sre-apprentices",
|
||
contentUUID = "ed9f049a-9135-46f0-b1ab-05847b95694c",
|
||
authorUserCSVIds = "126572501";
|
||
</script>
|
||
<script src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/prism-build.js"></script>
|
||
<script src="https://cdn.infoq.com/statics_s2_20260910111657/scripts/lib/MathJax/MathJax.js?config=TeX-AMS_HTML"></script>
|
||
|
||
</main>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<footer class="footer ">
|
||
|
||
|
||
<section data-nosnippet class="section container">
|
||
<div class="container__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<ul data-cols="5" class="no-style columns boxes topic__boxes">
|
||
|
||
<li class="development">
|
||
<div class="box__header">
|
||
|
||
<a class="t_all_footer_more-boxes-header" href="/development/">Development</a>
|
||
</div>
|
||
<div class="box__content">
|
||
<ul class="no-style box__list small">
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/tinygo-devkit/" title="Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit">Advancing Embedded Go: Recoverable Panics, UEFI, Radio and Hardware Dev Kit</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/riscv-cpython/" title="CPython Officially Adds RISC-V Support as a Tier 3 Platform">CPython Officially Adds RISC-V Support as a Tier 3 Platform</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/async-lua-neovim/" title="vim.async's Addition Modernizes Neovim&rsquo;s Async Architecture for Better Stability">vim.async's Addition Modernizes Neovim’s Async Architecture for Better Stability</a></h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="architecture-design">
|
||
<div class="box__header">
|
||
|
||
<a class="t_all_footer_more-boxes-header" href="/architecture-design/">Architecture & Design</a>
|
||
</div>
|
||
<div class="box__content">
|
||
<ul class="no-style box__list small">
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/netflix-conductor-4-workflow/" title="Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows">Netflix Reworks Conductor for 420 Million Monthly Workflow Executions and 10X Larger Workflows</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/meta-organizational-agents/" title="Meta's Recipe for Building Agents as &quot;Organizational Second Brains&quot;">Meta's Recipe for Building Agents as "Organizational Second Brains"</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/netflix-flink-autoscaler/" title="Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs">Netflix Moves toward Open Source Flink Autoscaler for 30,000+ Streaming Jobs</a></h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="culture-methods">
|
||
<div class="box__header">
|
||
|
||
<a class="t_all_footer_more-boxes-header" href="/culture-methods/">Culture & Methods</a>
|
||
</div>
|
||
<div class="box__content">
|
||
<ul class="no-style box__list small">
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/autonomous-software-teams/" title="Beyond Autonomous Teams in Software Product Development">Beyond Autonomous Teams in Software Product Development</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/presentations/rust-refactoring/" title="Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase">Accelerating Performance by Incrementally Integrating Rust Into Existing Codebase</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/podcasts/personality-over-skillset/" title="Personality Over Skillset: How Adam Wachtel Builds Engineering Teams">Personality Over Skillset: How Adam Wachtel Builds Engineering Teams</a></h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="ai-ml-data-eng">
|
||
<div class="box__header">
|
||
|
||
<a class="t_all_footer_more-boxes-header" href="/ai-ml-data-eng/">AI, ML & Data Engineering</a>
|
||
</div>
|
||
<div class="box__content">
|
||
<ul class="no-style box__list small">
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/nvidia-pair-ai-task-router/" title="NVIDIA Personal AI Router Distributes AI Tasks across Local Compute">NVIDIA Personal AI Router Distributes AI Tasks across Local Compute</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/linkedin-ai-multi-teacher/" title="How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation">How LinkedIn Trains AI Job Search 8x Faster with Multi-Teacher Distillation</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/openai-gpt6-astra/" title="OpenAI Releases GPT-6 Astra for Coding and Computer Use">OpenAI Releases GPT-6 Astra for Coding and Computer Use</a></h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="devops">
|
||
<div class="box__header">
|
||
|
||
<a class="t_all_footer_more-boxes-header" href="/devops/">DevOps</a>
|
||
</div>
|
||
<div class="box__content">
|
||
<ul class="no-style box__list small">
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/terraform-aws-provider-6-62/" title="Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex">Terraform AWS Provider Continues Rapid Expansion as AWS Infrastructure Becomes More Complex</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/observability-ai-agents/" title="Session Traces and Cost Controls Help Diagnose AI Agent Failures">Session Traces and Cost Controls Help Diagnose AI Agent Failures</a></h5>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<h5><a class="t_all_footer_more-boxes-item" href="/news/2026/09/hashicorp-packer-verification/" title="HashiCorp Packer 1.16 Adds Native SLSA Provenance Generation and Verification for Machine Images">HashiCorp Packer 1.16 Adds Native SLSA Provenance Generation and Verification for Machine Images</a></h5>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
</div>
|
||
</section>
|
||
<section data-nosnippet class="container section section__newsletter">
|
||
<div class="columns container__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="newsletter" data-col="1/2"
|
||
|
||
|
||
|
||
id="infoq-nl"
|
||
|
||
|
||
|
||
|
||
>
|
||
<h2 class="heading">
|
||
<strong>The InfoQ</strong> Newsletter
|
||
</h2>
|
||
<p class="intro">A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers.
|
||
|
||
<a target="_blank" href="https://assets.infoq.com/newsletter/regular/en/newsletter_sample/newsletter_sample.html">View an example</a>
|
||
|
||
|
||
</p>
|
||
<ul class="newsletter__features">
|
||
<li>Get a quick overview of content published on a variety of innovator and early adopter technologies</li>
|
||
<li>Learn what you don’t know that you don’t know</li>
|
||
<li>Stay up to date with the latest information from the topics you are interested in</li>
|
||
</ul>
|
||
<div class="newsletter__subscribe">
|
||
<form class="form gdpr" name="footerNewsletterForm" id="footerNewsletterForm" action="#" onsubmit="footerNewsletter.saveSubscription(); return false;">
|
||
<div class="field newsletter__mail input__text input__no-label input__medium email">
|
||
<label for="email-newsletter-infoq" class="label field__label">Enter your e-mail address</label>
|
||
<input id="email-newsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/>
|
||
<input type="text" name="emailH" id="input_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/>
|
||
<input type="hidden" id="fnt" name="fnt" value="PQus9naak0hv0niW"/>
|
||
<input type="hidden" id="footerNewsletterType" name="footerNewsletterType" value="regular"/>
|
||
<input type="hidden" id="cmpi" name="cmpi" value="1"/>
|
||
</div>
|
||
<div class="hidden">
|
||
<span class="input__select field country">
|
||
<label for="input-simple-newsletter-country" class="label field__label">Select your country</label>
|
||
<select id="input-simple-newsletter-country" class="select field__input">
|
||
<option value="" class="select__option">Select a country</option>
|
||
</select>
|
||
<p class="input__message field__desc"></p>
|
||
</span>
|
||
<span class="input__checkbox field hidden">
|
||
<input type="checkbox" id="gdpr-consent-simple-nl">
|
||
<label for="gdpr-consent-simple-nl" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label>
|
||
</span>
|
||
</div>
|
||
<input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return footerNewsletter.validateEmail('Invalid email address');"/>
|
||
</form>
|
||
<p class="meta">
|
||
<a href="/privacy-notice/" target="_blank">We protect your privacy.</a>
|
||
</p>
|
||
|
||
<span class="success" style="display:none;" id="footerNewsletterMessage"></span>
|
||
</div>
|
||
<script type="text/javascript">
|
||
var footerNewsletter = new Newsletter('Enter your e-mail address',
|
||
'email-newsletter-infoq', 'footerNewsletterType','footerNewsletterMessage', 'fnt', 'input_email_h', 'input-simple-newsletter-country', 'cmpi','footer_except_homepage');
|
||
</script>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div data-col="1/2" data-bg="certification" class="event__container" style="padding-right: 20px;">
|
||
<a href="https://certification.qconferences.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_onlinecohorts26" target="_blank" class="qconplus__events-slider" style="">
|
||
<div>
|
||
<div class="logo-certification"></div>
|
||
</div>
|
||
<p class="intro" style="margin-bottom: 0;color: white !important;">
|
||
<b>InfoQ Online Certification Programs</b>
|
||
<br>For Senior Engineers, Architects, and Technical Leaders
|
||
</p>
|
||
<ul style="margin-bottom: 0;">
|
||
<li style="color: white !important;"><b>Architect</b> with Luca Mezzalira | September 14</li>
|
||
<li style="color: white !important;"><b>Engineering Leadership</b> with Michelle Brush | September 18</li>
|
||
<li style="color: white !important;"><b>AI-Assisted Engineering</b> with Zichuan Xiong & Premanand Chandrasekaran | September 18</li>
|
||
<li style="color: white !important;"><b>AI Security & Privacy Engineering</b> with Katharine Jarmul | October 14</li>
|
||
</ul>
|
||
<br>
|
||
<p class="intro" style="margin-bottom: 0;color: white !important;">As your role becomes more senior, the work changes. You're no longer just implementing decisions; you're shaping the systems, trade-offs, and technical direction other teams depend on.<br>These 5-week online programs give you a structured way to work through real decisions from your current role with senior peers from other companies.</p>
|
||
<strong class="button button__green cta__button">RESERVE YOUR PLACE</strong>
|
||
<small style="color: white;"><br>Live online. 4 hours a week, for 5 weeks.</small>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</section>
|
||
|
||
<section data-nosnippet class="section container footer__subfooter align__left">
|
||
<div class="container__inner columns">
|
||
<div data-col="1/4" class="columns footer__links-wrap">
|
||
<div class="footer__links">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/" class="nuxt-link-exact-active active" title="Home">Home</a>
|
||
|
||
|
||
<a href="/reginit.action" class="emphasis" title="Create account">Create account</a>
|
||
<button aria-label="Log In" class="login" data-ref="mainLogin">Log In</button>
|
||
|
||
|
||
<a rel="noreferrer noopener" href="http://qconferences.com/" target="_blank" title="QCon Conferences">QCon Conferences</a>
|
||
<a rel="noreferrer noopener" href="https://events.infoq.com/" target="_blank">Events</a>
|
||
|
||
<a href="/write-for-infoq/" title="Write for InfoQ">Write for InfoQ</a>
|
||
<a href="/infoq-editors/" title="InfoQ Editors">InfoQ Editors</a>
|
||
<a href="/about-infoq/" title="About InfoQ">About InfoQ</a>
|
||
<a href="https://c4media.com/" target="_blank" title="About C4Media">About C4Media</a>
|
||
|
||
<a rel="noreferrer noopener" href="https://get.infoq.com/infoq-mediakit/" title="Media Kit" target="_blank">
|
||
Media Kit
|
||
</a>
|
||
<a href="https://devmarketing.c4media.com/?utm_source=infoq" title="InfoQ Developer Marketing Blog" target="_blank">InfoQ Developer Marketing Blog</a>
|
||
|
||
<a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div data-col="1/4" class="events__list">
|
||
<h4 class="heading footer__heading">Events</h4>
|
||
<ul class="qcons__list no-style">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://certification.qconferences.com/architecture?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortarchitecture26" target="_blank">Online InfoQ Architect Certification</a>
|
||
</h5>
|
||
<span class="meta date">September 14, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://certification.qconferences.com/ai-assisted-engineering?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortaiassistedengineering26" target="_blank">Online InfoQ AI-Assisted Engineering Certification</a>
|
||
</h5>
|
||
<span class="meta date">September 18, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://certification.qconferences.com/ai-security-privacy?utm_source=infoq&utm_medium=referral&utm_campaign=footer_onlinecohortaisecurity26" target="_blank">Online InfoQ AI Security & Privacy Engineering Program</a>
|
||
</h5>
|
||
<span class="meta date">October 14, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qsf26" target="_blank">QCon San Francisco</a>
|
||
</h5>
|
||
<span class="meta date">November 16-20, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://newyork.qcon.ai/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qainy26" target="_blank">QCon AI New York</a>
|
||
</h5>
|
||
<span class="meta date">December 15-16, 2026</span>
|
||
</div>
|
||
</li>
|
||
<li><span class="icon event__type conference"></span>
|
||
<div class="qcon__detail">
|
||
<h5 class="heading">
|
||
<a rel="noreferrer noopener" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qlondon27" target="_blank">QCon London 2027</a>
|
||
</h5>
|
||
<span class="meta date">April 13-16, 2027</span>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div data-col="1/4" class="footer__social-wrap">
|
||
<h4 class="heading text-left footer__heading">Follow us on </h4>
|
||
<div class="social__links columns social__links__row">
|
||
|
||
|
||
<a href="https://www.youtube.com/infoq"><span class="icon icon__large icon__social icon__youtube"></span><div><span class="social__count">Youtube</span><span class="social__followers">232K Followers</span></div></a>
|
||
<a href="http://www.linkedin.com/company/infoq"><span class="icon icon__large icon__social icon__linkedin"></span><div><span class="social__count">Linkedin</span><span class="social__followers">26K Followers</span></div></a>
|
||
<a rel="noreferrer noopener" href="https://www.instagram.com/infoqdotcom/" target="_blank"><span class="icon icon__large icon__social icon__instagram"></span><div><span class="social__count">Instagram</span><span class="social__followers">New</span></div></a>
|
||
<a href="#" id="footerNewsletterRssLink"><span class="icon icon__large icon__social icon__rss"></span><div><span class="social__count">RSS</span><span class="social__followers">19K Readers</span></div></a>
|
||
<a rel="noreferrer noopener" href="http://twitter.com/infoq" target="_blank"><span class="icon icon__large icon__social icon__twitter"></span><div><span class="social__count">X</span><span class="social__followers">57.1k Followers</span></div></a>
|
||
<a rel="noreferrer noopener" href="https://www.facebook.com/InfoQ-75911537320" target="_blank"><span class="icon icon__large icon__social icon__fb"></span><div><span class="social__count">Facebook</span><span class="social__followers">21K Likes</span></div></a>
|
||
<a rel="noreferrer noopener" href="https://bsky.app/profile/infoq.com" target="_blank"><span class="icon icon__large icon__social icon__bluesky"></span><div><span class="social__count">Bluesky</span><span class="social__followers">New</span></div></a>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div data-col="1/4" class="footer__stayin-wrap">
|
||
<h4 class="heading text-left footer__heading">Stay in the know</h4>
|
||
<div class="stayIn_panel_container">
|
||
<a href="/podcasts/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The InfoQ Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="65px" height="64px" alt="The InfoQ Podcast Logo - Stay in the know"></picture></a>
|
||
<a href="/podcasts/#engineering_culture" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>Engineering Culture Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="65px" height="64px" alt="Engineering Culture Podcast Logo - Stay in the knoww"></picture></a>
|
||
<a href="/software-architects-newsletter/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The Software Architects' Newsletter</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="65px" height="64px" alt="The Software Architects' Newsletter Logo - Stay in the know"></picture></a>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</section>
|
||
<section data-nosnippet class="container footer__bottom section white align__left">
|
||
<div class="container__inner columns">
|
||
<div data-col="2/3" class="column">
|
||
<div class="footer__contact contact columns">
|
||
|
||
|
||
<span data-col="1/6">
|
||
General Feedback
|
||
<a href="mailto:feedback@infoq.com">feedback@infoq.com</a>
|
||
</span>
|
||
<span data-col="1/6">
|
||
Advertising
|
||
<a href="mailto:sales@infoq.com">sales@infoq.com</a>
|
||
</span>
|
||
<span data-col="1/6">
|
||
Editorial
|
||
<a href="mailto:editors@infoq.com">editors@infoq.com</a>
|
||
</span>
|
||
<span data-col="1/6">
|
||
Marketing
|
||
<a href="mailto:marketing@infoq.com">marketing@infoq.com</a>
|
||
</span>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="column" data-col="1/3">
|
||
<p class="footer__more">
|
||
InfoQ.com and all content copyright © 2006-2026 C4Media Inc.<br/>
|
||
|
||
<a href="/privacy-notice" target="_blank">Privacy Notice</a>, <a href="/terms-and-conditions " target="_blank">Terms And Conditions</a>, <a href="/cookie-policy " target="_blank">Cookie Policy</a>
|
||
|
||
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</footer>
|
||
<!-- ####### SITE END ######### -->
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="intbt">
|
||
<a href="/int/bt/" title="bt">BT</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
$.when(humanDetectionAsync()).then(
|
||
function(status) {
|
||
$.getScript("/scripts/__hd.ifq?hdt=PQus9naak0hv0niW&ha=" + status);
|
||
}
|
||
);
|
||
</script>
|
||
<script type="text/javascript">
|
||
|
||
var pageFullyLoaded = false;
|
||
// this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...)
|
||
infoq.event.on('loaded', function(e) {
|
||
pageFullyLoaded = true;
|
||
});
|
||
|
||
infoq.event.on('pageWidthChanged', function(e) {
|
||
// re-execute tracking vcr impressions when this event happens (it only happens when elements are added/removed from page)
|
||
// doTrackVcrImpressions takes into account the data-trk-impr="true" if =false the element was already tracked.
|
||
// this is needed when switching from mobile to desktop or when layout on mobile changes and desktop version is displayed. New elements become visible.
|
||
Tracker.safeExec(Tracker.doTrackVcrImpressions);
|
||
|
||
// these 2 need to be called also because we might be on a content page. In case we are not nothing happens
|
||
VCR.doTrackingCustomRightbar();
|
||
VCR.doTrackingCustomRightbarForPresentations()
|
||
});
|
||
|
||
//check to see if error page
|
||
if(window.device !== undefined) {
|
||
var intervalImpressions = setInterval(function() {
|
||
var shouldTrack = false;
|
||
|
||
// no vcr widgets on index pages
|
||
if(window.isIndexPage) {
|
||
if(window.sponsoredPodcastDone === undefined || window.sponsoredPodcastDone) {
|
||
shouldTrack = true;
|
||
}
|
||
} else
|
||
//on homepage, bottom widget + 2 native widgets
|
||
if(InfoQConstants.pageType == "HOMEPAGE" && window.finishedVcrOptional1 && window.finishedRelatedVcr && (window.finishedVcrOptional2 === undefined || window.finishedVcrOptional2)) {
|
||
shouldTrack = true;
|
||
} else
|
||
// rightbar widgets + native widgets + content vcr widgets
|
||
if((InfoQConstants.pageType == "NEWS_PAGE" || InfoQConstants.pageType == "ARTICLE_PAGE")
|
||
&& ((window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) && window.contentVcrFinished)) {
|
||
shouldTrack = true;
|
||
} else if ((InfoQConstants.pageType == "PRESENTATION_PAGE")
|
||
&& (window.contentVcrFinished || window.contentVcrFinished === undefined)
|
||
&& (window.finishedRightbarVcr || window.finishedRightbarVcr === undefined)
|
||
) {
|
||
shouldTrack = true;
|
||
} else
|
||
// native widgets + content widgets
|
||
if(window.contentVcrFinished && (window.finishedVcrOptional1 || window.finishedVcrOptional1 === undefined)
|
||
&& (window.finishedVcrOptional2 || window.finishedVcrOptional2 === undefined)) {
|
||
shouldTrack = true;
|
||
}
|
||
|
||
// we start tracking only after the page is fully loaded, frontend signals that they finished everything related to page display.
|
||
if(shouldTrack && pageFullyLoaded) {
|
||
clearInterval(intervalImpressions);
|
||
Tracker.safeExec(Tracker.doTrackVcrImpressions);
|
||
|
||
// start tracking viewable impressions also only after everything is ready
|
||
function callbackRouter(entries, observer) {
|
||
var targets = new Array();
|
||
entries.forEach(function (entry) {
|
||
var target = entry.target;
|
||
if (target.dataset.trkView === 'false') return;
|
||
if (entry.intersectionRatio > 0) {
|
||
target.dataset.trkView = false;
|
||
targets.push(target);
|
||
}
|
||
});
|
||
Tracker.doTrackViewableImpressions(targets);
|
||
}
|
||
var elementsForTrackingViewableImpressions = document.querySelectorAll('[data-trk-view="true"]')
|
||
var observer = new IntersectionObserver(callbackRouter, { threshold: 0.3 });
|
||
elementsForTrackingViewableImpressions.forEach(observer.observe.bind(observer));
|
||
}
|
||
|
||
}, 500);
|
||
}
|
||
$(document).ready(function () {
|
||
// desktop notifications widget
|
||
Tracker.encodeNotificationLinks($(".f_notificationWidget"));
|
||
// mobile notifications widget
|
||
Tracker.encodeNotificationLinks($(".h_notifications"));
|
||
// desktop notifications page
|
||
Tracker.encodeNotificationLinks($(".notification-page"));
|
||
// mobile notifications page
|
||
Tracker.encodeNotificationLinks($(".notifications_page"));
|
||
});
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="text/javascript">
|
||
if(window.location.hash){
|
||
var hash = window.location.hash.substring(1);
|
||
if(hash == 'subscribe'){
|
||
$('html,body').animate({scrollTop: $('.ftxt3 > .newsletter').offset().top}, 'slow');
|
||
}
|
||
}
|
||
</script>
|
||
<script type="text/javascript">
|
||
var newsletterSubscriptionURL ='/newsletter/subscribe.action';
|
||
DynamicLinks.updateRssLinks('XnLuCjIf6z9BHCGZ6Nd4R76O32258ENr');
|
||
|
||
ContentSummary.setSelectedTab('en');
|
||
//when user enters the main content area show default topics in the topics bar
|
||
$("#content-wrapper").mouseenter(function() {
|
||
showDefaultTopics();
|
||
});
|
||
|
||
|
||
Bookmarks.contentTitle = "Tammy Bryant Butow on SRE Apprentices";
|
||
Bookmarks.apiUrl = '/widgets/bookmark.action';
|
||
Bookmarks.isContentBookmarked = "false";
|
||
</script>
|
||
<script type="text/javascript">
|
||
var $buoop = {vs:{i:6,f:1,o:10.1,s:1}}
|
||
$buoop.ol = window.onload;
|
||
$(document).ready(function() {
|
||
try {if ($buoop.ol) $buoop.ol();}catch (e) {}
|
||
var e = document.createElement("script");
|
||
e.setAttribute("type", "text/javascript");
|
||
e.setAttribute("src", "https://cdn.infoq.com/statics_s2_20260910111657/scripts/lib/browser-update-org/update.js");
|
||
document.body.appendChild(e);
|
||
});
|
||
</script>
|
||
|
||
|
||
|
||
|
||
<script>
|
||
!function(f,b,e,v,n,t,s)
|
||
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
|
||
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
|
||
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
|
||
n.queue=[];t=b.createElement(e);t.async=!0;
|
||
t.src=v;s=b.getElementsByTagName(e)[0];
|
||
s.parentNode.insertBefore(t,s)}(window,document,'script',
|
||
'https://connect.facebook.net/en_US/fbevents.js');
|
||
fbq('init', '842388869148196');
|
||
fbq('track', 'PageView');
|
||
</script>
|
||
<noscript>
|
||
<img height="1" width="1" src="https://www.facebook.com/tr?id=842388869148196&ev=PageView&noscript=1"/>
|
||
</noscript>
|
||
|
||
|
||
|
||
<script type='text/javascript'>
|
||
try {
|
||
mixpanel.track('page viewed', {
|
||
'page name' : document.title,
|
||
'url' : window.location.pathname
|
||
});
|
||
}
|
||
catch(err) {
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|
||
<!-- s2 -->
|