CINXE.COM

InfoQ: Software Development News, Trends & Best Practices - InfoQ

<!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);} gtag('config', 'G-VMVPD4D2JY'); //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' }); if((typeof loggedIn != "undefined") && loggedIn){ window.dataLayer.push({'logged_in': 'true'}); } else { window.dataLayer.push({'logged_in': 'false'}); } window.dataLayer.push({'show_queryz': ''}); </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> InfoQ: Software Development News, Trends &amp; Best Practices - InfoQ</title> <link rel="canonical" href="https://www.infoq.com/"/> <link rel="alternate" href="https://www.infoq.com/" hreflang="en"/> <link rel="alternate" href="https://www.infoq.com/jp/" hreflang="ja" /> <link rel="alternate" href="https://www.infoq.com/br/" hreflang="pt" /> <link rel="alternate" href="https://www.infoq.com/fr/" hreflang="fr" /> <link rel="alternate" href="https://www.infoq.com/" 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="&copy; 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_20250213201535/styles/style.css"/> <link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/print.css"/> <link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" href="https://cdn.infoq.com/statics_s2_20250213201535/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_20250213201535/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_20250213201535/styles/style_en.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_extra.css"/> </noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/fonts/font.css"/> <link rel="shortcut icon" href="https://cdn.infoq.com/statics_s2_20250213201535/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s2_20250213201535/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='3i5hq46GCl4opvnz'; InfoQConstants.userDetectedCountryCode = 'SG'; InfoQConstants.bpadb = 'bFQDdOL5mULx7hUXhswX'; </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20250213201535/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>&nbsp;&nbsp;&nbsp;Saved&nbsp;&nbsp;&nbsp;&nbsp;</q>'; JSi18n.bookmark_error='<q style=color:black;>&nbsp;&nbsp;&nbsp;Error&nbsp;&nbsp;&nbsp;&nbsp;</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('[{\"url\":\"\/profile\/Rafal-Gancarz\",\"followedByCurrentUser\":false,\"id\":\"36538747\",\"ref\":\"author-Rafal-Gancarz\",\"minibio\":\"Principal Architect &amp; Engineer\",\"bio\":\"\",\"followers\":211,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/VGGiv73VTaHCfNhwSlbDjeGIhcJRJsQj.jpeg\",\"name\":\"Rafal Gancarz\"},{\"url\":\"\/profile\/Rags-Srinivas\",\"followedByCurrentUser\":false,\"id\":\"45723890\",\"ref\":\"author-Rags-Srinivas\",\"minibio\":\"\",\"bio\":\"\",\"followers\":265,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\",\"name\":\"Rags Srinivas\"},{\"url\":\"\/profile\/Edin-Kapi\u0107\",\"followedByCurrentUser\":false,\"id\":\"18771786\",\"ref\":\"author-Edin-Kapi\u0107\",\"minibio\":\"Lead Software Engineer\",\"bio\":\"\",\"followers\":28,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/KGUHnFD3YC5lMoRFSpc1yACJK5wk3OCg.jpg\",\"name\":\"Edin Kapi\u0107\"},{\"url\":\"\/profile\/Michael-Redlich\",\"followedByCurrentUser\":false,\"id\":\"3885831\",\"ref\":\"author-Michael-Redlich\",\"minibio\":\"Java Champion | Java Queue Lead Editor | Director at GSJUG\",\"bio\":\"\",\"followers\":559,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/TxhBF2gloUbm6EjmEsvlQPphHPLElD6g.jpg\",\"name\":\"Michael Redlich\"},{\"url\":\"\/profile\/Arun-Joseph\",\"followedByCurrentUser\":false,\"id\":\"126662224\",\"ref\":\"author-Arun-Joseph\",\"minibio\":\"AI Engineering Lead @Deutsche Telekom\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/2d084c5e7f34979f3e5ada3984d4e4f2.jpg\",\"name\":\"Arun Joseph\"},{\"url\":\"\/profile\/Garima-Bajpai\",\"followedByCurrentUser\":false,\"id\":\"126578967\",\"ref\":\"author-Garima-Bajpai\",\"minibio\":\"Founder - Canada, DevOps Community of Practice \",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"\",\"name\":\"Garima Bajpai\"},{\"url\":\"\/profile\/Randy-Shoup\",\"followedByCurrentUser\":false,\"id\":\"4005806\",\"ref\":\"author-Randy-Shoup\",\"minibio\":\"SVP Engineering at Thrive Market\",\"bio\":\"\",\"followers\":65,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/iVlK5aakxzEs6nr69ZWFQZfGFvhhHPzN.jpeg\",\"name\":\"Randy Shoup\"},{\"url\":\"\/profile\/Wim-Deblauwe\",\"followedByCurrentUser\":false,\"id\":\"122371483\",\"ref\":\"author-Wim-Deblauwe\",\"minibio\":\"Java Software Engineer\",\"bio\":\"\",\"followers\":52,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/f8d456605781b29d1143678d1c82e878.jpg\",\"name\":\"Wim Deblauwe\"},{\"url\":\"\/profile\/Renato-Losio\",\"followedByCurrentUser\":false,\"id\":\"126467140\",\"ref\":\"author-Renato-Losio\",\"minibio\":\"Cloud Expert | AWS Data Hero \",\"bio\":\"\",\"followers\":645,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/ptroF8HdI2vWXm0NDaKeS0JdiPxMOAra.jpg\",\"name\":\"Renato Losio\"},{\"url\":\"\/profile\/Jun-He\",\"followedByCurrentUser\":false,\"id\":\"126586099\",\"ref\":\"author-Jun-He\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\",\"name\":\"Jun He\"},{\"url\":\"\/profile\/Avraham-Poupko\",\"followedByCurrentUser\":false,\"id\":\"126666114\",\"ref\":\"author-Avraham-Poupko\",\"minibio\":\"Security Architect and Manager of Architects\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/5ae3df3b63759e3321a9e8cc9790818e.jpg\",\"name\":\"Avraham Poupko\"},{\"url\":\"\/profile\/Inna-Tokarev-Sela\",\"followedByCurrentUser\":false,\"id\":\"126666530\",\"ref\":\"author-Inna-Tokarev-Sela\",\"minibio\":\"CEO & Founder @illumex\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/a307a198ff8fe85ae317d808c01e11ff.jpg\",\"name\":\"Inna Tokarev Sela\"},{\"url\":\"\/profile\/Daniel-Bryant\",\"followedByCurrentUser\":false,\"id\":\"39485652\",\"ref\":\"author-Daniel-Bryant\",\"minibio\":\"InfoQ News Manager | Building Platforms at Syntasso\",\"bio\":\"\",\"followers\":2593,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/tSe5dczMaSGtRUm18VkTR2tcF4W3SogA.jpg\",\"name\":\"Daniel Bryant\"},{\"url\":\"\/profile\/Mandy-Gu\",\"followedByCurrentUser\":false,\"id\":\"126658071\",\"ref\":\"author-Mandy-Gu\",\"minibio\":\"Senior Software Development Manager @Wealthsimple\",\"bio\":\"\",\"followers\":7,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/f3ee9ae5c5e2bf540dc19a0be79c974b.jpg\",\"name\":\"Mandy Gu\"},{\"url\":\"\/profile\/Chris-Swan\",\"followedByCurrentUser\":false,\"id\":\"63268344\",\"ref\":\"author-Chris-Swan\",\"minibio\":\"Engineer, Atsign\",\"bio\":\"\",\"followers\":1763,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\",\"name\":\"Chris Swan\"},{\"url\":\"\/profile\/Stefania-Chaplin\",\"followedByCurrentUser\":false,\"id\":\"126594932\",\"ref\":\"author-Stefania-Chaplin\",\"minibio\":\"Founder & CEO @DevStefOps \",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/9d1ebe772a3c3c77fb08c5743b4906d1.jpg\",\"name\":\"Stefania Chaplin\"},{\"url\":\"\/profile\/Jonathan-Allen\",\"followedByCurrentUser\":false,\"id\":\"343314\",\"ref\":\"author-Jonathan-Allen\",\"minibio\":\"Software Architect\",\"bio\":\"\",\"followers\":1731,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\",\"name\":\"Jonathan Allen\"},{\"url\":\"\/profile\/Almir-Vuk\",\"followedByCurrentUser\":false,\"id\":\"126562838\",\"ref\":\"author-Almir-Vuk\",\"minibio\":\"Software Development Engineer &amp; Microsoft MVP\",\"bio\":\"\",\"followers\":69,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/10a4xguL2NiLP1IKytcp05C7SwX6DZjk.jpg\",\"name\":\"Almir Vuk\"},{\"url\":\"\/profile\/Jessica-Felix\",\"followedByCurrentUser\":false,\"id\":\"126664579\",\"ref\":\"author-Jessica-Felix\",\"minibio\":\"\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Jessica Felix\"},{\"url\":\"\/profile\/Michael-Friedrich\",\"followedByCurrentUser\":false,\"id\":\"126630553\",\"ref\":\"author-Michael-Friedrich\",\"minibio\":\"Staff Developer Advocate @GitLab\",\"bio\":\"\",\"followers\":8,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/599e3bd9d980d73d30b73ca2eb80e975.jpg\",\"name\":\"Michael Friedrich\"},{\"url\":\"\/profile\/Monica-Beckwith\",\"followedByCurrentUser\":false,\"id\":\"62671158\",\"ref\":\"author-Monica-Beckwith\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1716,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\",\"name\":\"Monica Beckwith\"},{\"url\":\"\/profile\/Azhir-Mahmood\",\"followedByCurrentUser\":false,\"id\":\"126665947\",\"ref\":\"author-Azhir-Mahmood\",\"minibio\":\"Ph.D, Research Scientist @PhysicsX\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/3a6d4cf203fdd12789e9b44952d91d0a.jpg\",\"name\":\"Azhir Mahmood\"},{\"url\":\"\/profile\/Patrick-Whelan\",\"followedByCurrentUser\":false,\"id\":\"126662225\",\"ref\":\"author-Patrick-Whelan\",\"minibio\":\"Senior Software Engineer @Deutsche Telekom\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/9ed89cafc4d90772506ef6510c9f3042.jpg\",\"name\":\"Patrick Whelan\"},{\"url\":\"\/profile\/Jessica-Andersson\",\"followedByCurrentUser\":false,\"id\":\"126592844\",\"ref\":\"author-Jessica-Andersson\",\"minibio\":\"PAL DevEx @Kognic, CNCF Ambassador & Speaker\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/010f1c62bd91a3fee23255846f423713.jpg\",\"name\":\"Jessica Andersson\"},{\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"minibio\":\"Cloud Queue Lead Editor\",\"bio\":\"\",\"followers\":698,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpeg\",\"name\":\"Steef-Jan Wiggers\"},{\"url\":\"\/profile\/Shobhit-Verma\",\"followedByCurrentUser\":false,\"id\":\"126666451\",\"ref\":\"author-Shobhit-Verma\",\"minibio\":\"\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Shobhit Verma\"},{\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"minibio\":\"Laureate Application Architect at Blackbaud\",\"bio\":\"\",\"followers\":976,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.jpg\",\"name\":\"Thomas Betts\"},{\"url\":\"\/profile\/Sophie-Weston\",\"followedByCurrentUser\":false,\"id\":\"126665795\",\"ref\":\"author-Sophie-Weston\",\"minibio\":\"Principal Engineer @ClearBank\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/c3252ff51fbb05fb7b7664317644ca26.jpg\",\"name\":\"Sophie Weston\"},{\"url\":\"\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"minibio\":\"\",\"bio\":\"\",\"followers\":628,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\",\"name\":\"Sergio De Simone\"},{\"url\":\"\/profile\/Pablo-Fredrikson\",\"followedByCurrentUser\":false,\"id\":\"126664007\",\"ref\":\"author-Pablo-Fredrikson\",\"minibio\":\"Principal Site Reliability Engineer @Bitso\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/835e95177acc281cfe09cecca6882603.jpg\",\"name\":\"Pablo Fredrikson\"},{\"url\":\"\/profile\/Christian-Bonzelet\",\"followedByCurrentUser\":false,\"id\":\"126666450\",\"ref\":\"author-Christian-Bonzelet\",\"minibio\":\"\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Christian Bonzelet\"},{\"url\":\"\/profile\/Johan-Janssen\",\"followedByCurrentUser\":false,\"id\":\"126464202\",\"ref\":\"author-Johan-Janssen\",\"minibio\":\"Architect at ASML\",\"bio\":\"\",\"followers\":400,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Fb4eZ0mtvMf6MhsmBIhsUVueV4xAs2FD.jpg\",\"name\":\"Johan Janssen\"},{\"url\":\"\/profile\/John-Heintz\",\"followedByCurrentUser\":false,\"id\":\"126665927\",\"ref\":\"author-John-Heintz\",\"minibio\":\"Founder, Technologist, Innovator \",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/e4c7637ec3647d50e00efef105b86eec.jpg\",\"name\":\"John Heintz\"},{\"url\":\"\/profile\/InfoQ\",\"followedByCurrentUser\":false,\"id\":\"126461259\",\"ref\":\"author-InfoQ\",\"minibio\":\"ACCELERATING THE SOFTWARE SIDE OF HUMAN PROGRESS\",\"bio\":\"\",\"followers\":285,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/3a8e7391f8fe97e0727a8c950c042569.jpg\",\"name\":\"InfoQ\"},{\"url\":\"\/profile\/Andrey-Cheptsov\",\"followedByCurrentUser\":false,\"id\":\"101763645\",\"ref\":\"author-Andrey-Cheptsov\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\",\"name\":\"Andrey Cheptsov\"},{\"url\":\"\/profile\/Apoorva-Joshi\",\"followedByCurrentUser\":false,\"id\":\"126666232\",\"ref\":\"author-Apoorva-Joshi\",\"minibio\":\"Senior AI Developer Advocate @MongoDB\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/5a4758e0f0c1bdee2dc103bf38f8bc05.jpg\",\"name\":\"Apoorva Joshi\"},{\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"minibio\":\"Full-Stack Java Developer &amp; Contractor\",\"bio\":\"\",\"followers\":306,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\",\"name\":\"Karsten Silz\"},{\"url\":\"\/profile\/Ben-Linders\",\"followedByCurrentUser\":false,\"id\":\"55454401\",\"ref\":\"author-Ben-Linders\",\"minibio\":\"Trainer \/ Coach \/ Adviser \/ Author \/ Speaker &#64;BenLinders.com\",\"bio\":\"\",\"followers\":668,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Dwyu3y5agoDZV9jPKwQcwQ6oYv7gVeR4.jpg\",\"name\":\"Ben Linders\"},{\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"minibio\":\"Senior Principal Software Engineer, Red Hat\",\"bio\":\"\",\"followers\":458,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\",\"name\":\"Holly Cummins\"}]'); var topicsInPage = JSON.parse('[{\"followers\":9520,\"url\":\"\/architecture-design\",\"followedByCurrentUser\":false,\"name\":\"Architecture & Design\",\"id\":\"6816\"},{\"followers\":3720,\"url\":\"\/culture-methods\",\"followedByCurrentUser\":false,\"name\":\"Culture & Methods\",\"id\":\"6817\"},{\"followers\":5139,\"url\":\"\/ai-ml-data-eng\",\"followedByCurrentUser\":false,\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\"},{\"followers\":7326,\"url\":\"\/Net-Core\",\"followedByCurrentUser\":false,\"name\":\".NET Core\",\"id\":\"15683\"},{\"followers\":5012,\"url\":\"\/Java9\",\"followedByCurrentUser\":false,\"name\":\"Java9\",\"id\":\"7097\"},{\"followers\":13363,\"url\":\"\/MachineLearning\",\"followedByCurrentUser\":false,\"name\":\"Machine Learning\",\"id\":\"5449\"},{\"followers\":20665,\"url\":\"\/microservices\",\"followedByCurrentUser\":false,\"name\":\"Microservices\",\"id\":\"15274\"},{\"followers\":4741,\"url\":\"\/Devops\",\"followedByCurrentUser\":false,\"name\":\"DevOps\",\"id\":\"6043\"},{\"followers\":11570,\"url\":\"\/reactive-programming\",\"followedByCurrentUser\":false,\"name\":\"Reactive Programming\",\"id\":\"15453\"},{\"followers\":3800,\"url\":\"\/development\",\"followedByCurrentUser\":false,\"name\":\"Development\",\"id\":\"6815\"}]'); var userContentLikesInPage = []; var userCommentsLikesInPage = []; var currentUserId = 2; </script> <meta name="ifq:pageType" content="HOMEPAGE"/> <script type="text/javascript"> InfoQConstants.pageType = 'HOMEPAGE'; </script> <meta name="keywords" content="Java, .NET, dotnet, Ruby, SOA, Service Oriented Architecture, Agile, enterprise, software development, development, architecture, programming"/> <meta name="description" content="Helping dev teams adopt new technologies and practices. Written by software engineers. Read by over 1.5 million developers worldwide."/> <meta property="og:site_name" content="InfoQ"/> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "InfoQ", "alternateName": ["InfoQ", "infoq.com"], "url": "https://www.infoq.com/" } </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20250213201535/scripts/relatedVcr.min.js"></script> <script type="application/javascript"> var communityIds = ""; var topicIds = ""; VCR.loadAllVcrs(communityIds, topicIds); </script> <link rel="image_src" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/static/images/logo/logo-big.jpg" /> <meta property="og:image" content="https://cdn.infoq.com/statics_s2_20250213201535/styles/static/images/logo/logo-big.jpg"/> <script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20250213201535/scripts/infoq.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { if (!window || !window.infoq) return infoq.init() }) </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="3i5hq46GCl4opvnz"/> <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>QCon London (April 7-10): Get actionable advice for your engineering challenges. Adopt the right emerging trends.</span> <a class="btn" href="/url/pb/3b6f7939-fc95-4c94-8d8c-c49811a8660f/" target="_blank" rel="nofollow"> Register </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="button__dropdown dropdown user__login"> <button aria-label="Sign Up / Login" class="button button__small button__green button__arrow arrow__true button__icon icon icon__user icon--only">Sign Up / Login</button> <div class="dropdown__holder"> <div class="dropdown__content"> <div class="login__dropdown"> <div class="login__module"> <div class="login__username"> <form id="login-form" data-vv-scope="login" class="login__form form" action="/login.action"> <input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin"/> <input type="hidden" name="fromP13N" id="isP13n" value="false"/> <input type="hidden" name="fromP13NId" id="p13n-id" value=""/> <input type="hidden" name="fromP13NType" id="p13n-type" value=""/> <div class="field form__row input__text input__small" data-vv-as="Email" data-vv-scope="login"> <label for="email" class="label field__label">Email</label> <input type="text" id="email" placeholder="" class="input field__input" name="username"> </div> <div class="field form__row input__password input__small" data-vv-as="Password" data-vv-scope="login"> <label for="password" class="label field__label">Password</label> <input type="password" id="password" placeholder="" class="input field__input" name="password"> <p data-message="resultMessage"></p> </div> <input type="submit" value="Login" class="form__row button button__medium button__green"> <div class="login__actions"> <button aria-label="Forgot password ?" class="forgot button button__unstyled">Forgot password ?</button> </div> </form> <form id="forgot-password-form" data-vv-scope="forgot" class="forgot__form form" action="/resetpasswordinit.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="forgot" class="field form__row input__text input__small"> <label for="forgotten_email" class="label field__label">InfoQ Account Email</label> <input id="forgotten_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="forgotPassMessage" data-message="resultMessage"></p> </div> <input type="submit" id="submit_resetPass" value="Send Recovery Email" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> <form id="email-revalidation-form" data-vv-scope="revalidation" class="revalidation__form form" action="/reactivate.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="revalidation" class="field form__row input__text input__small"> <label for="revalidated_email" class="label field__label">Resend Activation</label> <input id="revalidated_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="emailRevalidMessage" data-message="resultMessage"></p> </div> <input type="submit" value="Resend" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button id="show-login" aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> </div> <div class="login__social"> <h4 class="heading">Login with:</h4> <div class="social__connect form__row login__socials"> <a href="/social/googleLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__gray button__icon icon icon__google" title="Login with Google">Google</a> <a href="/social/liveLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__microsoft" title="Login with Microsoft">Microsoft</a> <a href="/twitter-info" class="button button__medium button__icon icon icon__twitter" title="Login with Twitter">Twitter</a> <a href="/social/facebookLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__fb" title="Login with Facebook">Facebook</a> </div> </div> <div class="login__signup"> <h4 class="heading">Don't have an InfoQ account?</h4> <a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__green">Sign Up</a> </div> </div> </div> </div> </div> </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/quarkus-efficiency">Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets</a> </h4> <p class="card__excerpt">Holly Cummins discusses some of the technical underpinnings of Quarkus’s efficiency, providing advice for those using or considering Quarkus.</p> <div class="card__footer"></div> </div> <a href="/presentations/quarkus-efficiency" class="card__header"> <img loading="lazy" alt="Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/quarkus-efficiency/en/smallimage/Holly-Cummins-small-1736174284444.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 &amp; Design" class="nav__category">Architecture &amp; 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 &amp; 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="/articles/infoq-articles-contest-2025">2025 Article Contest: Win Your Conference Ticket</a> </h4> <p class="card__excerpt">The InfoQ Team is excited to invite you to participate in our annual article writing competition. Authors of top-rated articles will win complimentary tickets to prominent software development conferences such as QCon and InfoQ Dev Summit.</p> <div class="card__footer"></div> </div> <a href="/articles/infoq-articles-contest-2025" class="card__header"> <img loading="lazy" alt="2025 Article Contest: Win Your Conference Ticket" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/infoq-articles-contest-2025/en/smallimage/article-contest-2025-thumbnail-image-1739792870025.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 &amp; 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/eclipse-lmos-ai-agents">Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed</a> </h4> <p class="card__excerpt">In this talk, the authors share some of our company’s key learnings in developing customer-facing LLM-powered applications deployed across Europe. They used multi-agent architecture and systems design to create an open-source set of tools, a framework, and a full-fledged platform to accelerate the development of AI agents. This is a summary of a presentation from InfoQ Dev Summit Boston 2024.</p> <div class="card__footer"></div> </div> <a href="/articles/eclipse-lmos-ai-agents" class="card__header"> <img loading="lazy" alt="Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/eclipse-lmos-ai-agents/en/smallimage/launching-ai-agents-across-europe-logo-small-1738065615041.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 &amp; Methods" class="nav__category">Culture &amp; 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 &amp; 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/personal-brand">Five Steps to Building a Personal Brand for Elevating Your Influence</a> </h4> <p class="card__excerpt">Pablo Fredrikson discusses how to grow your personal brand to land better opportunities and have a greater impact.</p> <div class="card__footer"></div> </div> <a href="/presentations/personal-brand" class="card__header"> <img loading="lazy" alt="Five Steps to Building a Personal Brand for Elevating Your Influence" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/personal-brand/en/smallimage/pablo-fredrikson-thumbnail-1739263262480.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/devsecops-ai">Efficient DevSecOps Workflows with a Little Help from AI</a> </h4> <p class="card__excerpt">Michael Friedrich tells a story about experienced pain points, wasted hours debugging and solving, and learning how a little help from AI makes DevSecOps workflows efficient again.</p> <div class="card__footer"></div> </div> <a href="/presentations/devsecops-ai" class="card__header"> <img loading="lazy" alt="Efficient DevSecOps Workflows with a Little Help from AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/devsecops-ai/en/smallimage/MichaelFriedrich-small-1734515745316.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="/about-c4media" 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="header__events-all"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qlondon25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>QCon London</span> <p>Discover emerging trends, insights, and real-world best practices in software development &amp; tech leadership. Join now.</p> </div> </a> <a href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_idsboston25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>InfoQ Dev Summit Boston</span> <p>Learn how senior software developers are solving the challenges you face. Register now with early bird tickets.</p> </div> </a> <a href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon San Francisco - image"></picture> <div> <span>QCon San Francisco</span> <p>Explore insights, real-world best practices and solutions in software development & leadership. Register now.</p> </div> </a> <a href="https://www.infoq.com/software-architects-newsletter/" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="The Software Architects Newsletter - image"></picture> <div> <span>The Software Architects' Newsletter</span> <p>Your monthly guide to all the topics, technologies and techniques that every professional needs to know about. Subscribe for free.</p> </div> </a> </div> </div> <!----> </div> </div> </div> </header> <!-- ####### CONTENT START ######### --> <main> <div class="homepage" data-trk-ref="hover_homepage_index"> <h1 class="display-none">InfoQ Homepage</h1> <section class="section container homepage__news"> <div class="container__inner columns"> <div id="newsGridSection" data-col="2/3"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/news/">News</a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="large" data-hoverables="true" data-tax="news" data-cols="2" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/devproxy-024-openapi/"> DevProxy 0.24 Adds More OpenAPI Options </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Edin-Kapi%C4%87/" data-id="author-Edin-Kapić">Edin Kapić</a> </span> </div> <span class="card__date date"> on <span> Feb 17 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/java-news-roundup-feb10-2025/"> Java News Roundup: JDK 24-RC1, JDK Mission Control, Spring, Hibernate, Vert.x, JHipster, Gradle </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Michael-Redlich/" data-id="author-Michael-Redlich">Michael Redlich</a> </span> </div> <span class="card__date date"> on <span> Feb 17 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/aerospike-database-8-acid/"> Distributed Multi-Modal Database Aerospike 8 Brings Support for Real-Time ACID Transactions </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sergio-De-Simone/" data-id="author-Sergio-De-Simone">Sergio De Simone</a> </span> </div> <span class="card__date date"> on <span> Feb 16 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/report-resilience-devops-dora/"> Most Companies Experience Weekly Outages: the State of Resilience 2025 Report </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Rafal-Gancarz/" data-id="author-Rafal-Gancarz">Rafal Gancarz</a> </span> </div> <span class="card__date date"> on <span> Feb 16 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/clickhouse-arm-graviton/"> ClickHouse Reports 25% Performance Gain after Migrating Cloud Workloads to AWS ARM Instances </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Renato-Losio/" data-id="author-Renato-Losio">Renato Losio</a> </span> </div> <span class="card__date date"> on <span> Feb 15 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/improve-learn-software-dev/"> How to Foster a Continuous Improvement and Learning Mindset in Software Development </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> </div> <span class="card__date date"> on <span> Feb 13 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/gemini-2-flash-lite-pro-models/"> Gemini 2.0 Family Expands with Cost-Efficient Flash-Lite and Pro-Experimental Models </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sergio-De-Simone/" data-id="author-Sergio-De-Simone">Sergio De Simone</a> </span> </div> <span class="card__date date"> on <span> Feb 13 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/news/2025/02/uno-platform-56/"> Uno Platform 5.6 Released: Performance Enhancements, Hot Reload Improvements and More </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Almir-Vuk/" data-id="author-Almir-Vuk">Almir Vuk</a> </span> </div> <span class="card__date date"> on <span> Feb 13 </span> </span> </div> </div> </div> </div> </li> </ul> <a href="/news/" class="button__more button button__has-transition button__arrow arrow__right"> MORE NEWS </a> </div> </div> </div> </div> <div data-col="1/3"> <div id="mostPopularSection" class="widget popular"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading icon icon__popular">Trending</h2> </div> </div> <div class="tabs" id="trending"> <div class="tab" data-title="10 days" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 5960 publication date: Feb 13, 2025--> <a href="/news/2025/02/java-24-so-far/"> JDK 24 and JDK 25: What We Know So Far </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="podcasts"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3849 publication date: Feb 10, 2025--> <a href="/podcasts/dissecting-intelligence-ai/"> Dissecting the Intelligence of AI with Avraham Poupko </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3658 publication date: Feb 08, 2025--> <a href="/news/2025/02/canva-incident-report/"> How Locking, Saturation and CDN Network Issues Brought down Canva </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3642 publication date: Feb 11, 2025--> <a href="/news/2025/02/corag-microsoft-ai/"> Microsoft Introduces CoRAG: Enhancing AI Retrieval with Iterative Reasoning </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 3385 publication date: Feb 15, 2025--> <a href="/news/2025/02/clickhouse-arm-graviton/"> ClickHouse Reports 25% Performance Gain after Migrating Cloud Workloads to AWS ARM Instances </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 1350 publication date: Feb 11, 2025--> <a href="/news/2025/02/openai-o3-mini/"> OpenAI Releases Reasoning Model o3-mini, Faster and More Accurate Than o1 </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="presentations"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 1150 publication date: Feb 12, 2025--> <a href="/presentations/open-source-llm/"> Leveraging Open-source LLMs for Production </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="podcasts"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 1145 publication date: Feb 14, 2025--> <a href="/podcasts/building-responsible-ai-culture/"> Building Responsible AI Culture: Governance, Diversity, and the Future of Development </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 1085 publication date: Feb 10, 2025--> <a href="/news/2025/02/java-news-roundup-feb03-2025/"> Java News Roundup: LangChain4j 1.0-Beta1, JHipster Lite, GlassFish, Spring Cloud Stream Applications </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 978 publication date: Feb 10, 2025--> <a href="/news/2025/02/ferretdb-documentdb/"> FerretDB, an Open-Source Alternative to MongoDB, Releases Version 2.0 </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 944 publication date: Feb 11, 2025--> <a href="/news/2025/02/micronaut-langchain4j/"> Micronaut Framework 4.7.0 Provides Integration with LangChain4j and Graal Languages </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: tendays pageviews: 750 publication date: Feb 13, 2025--> <a href="/news/2025/02/improve-learn-software-dev/"> How to Foster a Continuous Improvement and Learning Mindset in Software Development </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> <div class="tab" data-title="40 days" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 40626 publication date: Feb 06, 2025--> <a href="/news/2025/02/amazon-eventbridge-cross-account/"> Amazon EventBridge Event Bus Cross-Account Event Delivery </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 15243 publication date: Jan 31, 2025--> <a href="/news/2025/01/deepseek-ai-janus/"> DeepSeek Release Another Open-Source AI Model, Janus Pro </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 10711 publication date: Jan 23, 2025--> <a href="/news/2025/01/aws-bedrock-multi-agent-ai/"> Amazon Bedrock Introduces Multi-Agent Systems (MAS) with Open Source Framework Integration </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 7929 publication date: Jan 16, 2025--> <a href="/articles/spring-security-flow-diagrams/"> Spring Security Configuration with Flow Diagrams </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 7921 publication date: Jan 29, 2025--> <a href="/articles/rethinking-medallion-architecture/"> The End of the Bronze Age: Rethinking the Medallion Architecture </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 6683 publication date: Jan 20, 2025--> <a href="/news/2025/01/java-news-roundup-jan13-2025/"> Java News Roundup: JDK 24 in Rampdown Phase Two, Spring Framework, JobRunr, Commonhaus Foundation </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 5960 publication date: Feb 13, 2025--> <a href="/news/2025/02/java-24-so-far/"> JDK 24 and JDK 25: What We Know So Far </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 5417 publication date: Jan 21, 2025--> <a href="/news/2025/01/deepseek-v3-llm/"> DeepSeek Open-Sources DeepSeek-V3, a 671B Parameter Mixture of Experts LLM </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="podcasts"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 4960 publication date: Jan 13, 2025--> <a href="/podcasts/building-green-software/"> Building Green Software with Anne Currie and Sara Bergman </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 4954 publication date: Jan 28, 2025--> <a href="/news/2025/01/meta-large-concept-model/"> Meta Open-Sources Large Concept Model, a Language Model That Predicts Entire Sentences </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 4656 publication date: Jan 11, 2025--> <a href="/news/2025/01/express-5-released/"> Express 5.0 Released, Focuses on Stability and Security </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: fortydays pageviews: 4506 publication date: Feb 03, 2025--> <a href="/news/2025/02/java-news-roundup-jan27-2025/"> Java News Roundup: Java Operator SDK 5.0, Open Liberty, Quarkus MCP, Vert.x, JBang, TornadoVM </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> <div class="tab" data-title="6 months" > <ol data-size="xs" data-cols="1" class="cards popular__cards"> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 50298 publication date: Oct 30, 2024--> <a href="/news/2024/10/aws-lambda-code-editor/"> AWS Lambda Introduces a Visual Studio Code-Based Editor with Advanced Features and AI Integration </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 40626 publication date: Feb 06, 2025--> <a href="/news/2025/02/amazon-eventbridge-cross-account/"> Amazon EventBridge Event Bus Cross-Account Event Delivery </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 39355 publication date: Nov 01, 2024--> <a href="/news/2024/11/cloudflare-workers-durable-scale/"> Cloudflare Introduces Workflows for Building Scalable Resilient Multi-Step Applications </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 38169 publication date: Sep 14, 2024--> <a href="/news/2024/09/amazon-storage-browser-s3/"> Amazon Introduces Storage Browser for S3 </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 36458 publication date: Nov 15, 2024--> <a href="/news/2024/11/aws-s3-static-website-hosting/"> AWS Amplify and Amazon S3 Integration Simplifies Static Website Hosting </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="presentations"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 34518 publication date: Aug 20, 2024--> <a href="/presentations/arcticdb/"> Why a Hedge Fund Built Its Own Database </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 29053 publication date: Oct 23, 2024--> <a href="/news/2024/10/azure-confidential-vms-nvidia/"> Microsoft Launches Azure Confidential VMs with NVIDIA Tensor Core GPUs for Enhanced Secure Workloads </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 28938 publication date: Nov 20, 2024--> <a href="/news/2024/11/azure-service-bus-local-emulator/"> Microsoft Introduces Long-Awaited Local Emulator for Azure Service Bus </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 28142 publication date: Sep 06, 2024--> <a href="/articles/ai-ml-data-engineering-trends-2024/"> InfoQ AI, ML and Data Engineering Trends Report - September 2024 </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="news"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 24365 publication date: Aug 15, 2024--> <a href="/news/2024/08/aws-graviton-ec2-hibernation/"> AWS Graviton-Based EC2 Instance Hibernation: Cost Efficiency and Faster Operations </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="articles"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 24044 publication date: Oct 14, 2024--> <a href="/articles/cell-based-architecture-distributed-systems/"> How Cell-Based Architecture Enhances Modern Distributed Systems </a> </h5> <div class="card__footer"></div> </div> </div> </li> <li class="podcasts"> <div class="card__content"> <span class="card__icon">Icon</span> <div class="card__data"> <h5 class="card__title"> <!-- section: sixmonths pageviews: 7234 publication date: Sep 16, 2024--> <a href="/podcasts/primer-ai-for-architects/"> A Primer on AI for Architects with Anthony Alford </a> </h5> <div class="card__footer"></div> </div> </div> </li> </ol> </div> </div> </div> </div> </div> </section> <section class="section container homepage__articles section__prsp white"> <div class="container__inner columns"> <div data-col="2/3"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/articles/"> Articles </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="large" data-horizontal="true" data-hoverables="true" data-tax="articles" data-cols="2" class="cards no-style boxes"> <li> <div class="card__content"> <a href="/articles/infoq-articles-contest-2025/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/infoq-articles-contest-2025/en/smallimage/article-contest-2025-thumbnail-image-1739792870025.jpg" alt="2025 Article Contest: Win Your Conference Ticket" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/articles/infoq-articles-contest-2025/">2025 Article Contest: Win Your Conference Ticket</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> <span class="card__date date"> on <span> Feb 17 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/articles/eclipse-lmos-ai-agents/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/eclipse-lmos-ai-agents/en/smallimage/launching-ai-agents-across-europe-logo-small-1738065615041.jpg" alt="Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/articles/eclipse-lmos-ai-agents/">Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Arun-Joseph/" data-id="author-Arun-Joseph">Arun Joseph</a> </span> <span> <a href="/profile/Patrick-Whelan/" data-id="author-Patrick-Whelan">Patrick Whelan</a> </span> </div> <span class="card__date date"> on <span> Feb 17 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/articles/building-trust-ai/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/building-trust-ai/en/smallimage/building-trust-ai-logo-small-1737705826871.jpg" alt="Building Trust in AI: Security and Risks in Highly Regulated Industries" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/articles/building-trust-ai/">Building Trust in AI: Security and Risks in Highly Regulated Industries</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Stefania-Chaplin/" data-id="author-Stefania-Chaplin">Stefania Chaplin</a> </span> <span> <a href="/profile/Azhir-Mahmood/" data-id="author-Azhir-Mahmood">Azhir Mahmood</a> </span> </div> <span class="card__date date"> on <span> Feb 10 </span> </span> </div> </div> </div> </div> </li> <li> <div class="card__content"> <a href="/articles/gen-ai-productivity-tools/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/gen-ai-productivity-tools/en/smallimage/launching-genai-productivity-logo-small-1738589754146.jpg" alt="Launching GenAI Productivity Tools: Insights and Lessons" class="card__image"> </a> <div class="card__data"> <h4 class="card__title"> <a href="/articles/gen-ai-productivity-tools/">Launching GenAI Productivity Tools: Insights and Lessons</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Mandy-Gu/" data-id="author-Mandy-Gu">Mandy Gu</a> </span> </div> <span class="card__date date"> on <span> Feb 06 </span> </span> </div> </div> </div> </div> </li> </ul> <a href="/articles/" class="button__more button button__has-transition button__arrow arrow__right"> MORE ARTICLES </a> </div> </div> </div> </div> <div data-col="1/3"> <script type="text/javascript"> createOptionalVcrs({ uriMapping : "", languageUri : "", excludedVcrIds : "", nativeVcrAdsEnabled : "true", vcrsPosition : "1" }); function createOptionalVcrs(params) { if(params.nativeVcrAdsEnabled) { VCR.addIdstoExcludeList(params.excludedVcrIds); if(params <= 1) { window.finishedVcrOptional1 = false; }else if(params.vcrsPosition == 2) { window.finishedVcrOptional2 = false; } var intervalOptional = setInterval(function() { if(window.vcrsLoaded) { if((InfoQConstants.pageType == "HOMEPAGE" && (params.vcrsPosition <=1 || window.finishedRelatedVcr)) || (InfoQConstants.pageType != "HOMEPAGE" && (window.contentVcrFinished == true && (params.vcrsPosition == 2 || params.vcrsPosition <= 1)))) { clearInterval(intervalOptional); if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 2, true, null); if(vcrs != null && vcrs.length == 2) { getOptionalElements(vcrs, params); } toggleAds(vcrs, params); } else { if(params.vcrsPosition <= 1) { window.finishedVcrOptional1 = true; } else { window.finishedVcrOptional2 = true; } } } } }, 200); } } </script> <div id="vcrOptional1" class="widget prsp box__border f_bFQDdOL5mULx7hUXhswX box nocontent " data-place="1" data-trk-view="true" data-trk-impr="true"> <h3 class="widget__heading">Related Sponsored Content</h3> <ul class="prsp__items no-style vcrs_optional_1"></ul> </div> </div> </div> </section> <section row="" class="section container e__gray white"> <div class="container__inner"> <div class="e__heading"> <h4>In case you missed it</h4> <a href="https://www.infoq.com/presentations/" class="t_home_qcon-section_see-all">SEE ALL</a> </div> <div> <div class="e__cards no-style flex_cards"> <div class="single_card"> <a href="https://www.infoq.com/presentations/long-running-processes/" class="thumb t_home_qcon-section_news-item" aria-label="Are You Done Yet? Mastering Long-Running Processes in Modern Architectures"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvbG9uZy1ydW5uaW5nLXByb2Nlc3Nlcy5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvbG9uZy1ydW5uaW5nLXByb2Nlc3Nlcy5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvbG9uZy1ydW5uaW5nLXByb2Nlc3Nlcy5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="246px" height="129px" alt="Are You Done Yet? Mastering Long-Running Processes in Modern Architectures - image"></picture> </a> <h4 class="title"><a href="https://www.infoq.com/presentations/long-running-processes/" class="t_home_qcon-section_news-item">Are You Done Yet? Mastering Long-Running Processes in Modern Architectures</a></h4> <footer> <div class="authors"><span>Bernd Ruecker</span></div> </footer> </div> <div class="single_card"> <a href="https://www.infoq.com/presentations/1brc/" class="thumb t_home_qcon-section_news-item" aria-label="1BRC–Nerd Sniping the Java Community"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvMWJyYy5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvMWJyYy5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvMWJyYy5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="246px" height="129px" alt="1BRC–Nerd Sniping the Java Community - image"></picture> </a> <h4 class="title"><a href="https://www.infoq.com/presentations/1brc/" class="t_home_qcon-section_news-item">1BRC–Nerd Sniping the Java Community</a></h4> <footer> <div class="authors"><span>Gunnar Morling</span></div> </footer> </div> <div class="single_card"> <a href="https://www.infoq.com/presentations/architect-lessons/" class="thumb t_home_qcon-section_news-item" aria-label="Thinking Like an Architect"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvYXJjaGl0ZWN0LWxlc3NvbnMuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvYXJjaGl0ZWN0LWxlc3NvbnMuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvYXJjaGl0ZWN0LWxlc3NvbnMuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="246px" height="129px" alt="Thinking Like an Architect - image"></picture> </a> <h4 class="title"><a href="https://www.infoq.com/presentations/architect-lessons/" class="t_home_qcon-section_news-item">Thinking Like an Architect</a></h4> <footer> <div class="authors"><span>Gregor Hohpe</span></div> </footer> </div> <div class="single_card"> <a href="https://www.infoq.com/presentations/threads-meta/" class="thumb t_home_qcon-section_news-item" aria-label="0 → 1, Shipping Threads in 5 Months"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvdGhyZWFkcy1tZXRhLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvdGhyZWFkcy1tZXRhLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvdGhyZWFkcy1tZXRhLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="246px" height="129px" alt="0 → 1, Shipping Threads in 5 Months - image"></picture> </a> <h4 class="title"><a href="https://www.infoq.com/presentations/threads-meta/" class="t_home_qcon-section_news-item">0 → 1, Shipping Threads in 5 Months</a></h4> <footer> <div class="authors"><span>Zahan Malkani</span></div> </footer> </div> <div class="single_card"> <a href="https://www.infoq.com/presentations/platform-as-a-runtime/" class="thumb t_home_qcon-section_news-item" aria-label="When DevOps Runs Its Course - We Need Platform as a Runtime"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvcGxhdGZvcm0tYXMtYS1ydW50aW1lLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvcGxhdGZvcm0tYXMtYS1ydW50aW1lLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfcWNvblJvdW5kdXAvcGxhdGZvcm0tYXMtYS1ydW50aW1lLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="246px" height="129px" alt="When DevOps Runs Its Course - We Need Platform as a Runtime - image"></picture> </a> <h4 class="title"><a href="https://www.infoq.com/presentations/platform-as-a-runtime/" class="t_home_qcon-section_news-item">When DevOps Runs Its Course - We Need Platform as a Runtime</a></h4> <footer> <div class="authors"><span>Aviran Mordo</span></div> </footer> </div> </div> </div> </div> </section> <section class="section container e__black white"> <div class="container__inner columns"> <div> <div class="e__slider-info"> <h4 class="e__heading">InfoQ Trends Report</h4> </div> <div class="e__slide-container"> <div id="mustWatchSlider" class="e__cards no-style mustWatchSlider"> <div class="li_card" data-type="podcasts" hoverables data-col="1/5"> <a href="https://www.infoq.com/podcasts/2024-year-review/" class="thumb" aria-label="Key Trends from 2024: Cell-based Architecture, DORA & SPACE, LLM & SLM, Cloud Databases and Portals"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9lbmQtb2YteWVhci1wb2RjYXN0LW1haW4tcGFnZS1jYXJkLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9lbmQtb2YteWVhci1wb2RjYXN0LW1haW4tcGFnZS1jYXJkLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9lbmQtb2YteWVhci1wb2RjYXN0LW1haW4tcGFnZS1jYXJkLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="241px" height="129px" alt="Key Trends from 2024: Cell-based Architecture, DORA & SPACE, LLM & SLM, Cloud Databases and Portals - image"></picture> </a> <!----> <!----> <h4 class="title"><a href="https://www.infoq.com/podcasts/2024-year-review/">Key Trends from 2024: Cell-based Architecture, DORA & SPACE, LLM & SLM, Cloud Databases and Portals</a></h4> <!----> <!----> <footer> <div class="authors"> <span><a data-id="author-Daniel-Bryant" href="https://www.infoq.com/profile/Daniel-Bryant/" >Daniel Bryant </a></span> <span><a data-id="author-Thomas-Betts" href="https://www.infoq.com/profile/Thomas-Betts/" >Thomas Betts </a></span> <span><a data-id="author-Shane-Hastie" href="https://www.infoq.com/profile/Shane-Hastie/" >Shane Hastie </a></span> <span><a data-id="author-Srini-Penchikala" href="https://www.infoq.com/profile/Srini-Penchikala/" >Srini Penchikala </a></span> <span><a data-id="author-Renato-Losio" href="https://www.infoq.com/profile/Renato-Losio/" >Renato Losio </a></span> </div> </footer> </div> <div class="li_card" data-type="articles" hoverables data-col="1/5"> <a href="https://www.infoq.com/articles/java-trends-report-2024/" class="thumb" aria-label="InfoQ Java Trends Report 2024"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9qYXZhLXRyZW5kcy1yZXBvcnQtMjAyNC5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9qYXZhLXRyZW5kcy1yZXBvcnQtMjAyNC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9qYXZhLXRyZW5kcy1yZXBvcnQtMjAyNC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="241px" height="129px" alt="InfoQ Java Trends Report 2024 - image"></picture> </a> <!----> <!----> <h4 class="title"><a href="https://www.infoq.com/articles/java-trends-report-2024/">InfoQ Java Trends Report 2024</a></h4> <!----> <!----> <footer> <div class="authors"> <span><a data-id="author-Michael-Redlich" href="https://www.infoq.com/profile/Michael-Redlich/" >Michael Redlich </a></span> <span><a data-id="author-Ben-Evans" href="https://www.infoq.com/profile/Ben-Evans/" >Ben Evans </a></span> <span><a data-id="author-Holly-Cummins" href="https://www.infoq.com/profile/Holly-Cummins/" >Holly Cummins </a></span> <span><a data-id="author-A-N-M-Bazlur-Rahman" href="https://www.infoq.com/profile/A-N-M-Bazlur-Rahman/">A N M Bazlur Rahman </a></span> <span><a data-id="author-Grace-Jansen" href="https://www.infoq.com/profile/Grace-Jansen/" >Grace Jansen </a></span> <span><a data-id="author-Emily-Jiang" href="https://www.infoq.com/profile/Emily-Jiang/" >Emily Jiang </a></span> <span><a data-id="author-Ivar-Grimstad" href="https://www.infoq.com/profile/Ivar-Grimstad/" >Ivar Grimstad </a></span> <span><a data-id="author-Andrea-Peruffo" href="https://www.infoq.com/profile/Andrea-Peruffo/" >Andrea Peruffo </a></span> <span><a data-id="author-Erik-Costlow" href="https://www.infoq.com/profile/Erik-Costlow/" >Erik Costlow </a></span> <span><a data-id="author-Johan-Janssen" href="https://www.infoq.com/profile/Johan-Janssen/" >Johan Janssen </a></span> <span><a data-id="author-Karsten-Silz" href="https://www.infoq.com/profile/Karsten-Silz/" >Karsten Silz </a></span> </div> </footer> </div> <div class="li_card" data-type="articles" hoverables data-col="1/5"> <a href="https://www.infoq.com/articles/ai-ml-data-engineering-trends-2024/" class="thumb" aria-label="AI, ML, and Data Engineering InfoQ Trends Report 2024"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9haS1tbC10aHVtYi0yMDI0LmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9haS1tbC10aHVtYi0yMDI0LmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9haS1tbC10aHVtYi0yMDI0LmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="241px" height="129px" alt="AI, ML, and Data Engineering InfoQ Trends Report 2024 - image"></picture> </a> <!----> <!----> <h4 class="title"><a href="https://www.infoq.com/articles/ai-ml-data-engineering-trends-2024/">AI, ML, and Data Engineering InfoQ Trends Report 2024</a></h4> <!----> <!----> <footer> <div class="authors"> <span><a href="https://www.infoq.com/profile/Mandy-Gu/" data-id="author-Mandy-Gu">Mandy Gu</a></span> <span><a href="https://www.infoq.com/profile/Namee-Oberst/" data-id="author-Namee-Oberst">Namee Oberst</a></span> <span><a href="https://www.infoq.com/profile/Srini-Penchikala/" data-id="author-Srini-Penchikala">Srini Penchikala</a></span> <span><a href="https://www.infoq.com/profile/Roland-Meertens/" data-id="author-Roland-Meertens">Roland Meertens</a></span> <span><a href="https://www.infoq.com/profile/Anthony-Alford/" data-id="author-Anthony-Alford">Anthony Alford</a></span> <span><a href="https://www.infoq.com/profile/Daniel-Dominguez/" data-id="author-Daniel-Dominguez">Daniel Dominguez</a></span> </div> </footer> </div> <div class="li_card" data-type="articles" hoverables data-col="1/5"> <a href="https://www.infoq.com/articles/architecture-trends-2024/" class="thumb" aria-label="AI, ML, and Data Engineering InfoQ Trends Report 2024"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9hcmNoaXRlY3R1cmUtMjAyNC5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9hcmNoaXRlY3R1cmUtMjAyNC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9hcmNoaXRlY3R1cmUtMjAyNC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="241px" height="129px" alt="InfoQ Software Architecture and Design Trends Report 2024 - image"></picture> </a> <!----> <!----> <h4 class="title"><a href="https://www.infoq.com/articles/architecture-trends-2024/">InfoQ Software Architecture and Design Trends Report 2024</a></h4> <!----> <!----> <footer> <div class="authors"> <span><a href="https://www.infoq.com/profile/Thomas-Betts/" data-id="author-Thomas-Betts">Thomas Betts</a></span> <span><a href="https://www.infoq.com/profile/Blanca-Garcia-Gil/" data-id="author-Blanca-Garcia-Gil">Blanca Garcia Gil</a></span> <span><a href="https://www.infoq.com/profile/Eran-Stiller/" data-id="author-Eran-Stiller">Eran Stiller</a></span> <span><a href="https://www.infoq.com/profile/Daniel-Bryant/" data-id="author-Daniel-Bryant">Daniel Bryant</a></span> <span><a href="https://www.infoq.com/profile/Rafal-Gancarz/" data-id="author-Rafal-Gancarz">Rafal Gancarz</a></span> </div> </footer> </div> <div class="li_card" data-type="articles" hoverables data-col="1/5"> <a href="https://www.infoq.com/articles/culture-trends-2024/" class="thumb" aria-label="InfoQ Culture & Methods Trends Report 2024"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9jdWx0dXJlLTIwMjQuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9jdWx0dXJlLTIwMjQuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZXhwZXJpbWVudHMvaG9tZXBhZ2VfdHJlbmRfcmVwb3J0cy9jdWx0dXJlLTIwMjQuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="241px" height="129px" alt="InfoQ Culture & Methods Trends Report 2024 - image"></picture> </a> <!----> <!----> <h4 class="title"><a href="https://www.infoq.com/articles/culture-trends-2024/">InfoQ Culture & Methods Trends Report 2024</a></h4> <!----> <!----> <footer> <div class="authors"> <span><a href="https://www.infoq.com/profile/Shane-Hastie/" data-id="author-Shane-Hastie">Shane Hastie</a></span> <span><a href="https://www.infoq.com/profile/Jutta-Eckstein/" data-id="author-Jutta-Eckstein">Jutta Eckstein</a></span> <span><a href="https://www.infoq.com/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a></span> <span><a href="https://www.infoq.com/profile/Susan-McIntosh/" data-id="author-Susan-McIntosh">Susan McIntosh</a></span> <span><a href="https://www.infoq.com/profile/Rafiq-Gemmail/" data-id="author-Rafiq-Gemmail">Rafiq Gemmail</a></span> <span><a href="https://www.infoq.com/profile/Craig-Smith/" data-id="author-Craig-Smith">Craig Smith</a></span> </div> </footer> </div> </div> <button class="nextMustWatch slider_nextMustWatch"> <svg width="13" height="20" viewBox="0 0 13 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.875 18.7857L12.125 9.85716L0.875 0.928589" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <button class="prevMustWatch slider_prevMustWatch"> <svg width="13" height="20" viewBox="0 0 13 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.875 18.7857L12.125 9.85716L0.875 0.928589" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> </div> </div> <!----> <!----> <!----> <!----> <!----> <!----> <!----> <!----> </div> </section> <section class="section container section__split"> <div class="container__inner columns"> <div data-col="2/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/presentations/"> Presentations </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="presentations" data-cols="2" class="cards no-style boxes"> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/personal-brand/" > Five Steps to Building a Personal Brand for Elevating Your Influence </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Pablo-Fredrikson/" data-id="author-Pablo-Fredrikson">Pablo Fredrikson</a> </span> </div> <span class="card__date date"> on <span> Feb 14 </span> </span> </div> </div> </div> <a href="/presentations/personal-brand/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/personal-brand/en/mediumimage/pablo-fredrikson-medium-1739263262480.jpeg" class="card__image" alt="" border="0" title="Five Steps to Building a Personal Brand for Elevating Your Influence" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 48:46 </div> </div> </a> </div> </li> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/performance-observability-front-end/" > Lessons Learned in the Financial Market about Performance and Observability in Front-End Projects </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Jessica-Felix/" data-id="author-Jessica-Felix">Jessica Felix</a> </span> </div> <span class="card__date date"> on <span> Feb 13 </span> </span> </div> </div> </div> <a href="/presentations/performance-observability-front-end/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/performance-observability-front-end/en/mediumimage/jessica-felix-medium-1736773701551.jpg" class="card__image" alt="" border="0" title="Lessons Learned in the Financial Market about Performance and Observability in Front-End Projects" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 36:37 </div> </div> </a> </div> </li> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/open-source-llm/" > Leveraging Open-source LLMs for Production </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Andrey-Cheptsov/" data-id="author-Andrey-Cheptsov">Andrey Cheptsov</a> </span> </div> <span class="card__date date"> on <span> Feb 12 </span> </span> </div> </div> </div> <a href="/presentations/open-source-llm/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/open-source-llm/en/mediumimage/Andrey-Cheptsov-medium-1737105576530.jpg" class="card__image" alt="" border="0" title="Leveraging Open-source LLMs for Production" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 44:16 </div> </div> </a> </div> </li> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/devsecops-ai/" > Efficient DevSecOps Workflows with a Little Help from AI </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Michael-Friedrich/" data-id="author-Michael-Friedrich">Michael Friedrich</a> </span> </div> <span class="card__date date"> on <span> Feb 11 </span> </span> </div> </div> </div> <a href="/presentations/devsecops-ai/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/devsecops-ai/en/mediumimage/MichaelFriedrich-medium-1734515745316.jpg" class="card__image" alt="" border="0" title="Efficient DevSecOps Workflows with a Little Help from AI" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 48:43 </div> </div> </a> </div> </li> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/generative-ai-2025/" > Modernizing DevOps with AI, Boosting Productivity, and Redefining Developer Experience </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Christian-Bonzelet/" data-id="author-Christian-Bonzelet">Christian Bonzelet</a> </span> <span> <a href="/profile/Jessica-Andersson/" data-id="author-Jessica-Andersson">Jessica Andersson</a> </span> <span> <a href="/profile/Garima-Bajpai/" data-id="author-Garima-Bajpai">Garima Bajpai</a> </span> <span> <a href="/profile/Shobhit-Verma/" data-id="author-Shobhit-Verma">Shobhit Verma</a> </span> <span> <a href="/profile/Renato-Losio/" data-id="author-Renato-Losio">Renato Losio</a> </span> </div> <span class="card__date date"> on <span> Feb 10 </span> </span> </div> </div> </div> <a href="/presentations/generative-ai-2025/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/generative-ai-2025/en/mediumimage/infoqlive-540x400-1739179020574.jpg" class="card__image" alt="" border="0" title="Modernizing DevOps with AI, Boosting Productivity, and Redefining Developer Experience" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 01:00:47 </div> </div> </a> </div> </li> <li data-transcript > <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/presentations/ips-maestro-iceberg/" > Efficient Incremental Processing with Netflix Maestro and Apache Iceberg </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Jun-He/" data-id="author-Jun-He">Jun He</a> </span> </div> <span class="card__date date"> on <span> Feb 07 </span> </span> </div> </div> </div> <a href="/presentations/ips-maestro-iceberg/" class="card__header" title=""> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/presentations/ips-maestro-iceberg/en/mediumimage/jun-he-medium-1738146151045.jpg" class="card__image" alt="" border="0" title="Efficient Incremental Processing with Netflix Maestro and Apache Iceberg" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 44:32 </div> </div> </a> </div> </li> </ul> <a href="/presentations/" class="button__more button button__has-transition button__arrow arrow__right"> MORE PRESENTATIONS </a> </div> </div> </div> </div> <div data-col="2/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/podcasts/"> Podcasts </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="podcasts" data-cols="2" class="cards no-style boxes"> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/software-fail-recover-matters/" title=""> Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Randy-Shoup/" data-id="author-Randy-Shoup">Randy Shoup</a> </span> </div> <span class="card__date date"> on <span> Feb 17 </span> </span> </div> </div> </div> <a href="/podcasts/software-fail-recover-matters/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/software-fail-recover-matters/en/mediumimage/randy-shoup-interviewee-photo-1739522770900.jpg" class="card__image" alt="Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">01:00:20</div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/building-responsible-ai-culture/" title=""> Building Responsible AI Culture: Governance, Diversity, and the Future of Development </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Inna-Tokarev-Sela/" data-id="author-Inna-Tokarev-Sela">Inna Tokarev Sela</a> </span> </div> <span class="card__date date"> on <span> Feb 14 </span> </span> </div> </div> </div> <a href="/podcasts/building-responsible-ai-culture/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/building-responsible-ai-culture/en/mediumimage/Inna-Tokarev-Sela-interviewee-photo-1738752448222.jpeg" class="card__image" alt="Building Responsible AI Culture: Governance, Diversity, and the Future of Development"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">20:23</div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/dissecting-intelligence-ai/" title=""> Dissecting the Intelligence of AI with Avraham Poupko </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Avraham-Poupko/" data-id="author-Avraham-Poupko">Avraham Poupko</a> </span> </div> <span class="card__date date"> on <span> Feb 10 </span> </span> </div> </div> </div> <a href="/podcasts/dissecting-intelligence-ai/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/dissecting-intelligence-ai/en/mediumimage/Avraham-Poupko-interviewee-photo-1738057698620.jpeg" class="card__image" alt="Dissecting the Intelligence of AI with Avraham Poupko"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">34:16</div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/llm-application-evaluation-performance-improvements/" title=""> Apoorva Joshi on LLM Application Evaluation and Performance Improvements </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Apoorva-Joshi/" data-id="author-Apoorva-Joshi">Apoorva Joshi</a> </span> </div> <span class="card__date date"> on <span> Feb 03 </span> </span> </div> </div> </div> <a href="/podcasts/llm-application-evaluation-performance-improvements/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/llm-application-evaluation-performance-improvements/en/mediumimage/Apoorva-Joshi-interviewee-photo-1738226733946.jpeg" class="card__image" alt="Apoorva Joshi on LLM Application Evaluation and Performance Improvements"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">30:48</div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/human-factor-data-driven-decisions/" title=""> The Human Factor in UX and Data-Driven Decisions </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/John-Heintz/" data-id="author-John-Heintz">John Heintz</a> </span> </div> <span class="card__date date"> on <span> Jan 31 </span> </span> </div> </div> </div> <a href="/podcasts/human-factor-data-driven-decisions/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/human-factor-data-driven-decisions/en/mediumimage/interviewee-john-heintz-1737622753379.jpeg" class="card__image" alt="The Human Factor in UX and Data-Driven Decisions"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">23:42</div> </div> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"> <a href="/podcasts/cultivating-healthy-engineering-cultures/" title=""> Cultivating Healthy Engineering Cultures: Insights from Sophie Weston </a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sophie-Weston/" data-id="author-Sophie-Weston">Sophie Weston</a> </span> </div> <span class="card__date date"> on <span> Jan 24 </span> </span> </div> </div> </div> <a href="/podcasts/cultivating-healthy-engineering-cultures/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/187x135/filters:quality(80)/podcasts/cultivating-healthy-engineering-cultures/en/mediumimage/Sophie-Weston-interviewee-1737380556693.jpg" class="card__image" alt="Cultivating Healthy Engineering Cultures: Insights from Sophie Weston"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">23:51</div> </div> </a> </div> </li> </ul> <a href="/podcasts/" class="button__more button button__has-transition button__arrow arrow__right"> MORE PODCASTS </a> </div> </div> </div> </div> <div id="minibooks-widget" data-col="2/6"> <div class="items"> <div class="heading__container actions"> <div class="actions__left"> <h2 class="heading section__heading"> <a href="/minibooks/"> Guides </a> </h2> </div> </div> <div class="items__content"> <div class="items__cards"> <ul data-size="small" data-hoverables="true" data-tax="guides" data-cols="2" class="cards no-style boxes"> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/2024-infoq-trends-reports-emag/" > The InfoQ Trends Reports 2024 eMag</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/2024-infoq-trends-reports-emag/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/2024-infoq-trends-reports-emag/en/cover/trends-reports-emag-jan-2025-cover-1736416035322.jpg" alt="The InfoQ Trends Reports 2024 eMag" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/devex-platform-engineering/" > Improving Developer Experience with Platform Engineering</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/devex-platform-engineering/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/devex-platform-engineering/en/cover/platform-engineering-cover-large-1727447516610.jpg" alt="Improving Developer Experience with Platform Engineering" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/architecture-different-lenses/" > Architecture Through Different Lenses</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/architecture-different-lenses/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/architecture-different-lenses/en/cover/architecture-through-different-lenses-medium-cover-1722843332878.jpg" alt="Architecture Through Different Lenses" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/cell-based-architecture-2024/" > Cell-Based Architectures: How to Build Scalable and Resilient Systems</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/cell-based-architecture-2024/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/cell-based-architecture-2024/en/cover/updated-medium-image-cover-cell-based-architecture-2024-1722594924416.jpg" alt="Cell-Based Architectures: How to Build Scalable and Resilient Systems" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/practical-generative-ai-2024/" > Practical Applications of Generative AI</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/practical-generative-ai-2024/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/practical-generative-ai-2024/en/cover/emag-Practical-Applications-of-Generative-AI-medium-logo-1718032755315.jpg" alt="Practical Applications of Generative AI" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/architectures-2024/" > Architectures You’ve Always Wondered About 2024 eMag</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/architectures-2024/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/architectures-2024/en/cover/aywa-2024-medium-logo-1712231844267.jpg" alt="Architectures You’ve Always Wondered About 2024 eMag" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/spring-boot-api-backend-version2/" > Practical Guide to Building an API Back End with Spring Boot - Version 2</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Wim-Deblauwe/" data-id="author-Wim-Deblauwe">Wim Deblauwe</a> </span> </div> </div> </div> </div> <a href="/minibooks/spring-boot-api-backend-version2/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/spring-boot-api-backend-version2/en/cover/cyan-front-cover-medium-1709052422392.jpg" alt="Practical Guide to Building an API Back End with Spring Boot - Version 2" class="card__image" /> </a> </div> </li> <li> <div class="card__content"> <div class="card__data"> <h5 class="card__title"><a href="/minibooks/2023-infoq-trends-reports-emag/" > The InfoQ Trends Reports 2023 eMag</a> </h5> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/InfoQ/" data-id="author-InfoQ">InfoQ</a> </span> </div> </div> </div> </div> <a href="/minibooks/2023-infoq-trends-reports-emag/" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/2023-infoq-trends-reports-emag/en/cover/cover-1703183112474.jpg" alt="The InfoQ Trends Reports 2023 eMag" class="card__image" /> </a> </div> </li> </ul> <a href="/minibooks/" class="button__more button button__has-transition button__arrow arrow__right">MORE GUIDES</a> </div> </div> </div> </div> </div> </section> <script type="text/javascript"> var abcValue; var standaloneVcr; var standaloneVcrPopup = []; var uriMapping = ""; var intervalRelatedVcr = setInterval(function() { if(window.vcrsLoaded && window.finishedVcrOptional1) { clearInterval(intervalRelatedVcr); if(window.vcrList.length > 0) { if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrsWithCover = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 3, true, null); if (vcrsWithCover.length == 0) { abcValue = 1; } else if (vcrsWithCover.length < 3) { abcValue = 2; standaloneVcr = vcrsWithCover[0]; VCR.addToExcludedList(standaloneVcr); } else { abcValue = 3; standaloneVcr = vcrsWithCover[0]; standaloneVcrPopup[0] = vcrsWithCover[1]; standaloneVcrPopup[1] = vcrsWithCover[2]; VCR.addToExcludedList(vcrsWithCover); } } else { abcValue = 1; } var $firstBox = $('.f_book_1'); var $popperBox = $('.f_rvc_poppers'); var $widget = $('.f_rvcWidget'); var vcrsWithNoCover = VCR.getRandomVcrs(4, window.vcrList); VCR.addToExcludedList(vcrsWithNoCover); getCommonElements(vcrsWithNoCover, uriMapping, "BOTTOM"); if(InfoQConstants.language == 'en' || InfoQConstants.language == 'pt' || InfoQConstants.language == 'fr') { if(abcValue == 2 || abcValue == 3) { getABC2Elements(standaloneVcr, uriMapping, $firstBox); } if(abcValue == 3){ getABC3Elements(standaloneVcrPopup, uriMapping, $popperBox); } } $widget.addClass("f_rvcbox"); if(vcrsWithNoCover.length!==0) { $widget.css("display", "block"); $widget.closest('.f_rvcSection').css("display", "block"); } } window.finishedRelatedVcr = true; } }, 200); </script> <section class="section container white nocontent f_rvcSection"> <div class="container__inner columns"> <div data-col="2/3"> <div class="rvc__container f_rvcWidget" data-trk-view="true" data-trk-impr="true" data-place="BOTTOM"> <div class="popper"> <div x-arrow="" class="popper__arrow"></div> <ul class="rvc__books f_rvc_poppers no-style"></ul> </div> <div class="rvc box__border"> <h4 class="rvc__heading heading">Related Sponsored Content</h4> <div class="columns"> <div data-col="1/2"> <ul class="no-style"> <li href="book-1" class="book f_book_1"> </li> </ul> </div> <div data-col="1/2"> <ul class="rvc__list no-style"> <div class="f_rvcList"></div> </ul> </div> </div> </div> </div> </div> <div data-col="1/3"> <script type="text/javascript"> createOptionalVcrs({ uriMapping : "", languageUri : "", excludedVcrIds : "", nativeVcrAdsEnabled : "true", vcrsPosition : "2" }); function createOptionalVcrs(params) { if(params.nativeVcrAdsEnabled) { VCR.addIdstoExcludeList(params.excludedVcrIds); if(params <= 1) { window.finishedVcrOptional1 = false; }else if(params.vcrsPosition == 2) { window.finishedVcrOptional2 = false; } var intervalOptional = setInterval(function() { if(window.vcrsLoaded) { if((InfoQConstants.pageType == "HOMEPAGE" && (params.vcrsPosition <=1 || window.finishedRelatedVcr)) || (InfoQConstants.pageType != "HOMEPAGE" && (window.contentVcrFinished == true && (params.vcrsPosition == 2 || params.vcrsPosition <= 1)))) { clearInterval(intervalOptional); if(InfoQConstants.countryCode == "" || InfoQConstants.countryCode == "/br" || InfoQConstants.countryCode == "/fr") { var vcrs = VCR.getByTopicsAndCommunities(window.vcrList, topicIds, communityIds, 2, true, null); if(vcrs != null && vcrs.length == 2) { getOptionalElements(vcrs, params); } toggleAds(vcrs, params); } else { if(params.vcrsPosition <= 1) { window.finishedVcrOptional1 = true; } else { window.finishedVcrOptional2 = true; } } } } }, 200); } } </script> <div id="vcrOptional2" class="widget prsp box__border f_bFQDdOL5mULx7hUXhswX box nocontent " data-place="2" data-trk-view="true" data-trk-impr="true"> <h3 class="widget__heading">Sponsored Content</h3> <ul class="prsp__items no-style vcrs_optional_2"></ul> </div> </div> </div> </section> <div class="clear"></div> </div> </main> <footer class="footer footer__alternate"> <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/2025/02/apple-cpu-side-channel-slap-flop/" title="Recent Generations of Apple CPUs Affected by New Side-Channel Vulnerabilities">Recent Generations of Apple CPUs Affected by New Side-Channel Vulnerabilities</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/deepsek-exposed-database/" title="DeepSeek Database Leaking Sensitive Information Highlights AI Security Risks">DeepSeek Database Leaking Sensitive Information Highlights AI Security Risks</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/quarkus-efficiency/" title="Zero Waste, Radical Magic, and Italian Graft &amp;ndash; Quarkus Efficiency Secrets">Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets</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 &amp; 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="/articles/infoq-articles-contest-2025/" title="2025 Article Contest: Win Your Conference Ticket">2025 Article Contest: Win Your Conference Ticket</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/software-fail-recover-matters/" title="Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup">Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/report-resilience-devops-dora/" title="Most Companies Experience Weekly Outages: the State of Resilience 2025 Report">Most Companies Experience Weekly Outages: the State of Resilience 2025 Report</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 &amp; 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="/presentations/personal-brand/" title="Five Steps to Building a Personal Brand for Elevating Your Influence">Five Steps to Building a Personal Brand for Elevating Your Influence</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/building-responsible-ai-culture/" title="Building Responsible AI Culture: Governance, Diversity, and the Future of Development">Building Responsible AI Culture: Governance, Diversity, and the Future of Development</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/improve-learn-software-dev/" title="How to Foster a Continuous Improvement and Learning Mindset in Software Development">How to Foster a Continuous Improvement and Learning Mindset in Software Development</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 &amp; 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="/articles/eclipse-lmos-ai-agents/" title="Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed">Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/aerospike-database-8-acid/" title="Distributed Multi-Modal Database Aerospike 8 Brings Support for Real-Time ACID Transactions">Distributed Multi-Modal Database Aerospike 8 Brings Support for Real-Time ACID Transactions</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/gemini-2-flash-lite-pro-models/" title="Gemini 2.0 Family Expands with Cost-Efficient Flash-Lite and Pro-Experimental Models">Gemini 2.0 Family Expands with Cost-Efficient Flash-Lite and Pro-Experimental Models</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="/presentations/devsecops-ai/" title="Efficient DevSecOps Workflows with a Little Help from AI">Efficient DevSecOps Workflows with a Little Help from AI</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/prezi-prometheus-victoriametrics/" title="Prezi&#039;s Journey from Prometheus to VictoriaMetrics">Prezi's Journey from Prometheus to VictoriaMetrics</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/slack-accessibility-testing/" title="Slack Enhances Accessibility Testing through Automation">Slack Enhances Accessibility Testing through Automation</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" data-bg="fullwidth-architects"> <div class="columns"> <div data-col="4/6"> <h2 class="h1"> <strong>The Software Architects&apos;</strong> Newsletter </h2> <p class="intro"> A monthly overview of things you need to know as an architect or aspiring architects.<br> <a href="/software-architects-newsletter#placeholderPastIssues">View an example</a> </p> <ul class="newsletter__features"> <li>Stay informed on emerging trends, peer-validated early adoption of technologies, and architectural best practices</li> <li>Get a curated summary of what you need to know by domain experts</li> <li>You'll receive only one email per month (every last Friday of the month)</li> </ul> <div class="newsletter__subscribe"> <form class="form gdpr" id="footerArchitectNewsletterForm" action="#" onsubmit="footerArchitectNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="architect-newsletter-subscribe" class="label field__label">Enter your e-mail address</label> <input id="architect-newsletter-subscribe" name="footerArchitectNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email" aria-required="true"> <input type="text" aria-hidden="true" name="emailH" id="input_architect_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"> <input type="hidden" aria-hidden="true" id="architectFnt" name="fnt" value="3i5hq46GCl4opvnz"/> <input type="hidden" aria-hidden="true" id="footerArchitectNewsletterType" name="footerNewsletterType" value="architect"/> <input type="hidden" aria-hidden="true" id="cmpi_a" name="cmpi" value="4"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-architect-newsletter-country" class="label field__label">Select your country</label> <select id="input-architect-newsletter-country" class="select field__input" aria-required="true"> <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-architects-footer-nl" aria-hidden="true"> <label for="gdpr-consent-architects-footer-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 footerArchitectNewsletter.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="footerArchitectNewsletterMessage"></span> </div> </div> <div data-col="2/6"> <div class="newsletter__frame"> <div class="newsletter__preview"> <iframe title="newsletter-preview" allowfullscreen="" frameborder="0" src="https://assets.infoq.com/newsletter/architect/en/newsletter_sample/homepage_display_architects-newsletter.html" style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe> </div> </div> </div> </div> <script type="text/javascript"> var footerArchitectNewsletter = new Newsletter('Enter your e-mail address', 'architect-newsletter-subscribe','footerArchitectNewsletterType', 'footerArchitectNewsletterMessage', 'architectFnt', 'input_architect_email_h', 'input-architect-newsletter-country', 'cmpi_a','footer_homepage'); </script> </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="Login" class="login" data-ref="mainLogin">Login</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="/about-c4media/" 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://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qlondon25" target="_blank">QCon London</a> </h5> <span class="meta date">APRIL 7-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=footer_idsboston25" target="_blank">InfoQ Dev Summit Boston</a> </h5> <span class="meta date">June 9-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="#" target="_self" onclick="return false;">InfoQ Dev Summit Munich</a> </h5> <span class="meta date">October, 2025</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_qsf25" target="_self">QCon San Francisco</a> </h5> <span class="meta date">November 17-21, 2025 / In-person</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="#" target="_self" onclick="return false;">InfoQ Dev Summit New York</a> </h5> <span class="meta date">December, 2025 / In-person</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">223K 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">21K Followers</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">53.4k 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> <a rel="noreferrer noopener" href="https://www.amazon.com/dp/B07KMWGNNL" target="_blank"><span class="icon icon__large icon__social icon__alexa"></span><div><span class="social__count">Alexa</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 &#169; 2006-2025 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=3i5hq46GCl4opvnz&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 = ""; Bookmarks.apiUrl = '/widgets/bookmark.action'; Bookmarks.isContentBookmarked = ""; </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_20250213201535/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> <!-- 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'], 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> </body> </html> <!-- s2 -->

Pages: 1 2 3 4 5 6 7 8 9 10