CINXE.COM
Community Over Code NA 2023 – Community Over Code
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name='robots' content='max-image-preview:large' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <title>Community Over Code NA 2023 – Community Over Code</title> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel='dns-prefetch' href='//widgets.wp.com' /> <link rel='dns-prefetch' href='//jetpack.wordpress.com' /> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//public-api.wordpress.com' /> <link rel='dns-prefetch' href='//0.gravatar.com' /> <link rel='dns-prefetch' href='//1.gravatar.com' /> <link rel='dns-prefetch' href='//2.gravatar.com' /> <link rel='preconnect' href='//i0.wp.com' /> <link rel='preconnect' href='//c0.wp.com' /> <link rel="alternate" type="application/rss+xml" title="Community Over Code » Feed" href="https://communityovercode.org/feed/" /> <link rel="alternate" type="application/rss+xml" title="Community Over Code » Comments Feed" href="https://communityovercode.org/comments/feed/" /> <script> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/communityovercode.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); </script> <link rel='stylesheet' id='all-css-449a95541dfcd49734c84607336369a2' href='https://communityovercode.org/_static/??-eJx1j9EOgjAMRX9IbMAHw4PxW7ZR56Ssy9pJ8OtdMPqA4aXJaW5uT+fUOI6KUSFR8SEKPFCTcSNMPBRCgYxkFIcmseiGjk7kMP9X+FLRYvZgS6ABLLEbGwo2m7x8SCCaZ/BGA0cQXQi3ZXrHqZ5f09YIghHBapA4LrdAtJN/MRP7IPrNr/s90+2zFMY6fz7X6dKeT33fd+2pewOSIXKR' type='text/css' media='all' /> <style id='blockbase_font_faces-inline-css'> /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Regular-italic.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Regular-italic.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 500; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Medium-italic.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 500; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Medium-italic.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 700; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Bold-italic.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: italic; font-weight: 700; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Bold-italic.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Regular.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Regular.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Medium.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Medium.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } /* latin-ext */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-latin-ext-Bold.woff2) format('woff2'); unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* latin */ @font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url(https://communityovercode.org/wp-content/themes/blockbase/assets/fonts/dm-sans/dm-sans-Bold.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } </style> <style id='wp-block-site-logo-inline-css'> .wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px} </style> <style id='wp-block-site-title-inline-css'> .wp-block-site-title{box-sizing:border-box}.wp-block-site-title :where(a){color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit} </style> <style id='wp-block-site-tagline-inline-css'> .wp-block-site-tagline{box-sizing:border-box} </style> <style id='wp-block-group-inline-css'> .wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative} </style> <style id='wp-block-navigation-link-inline-css'> .wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{border-top:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase} </style> <style id='wp-block-spacer-inline-css'> .wp-block-spacer{clear:both} </style> <style id='wp-block-post-title-inline-css'> .wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit} </style> <style id='wp-block-post-featured-image-inline-css'> .wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image :where(img){box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%} </style> <style id='wp-block-heading-inline-css'> h1.has-background,h2.has-background,h3.has-background,h4.has-background,h5.has-background,h6.has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} </style> <style id='wp-block-post-content-inline-css'> .wp-block-post-content{display:flow-root} </style> <style id='wp-block-comment-template-inline-css'> .wp-block-comment-template{box-sizing:border-box;list-style:none;margin-bottom:0;max-width:100%;padding:0}.wp-block-comment-template li{clear:both}.wp-block-comment-template ol{list-style:none;margin-bottom:0;max-width:100%;padding-left:2rem}.wp-block-comment-template.alignleft{float:left}.wp-block-comment-template.aligncenter{margin-left:auto;margin-right:auto;width:fit-content}.wp-block-comment-template.alignright{float:right} </style> <style id='wp-block-comments-pagination-inline-css'> .wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{font-size:inherit;margin-bottom:.5em;margin-right:.5em}.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{margin-right:0}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination.aligncenter{justify-content:center} </style> <style id='wp-block-post-comments-form-inline-css'> :where(.wp-block-post-comments-form) input:not([type=submit]),:where(.wp-block-post-comments-form) textarea{border:1px solid #949494;font-family:inherit;font-size:1em}:where(.wp-block-post-comments-form) input:where(:not([type=submit]):not([type=checkbox])),:where(.wp-block-post-comments-form) textarea{padding:calc(.667em + 2px)}.wp-block-post-comments-form{box-sizing:border-box}.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){font-weight:inherit}.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){font-family:inherit}.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){font-size:inherit}.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){line-height:inherit}.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){font-style:inherit}.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){letter-spacing:inherit}.wp-block-post-comments-form :where(input[type=submit]){box-shadow:none;cursor:pointer;display:inline-block;overflow-wrap:break-word;text-align:center}.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments-form .comment-reply-title{margin-bottom:0}.wp-block-post-comments-form .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em} </style> <style id='wp-block-buttons-inline-css'> .wp-block-buttons{box-sizing:border-box}.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-button.aligncenter{text-align:center} </style> <style id='wp-block-button-inline-css'> .wp-block-button__link{align-content:center;box-sizing:border-box;cursor:pointer;display:inline-block;height:100%;text-align:center;width:100%;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}:root :where(.wp-block-button .wp-block-button__link.is-style-outline),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link){border:2px solid;padding:.667em 1.333em}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color)){color:currentColor}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background)){background-color:initial;background-image:none} </style> <style id='wp-block-separator-inline-css'> @charset "UTF-8";.wp-block-separator{border:none;border-top:2px solid}:root :where(.wp-block-separator.is-style-dots){height:auto;line-height:1;text-align:center}:root :where(.wp-block-separator.is-style-dots):before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}.wp-block-separator.is-style-dots{background:none!important;border:none!important} </style> <style id='wp-block-paragraph-inline-css'> .is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} </style> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <style id='wp-block-library-inline-css'> :root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px;--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color)}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} .has-text-align-justify{text-align:justify;} </style> <style id='wp-block-template-skip-link-inline-css'> .skip-link.screen-reader-text { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; } .skip-link.screen-reader-text:focus { background-color: #eee; clip: auto !important; clip-path: none; color: #444; display: block; font-size: 1em; height: auto; left: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; } </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--primary: #333333;--wp--preset--color--secondary: #000000;--wp--preset--color--background: #ffffff;--wp--preset--color--tertiary: #f1f1f1;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 1rem;--wp--preset--font-size--medium: 1.375rem;--wp--preset--font-size--large: min(max(1.75rem, 5vw), 2.375rem);--wp--preset--font-size--x-large: min(max(2.25rem, 5vw), 3rem);--wp--preset--font-family--albert-sans: 'Albert Sans', sans-serif;--wp--preset--font-family--alegreya: Alegreya, serif;--wp--preset--font-family--bricolage-grotesque: 'Bricolage Grotesque', sans-serif;--wp--preset--font-family--commissioner: Commissioner, sans-serif;--wp--preset--font-family--cormorant: Cormorant, serif;--wp--preset--font-family--crimson-pro: 'Crimson Pro', serif;--wp--preset--font-family--dm-mono: 'DM Mono', monospace;--wp--preset--font-family--dm-serif-display: 'DM Serif Display', serif;--wp--preset--font-family--epilogue: Epilogue, sans-serif;--wp--preset--font-family--fahkwang: Fahkwang, sans-serif;--wp--preset--font-family--figtree: Figtree, sans-serif;--wp--preset--font-family--fjalla-one: 'Fjalla One', sans-serif;--wp--preset--font-family--fraunces: Fraunces, serif;--wp--preset--font-family--gabarito: Gabarito, system-ui;--wp--preset--font-family--ibm-plex-sans: 'IBM Plex Sans', sans-serif;--wp--preset--font-family--ibarra-real-nova: 'Ibarra Real Nova', serif;--wp--preset--font-family--instrument-serif: 'Instrument Serif', serif;--wp--preset--font-family--jost: Jost, sans-serif;--wp--preset--font-family--literata: Literata, serif;--wp--preset--font-family--newsreader: Newsreader, serif;--wp--preset--font-family--noto-sans-mono: 'Noto Sans Mono', sans-serif;--wp--preset--font-family--pt-serif: 'PT Serif', serif;--wp--preset--font-family--petrona: Petrona, serif;--wp--preset--font-family--piazzolla: Piazzolla, serif;--wp--preset--font-family--plus-jakarta-sans: 'Plus Jakarta Sans', sans-serif;--wp--preset--font-family--rufina: Rufina, serif;--wp--preset--font-family--sora: Sora, sans-serif;--wp--preset--font-family--source-sans-3: 'Source Sans 3', sans-serif;--wp--preset--font-family--source-serif-4: 'Source Serif 4', serif;--wp--preset--font-family--syne: Syne, sans-serif;--wp--preset--font-family--texturina: Texturina, serif;--wp--preset--font-family--urbanist: Urbanist, sans-serif;--wp--preset--font-family--system-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;--wp--preset--font-family--arvo: Arvo, serif;--wp--preset--font-family--bodoni-moda: 'Bodoni Moda', serif;--wp--preset--font-family--cabin: Cabin, sans-serif;--wp--preset--font-family--chivo: Chivo, sans-serif;--wp--preset--font-family--courier-prime: 'Courier Prime', serif;--wp--preset--font-family--dm-sans: 'DM Sans', sans-serif;--wp--preset--font-family--domine: Domine, serif;--wp--preset--font-family--eb-garamond: 'EB Garamond', serif;--wp--preset--font-family--fira-sans: 'Fira Sans', sans-serif;--wp--preset--font-family--helvetica-neue: 'Helvetica Neue','Helvetica', 'Arial', sans-serif;--wp--preset--font-family--ibm-plex-mono: 'IBM Plex Mono', monospace;--wp--preset--font-family--inter: Inter, sans-serif;--wp--preset--font-family--josefin-sans: 'Josefin Sans', sans-serif;--wp--preset--font-family--libre-baskerville: 'Libre Baskerville', serif;--wp--preset--font-family--libre-franklin: 'Libre Franklin', sans-serif;--wp--preset--font-family--lora: Lora, serif;--wp--preset--font-family--merriweather: Merriweather, serif;--wp--preset--font-family--montserrat: Montserrat, sans-serif;--wp--preset--font-family--nunito: Nunito, sans-serif;--wp--preset--font-family--open-sans: 'Open Sans', sans-serif;--wp--preset--font-family--overpass: Overpass, sans-serif;--wp--preset--font-family--playfair-display: 'Playfair Display', serif;--wp--preset--font-family--poppins: Poppins, sans-serif;--wp--preset--font-family--raleway: Raleway, sans-serif;--wp--preset--font-family--red-hat-display: 'Red Hat Display', sans-serif;--wp--preset--font-family--roboto: Roboto, sans-serif;--wp--preset--font-family--roboto-slab: 'Roboto Slab', sans-serif;--wp--preset--font-family--rubik: Rubik, sans-serif;--wp--preset--font-family--source-sans-pro: 'Source Sans Pro', sans-serif;--wp--preset--font-family--source-serif-pro: 'Source Serif Pro', sans-serif;--wp--preset--font-family--space-mono: 'Space Mono', sans-serif;--wp--preset--font-family--work-sans: 'Work Sans', sans-serif;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);--wp--custom--opt-out-of-parent-style-variations: ;--wp--custom--alignment--aligned-max-width: 50%;--wp--custom--button--border--color: var(--wp--custom--color--foreground);--wp--custom--button--border--radius: 0;--wp--custom--button--border--style: solid;--wp--custom--button--border--width: 3px;--wp--custom--button--color--background: var(--wp--custom--color--foreground);--wp--custom--button--color--text: var(--wp--custom--color--background);--wp--custom--button--hover--color--text: var(--wp--custom--color--foreground);--wp--custom--button--hover--color--background: var(--wp--custom--color--background);--wp--custom--button--hover--border--color: var(--wp--custom--color--foreground);--wp--custom--button--spacing--padding--top: 0.667em;--wp--custom--button--spacing--padding--bottom: 0.667em;--wp--custom--button--spacing--padding--left: 1.333em;--wp--custom--button--spacing--padding--right: 1.333em;--wp--custom--button--typography--font-size: var(--wp--custom--font-size--normal);--wp--custom--button--typography--font-weight: 700;--wp--custom--button--typography--line-height: 2;--wp--custom--button--outline--color--text: var(--wp--custom--color--primary);--wp--custom--button--outline--color--background: var(--wp--custom--color--background);--wp--custom--button--outline--border--color: var(--wp--custom--color--primary);--wp--custom--button--outline--hover--color--text: var(--wp--custom--color--background);--wp--custom--button--outline--hover--color--background: var(--wp--custom--color--secondary);--wp--custom--button--outline--hover--border--color: var(--wp--custom--color--primary);--wp--custom--color--foreground: var(--wp--preset--color--primary);--wp--custom--color--background: var(--wp--preset--color--background);--wp--custom--color--primary: var(--wp--preset--color--primary);--wp--custom--color--secondary: var(--wp--preset--color--primary);--wp--custom--color--tertiary: var(--wp--preset--color--tertiary);--wp--custom--font-sizes--x-small: 1rem;--wp--custom--font-sizes--normal: 1.125rem;--wp--custom--font-sizes--huge: 3rem;--wp--custom--form--padding: 20px;--wp--custom--form--border--color: var(--wp--custom--color--foreground);--wp--custom--form--border--radius: 0;--wp--custom--form--border--style: solid;--wp--custom--form--border--width: 2px;--wp--custom--form--checkbox--checked--content: "\2715";--wp--custom--form--checkbox--checked--font-size: var(--wp--custom--font-sizes--x-small);--wp--custom--form--checkbox--checked--position--left: 3px;--wp--custom--form--checkbox--checked--position--top: 3px;--wp--custom--form--checkbox--checked--sizing--height: 12px;--wp--custom--form--checkbox--checked--sizing--width: 12px;--wp--custom--form--checkbox--unchecked--content: "";--wp--custom--form--checkbox--unchecked--position--left: 0;--wp--custom--form--checkbox--unchecked--position--top: 0.2em;--wp--custom--form--checkbox--unchecked--sizing--height: 16px;--wp--custom--form--checkbox--unchecked--sizing--width: 16px;--wp--custom--form--color--background: transparent;--wp--custom--form--color--box-shadow: none;--wp--custom--form--color--text: inherit;--wp--custom--form--label--spacing--margin--bottom: var(--wp--custom--gap--baseline);--wp--custom--form--label--typography--font-size: var(--wp--custom--font-sizes--x-small);--wp--custom--form--label--typography--font-weight: normal;--wp--custom--form--label--typography--letter-spacing: normal;--wp--custom--form--label--typography--text-transform: none;--wp--custom--form--typography--font-size: var(--wp--custom--font-sizes--normal);--wp--custom--gallery--caption--font-size: var(--wp--preset--font-size--small);--wp--custom--body--typography--line-height: 1.7;--wp--custom--heading--typography--font-weight: 500;--wp--custom--heading--typography--line-height: 1.125;--wp--custom--latest-posts--meta--color--text: var(--wp--custom--color--primary);--wp--custom--layout--content-size: 664px;--wp--custom--gap--baseline: 10px;--wp--custom--gap--horizontal: min(30px, 5vw);--wp--custom--gap--vertical: min(30px, 5vw);--wp--custom--navigation--submenu--border--color: var(--wp--custom--color--primary);--wp--custom--navigation--submenu--border--radius: var(--wp--custom--form--border--radius);--wp--custom--navigation--submenu--border--style: var(--wp--custom--form--border--style);--wp--custom--navigation--submenu--border--width: var(--wp--custom--form--border--width);--wp--custom--navigation--submenu--color--background: var(--wp--custom--color--background);--wp--custom--navigation--submenu--color--text: var(--wp--custom--color--foreground);--wp--custom--paragraph--dropcap--margin: 0 .2em .2em 0;--wp--custom--paragraph--dropcap--typography--font-size: var(--wp--preset--font-size--x-large);--wp--custom--paragraph--dropcap--typography--font-weight: 400;--wp--custom--post-author--typography--font-weight: normal;--wp--custom--post-comment--typography--font-size: var(--wp--custom--font-sizes--normal);--wp--custom--post-comment--typography--line-height: var(--wp--custom--body--typography--line-height);--wp--custom--pullquote--citation--typography--font-size: var(--wp--custom--font-sizes--x-small);--wp--custom--pullquote--citation--typography--font-family: inherit;--wp--custom--pullquote--citation--typography--font-style: normal;--wp--custom--pullquote--citation--typography--font-weight: 400;--wp--custom--pullquote--citation--spacing--margin--top: var(--wp--custom--gap--vertical);--wp--custom--pullquote--typography--text-align: left;--wp--custom--quote--citation--typography--font-size: var(--wp--custom--font-sizes--x-small);--wp--custom--quote--citation--typography--font-style: normal;--wp--custom--quote--citation--typography--font-weight: 400;--wp--custom--quote--typography--text-align: left;--wp--custom--separator--opacity: 1;--wp--custom--separator--width: 150px;--wp--custom--table--figcaption--typography--font-size: var(--wp--custom--font-sizes--x-small);--wp--custom--video--caption--text-align: center;--wp--custom--video--caption--margin: var(--wp--custom--gap--vertical) auto;--wp--custom--line-height--body: 1.7;}:root { --wp--style--global--content-size: 664px;--wp--style--global--wide-size: 1128px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: calc(2 * var(--wp--custom--gap--baseline)); margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: calc(2 * var(--wp--custom--gap--baseline)); }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: calc(2 * var(--wp--custom--gap--baseline));margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: calc(2 * var(--wp--custom--gap--baseline));margin-block-end: 0;}:root :where(.is-layout-flex){gap: calc(2 * var(--wp--custom--gap--baseline));}:root :where(.is-layout-grid){gap: calc(2 * var(--wp--custom--gap--baseline));}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{background-color: var(--wp--preset--color--background);color: var(--wp--preset--color--primary);font-family: var(--wp--preset--font-family--dm-sans);font-size: var(--wp--custom--font-sizes--normal);font-weight: 400;line-height: var(--wp--custom--body--typography--line-height);padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}a:where(:not(.wp-element-button)){color: var(--wp--preset--color--primary);text-decoration: underline;}:root :where(a:where(:not(.wp-element-button)):hover){color: #27275f;text-decoration: none;}:root :where(a:where(:not(.wp-element-button)):focus){text-decoration: none;}:root :where(a:where(:not(.wp-element-button)):active){text-decoration: none;}h1{font-size: min(max(3rem, 7vw), 5rem);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.2;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}h2{font-size: min(max(2.25rem, 6vw), 4.0625rem);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.2;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}h3{font-size: var(--wp--preset--font-size--large);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.2;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}h4{font-size: var(--wp--preset--font-size--large);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.4;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}h5{font-size: var(--wp--custom--font-size--normal);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.4;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}h6{font-size: var(--wp--preset--font-size--small);font-weight: var(--wp--custom--heading--typography--font-weight);line-height: 1.4;margin-top: var(--wp--custom--gap--vertical);margin-bottom: var(--wp--custom--gap--vertical);}:root :where(.wp-element-button, .wp-block-button__link){background-color: var(--wp--custom--button--color--background);border-radius: var(--wp--custom--button--border--radius);border-width: 0;color: var(--wp--custom--button--color--text);font-family: var(--wp--preset--font-family--body-font);font-size: var(--wp--custom--button--typography--font-size);font-weight: var(--wp--custom--button--typography--font-weight);line-height: var(--wp--custom--button--typography--line-height);padding-top: calc( var(--wp--custom--button--spacing--padding--top) + var(--wp--custom--button--border--width) );padding-right: calc( var(--wp--custom--button--spacing--padding--right) + var(--wp--custom--button--border--width) );padding-bottom: calc( var(--wp--custom--button--spacing--padding--bottom) + var(--wp--custom--button--border--width) );padding-left: calc( var(--wp--custom--button--spacing--padding--left) + var(--wp--custom--button--border--width) );text-decoration: none;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-color{color: var(--wp--preset--color--primary) !important;}.has-secondary-color{color: var(--wp--preset--color--secondary) !important;}.has-background-color{color: var(--wp--preset--color--background) !important;}.has-tertiary-color{color: var(--wp--preset--color--tertiary) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-background-color{background-color: var(--wp--preset--color--primary) !important;}.has-secondary-background-color{background-color: var(--wp--preset--color--secondary) !important;}.has-background-background-color{background-color: var(--wp--preset--color--background) !important;}.has-tertiary-background-color{background-color: var(--wp--preset--color--tertiary) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-primary-border-color{border-color: var(--wp--preset--color--primary) !important;}.has-secondary-border-color{border-color: var(--wp--preset--color--secondary) !important;}.has-background-border-color{border-color: var(--wp--preset--color--background) !important;}.has-tertiary-border-color{border-color: var(--wp--preset--color--tertiary) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-albert-sans-font-family{font-family: var(--wp--preset--font-family--albert-sans) !important;}.has-alegreya-font-family{font-family: var(--wp--preset--font-family--alegreya) !important;}.has-bricolage-grotesque-font-family{font-family: var(--wp--preset--font-family--bricolage-grotesque) !important;}.has-commissioner-font-family{font-family: var(--wp--preset--font-family--commissioner) !important;}.has-cormorant-font-family{font-family: var(--wp--preset--font-family--cormorant) !important;}.has-crimson-pro-font-family{font-family: var(--wp--preset--font-family--crimson-pro) !important;}.has-dm-mono-font-family{font-family: var(--wp--preset--font-family--dm-mono) !important;}.has-dm-serif-display-font-family{font-family: var(--wp--preset--font-family--dm-serif-display) !important;}.has-epilogue-font-family{font-family: var(--wp--preset--font-family--epilogue) !important;}.has-fahkwang-font-family{font-family: var(--wp--preset--font-family--fahkwang) !important;}.has-figtree-font-family{font-family: var(--wp--preset--font-family--figtree) !important;}.has-fjalla-one-font-family{font-family: var(--wp--preset--font-family--fjalla-one) !important;}.has-fraunces-font-family{font-family: var(--wp--preset--font-family--fraunces) !important;}.has-gabarito-font-family{font-family: var(--wp--preset--font-family--gabarito) !important;}.has-ibm-plex-sans-font-family{font-family: var(--wp--preset--font-family--ibm-plex-sans) !important;}.has-ibarra-real-nova-font-family{font-family: var(--wp--preset--font-family--ibarra-real-nova) !important;}.has-instrument-serif-font-family{font-family: var(--wp--preset--font-family--instrument-serif) !important;}.has-jost-font-family{font-family: var(--wp--preset--font-family--jost) !important;}.has-literata-font-family{font-family: var(--wp--preset--font-family--literata) !important;}.has-newsreader-font-family{font-family: var(--wp--preset--font-family--newsreader) !important;}.has-noto-sans-mono-font-family{font-family: var(--wp--preset--font-family--noto-sans-mono) !important;}.has-pt-serif-font-family{font-family: var(--wp--preset--font-family--pt-serif) !important;}.has-petrona-font-family{font-family: var(--wp--preset--font-family--petrona) !important;}.has-piazzolla-font-family{font-family: var(--wp--preset--font-family--piazzolla) !important;}.has-plus-jakarta-sans-font-family{font-family: var(--wp--preset--font-family--plus-jakarta-sans) !important;}.has-rufina-font-family{font-family: var(--wp--preset--font-family--rufina) !important;}.has-sora-font-family{font-family: var(--wp--preset--font-family--sora) !important;}.has-source-sans-3-font-family{font-family: var(--wp--preset--font-family--source-sans-3) !important;}.has-source-serif-4-font-family{font-family: var(--wp--preset--font-family--source-serif-4) !important;}.has-syne-font-family{font-family: var(--wp--preset--font-family--syne) !important;}.has-texturina-font-family{font-family: var(--wp--preset--font-family--texturina) !important;}.has-urbanist-font-family{font-family: var(--wp--preset--font-family--urbanist) !important;}.has-system-font-font-family{font-family: var(--wp--preset--font-family--system-font) !important;}.has-arvo-font-family{font-family: var(--wp--preset--font-family--arvo) !important;}.has-bodoni-moda-font-family{font-family: var(--wp--preset--font-family--bodoni-moda) !important;}.has-cabin-font-family{font-family: var(--wp--preset--font-family--cabin) !important;}.has-chivo-font-family{font-family: var(--wp--preset--font-family--chivo) !important;}.has-courier-prime-font-family{font-family: var(--wp--preset--font-family--courier-prime) !important;}.has-dm-sans-font-family{font-family: var(--wp--preset--font-family--dm-sans) !important;}.has-domine-font-family{font-family: var(--wp--preset--font-family--domine) !important;}.has-eb-garamond-font-family{font-family: var(--wp--preset--font-family--eb-garamond) !important;}.has-fira-sans-font-family{font-family: var(--wp--preset--font-family--fira-sans) !important;}.has-helvetica-neue-font-family{font-family: var(--wp--preset--font-family--helvetica-neue) !important;}.has-ibm-plex-mono-font-family{font-family: var(--wp--preset--font-family--ibm-plex-mono) !important;}.has-inter-font-family{font-family: var(--wp--preset--font-family--inter) !important;}.has-josefin-sans-font-family{font-family: var(--wp--preset--font-family--josefin-sans) !important;}.has-libre-baskerville-font-family{font-family: var(--wp--preset--font-family--libre-baskerville) !important;}.has-libre-franklin-font-family{font-family: var(--wp--preset--font-family--libre-franklin) !important;}.has-lora-font-family{font-family: var(--wp--preset--font-family--lora) !important;}.has-merriweather-font-family{font-family: var(--wp--preset--font-family--merriweather) !important;}.has-montserrat-font-family{font-family: var(--wp--preset--font-family--montserrat) !important;}.has-nunito-font-family{font-family: var(--wp--preset--font-family--nunito) !important;}.has-open-sans-font-family{font-family: var(--wp--preset--font-family--open-sans) !important;}.has-overpass-font-family{font-family: var(--wp--preset--font-family--overpass) !important;}.has-playfair-display-font-family{font-family: var(--wp--preset--font-family--playfair-display) !important;}.has-poppins-font-family{font-family: var(--wp--preset--font-family--poppins) !important;}.has-raleway-font-family{font-family: var(--wp--preset--font-family--raleway) !important;}.has-red-hat-display-font-family{font-family: var(--wp--preset--font-family--red-hat-display) !important;}.has-roboto-font-family{font-family: var(--wp--preset--font-family--roboto) !important;}.has-roboto-slab-font-family{font-family: var(--wp--preset--font-family--roboto-slab) !important;}.has-rubik-font-family{font-family: var(--wp--preset--font-family--rubik) !important;}.has-source-sans-pro-font-family{font-family: var(--wp--preset--font-family--source-sans-pro) !important;}.has-source-serif-pro-font-family{font-family: var(--wp--preset--font-family--source-serif-pro) !important;}.has-space-mono-font-family{font-family: var(--wp--preset--font-family--space-mono) !important;}.has-work-sans-font-family{font-family: var(--wp--preset--font-family--work-sans) !important;} :root :where(.wp-block-button .wp-block-button__link){background-color: var(--wp--custom--button--color--background);border-radius: var(--wp--custom--button--border--radius);border-color: var(--wp--custom--button--border--color);border-width: var(--wp--custom--button--border--width);border-style: var(--wp--custom--button--border--style);color: var(--wp--custom--button--color--text);font-size: var(--wp--custom--button--typography--font-size);font-weight: var(--wp--custom--button--typography--font-weight);line-height: var(--wp--custom--button--typography--line-height);padding-top: var(--wp--custom--button--spacing--padding--top);padding-right: var(--wp--custom--button--spacing--padding--right);padding-bottom: var(--wp--custom--button--spacing--padding--bottom);padding-left: var(--wp--custom--button--spacing--padding--left);} :root :where(.wp-block-navigation){font-size: var(--wp--custom--font-size--normal);text-decoration: none;} :root :where(.wp-block-post-title){font-weight: 700;line-height: 1.2;margin-bottom: var(--wp--custom--gap--vertical);} :root :where(.wp-block-separator){border-color: currentColor;border-width: 0 0 1px 0;border-style: solid;color: var(--wp--custom--color--foreground);} :root :where(.wp-block-site-tagline){font-size: var(--wp--custom--font-sizes--x-small);} :root :where(.wp-block-site-title){font-size: var(--wp--custom--font-size--normal);font-weight: 700;text-transform: uppercase;} :root :where(.wp-block-site-title a:where(:not(.wp-element-button))){text-decoration: none;} :root :where(.wp-block-site-title a:where(:not(.wp-element-button)):hover){text-decoration: underline;} </style> <style id='core-block-supports-inline-css'> .wp-container-core-navigation-is-layout-1{justify-content:flex-end;}.wp-container-core-group-is-layout-3{justify-content:space-between;} </style> <style id='akismet-widget-style-inline-css'> .a-stats { --akismet-color-mid-green: #357b49; --akismet-color-white: #fff; --akismet-color-light-grey: #f6f7f7; max-width: 350px; width: auto; } .a-stats * { all: unset; box-sizing: border-box; } .a-stats strong { font-weight: 600; } .a-stats a.a-stats__link, .a-stats a.a-stats__link:visited, .a-stats a.a-stats__link:active { background: var(--akismet-color-mid-green); border: none; box-shadow: none; border-radius: 8px; color: var(--akismet-color-white); cursor: pointer; display: block; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif; font-weight: 500; padding: 12px; text-align: center; text-decoration: none; transition: all 0.2s ease; } /* Extra specificity to deal with TwentyTwentyOne focus style */ .widget .a-stats a.a-stats__link:focus { background: var(--akismet-color-mid-green); color: var(--akismet-color-white); text-decoration: none; } .a-stats a.a-stats__link:hover { filter: brightness(110%); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16); } .a-stats .count { color: var(--akismet-color-white); display: block; font-size: 1.5em; line-height: 1.4; padding: 0 13px; white-space: nowrap; } </style> <style id='jetpack-global-styles-frontend-style-inline-css'> :root { --font-headings: unset; --font-base: unset; --font-headings-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; --font-base-default: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;} </style> <script id="jetpack-mu-wpcom-settings-js-before"> var JETPACK_MU_WPCOM_SETTINGS = {"assetsUrl":"https:\/\/communityovercode.org\/wp-content\/mu-plugins\/wpcomsh\/jetpack_vendor\/automattic\/jetpack-mu-wpcom\/src\/build\/"}; </script> <link rel="https://api.w.org/" href="https://communityovercode.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://communityovercode.org/wp-json/wp/v2/pages/514" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://communityovercode.org/xmlrpc.php?rsd" /> <link rel="canonical" href="https://communityovercode.org/past-sessions/community-over-code-na-2023/" /> <link rel='shortlink' href='https://wp.me/PeBclt-8i' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://communityovercode.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcommunityovercode.org%2Fpast-sessions%2Fcommunity-over-code-na-2023%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://communityovercode.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fcommunityovercode.org%2Fpast-sessions%2Fcommunity-over-code-na-2023%2F&format=xml" /> <style>img#wpstats{display:none}</style> <script type="importmap" id="wp-importmap"> {"imports":{"@wordpress\/interactivity":"https:\/\/communityovercode.org\/wp-content\/plugins\/gutenberg\/build-module\/interactivity\/index.min.js?ver=c7a47746be66cc96bcc6"}} </script> <script type="module" src="https://communityovercode.org/wp-content/plugins/gutenberg/build-module/block-library/navigation/view.min.js?ver=7b370e821516feba4955" id="@wordpress/block-library/navigation/view-js-module"></script> <link rel="modulepreload" href="https://communityovercode.org/wp-content/plugins/gutenberg/build-module/interactivity/index.min.js?ver=c7a47746be66cc96bcc6" id="@wordpress/interactivity-js-modulepreload"><meta name="description" content="Sessions Plenary Track Track Chair: Rich Bowen Sponsor Keynote: Open Source Democratizes AI Speaker: Charu AnchliaBack to Schedule Open Source in Africa and Why You Should be a Part of It The production and consumption of Open Source projects are widely used and Africans are not left out. We are on a journey of creating…" /> <meta name="redi-version" content="1.2.5" /> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="article" /> <meta property="og:title" content="Community Over Code NA 2023" /> <meta property="og:url" content="https://communityovercode.org/past-sessions/community-over-code-na-2023/" /> <meta property="og:description" content="Sessions Plenary Track Track Chair: Rich Bowen Sponsor Keynote: Open Source Democratizes AI Speaker: Charu AnchliaBack to Schedule Open Source in Africa and Why You Should be a Part of It The produ…" /> <meta property="article:published_time" content="2023-12-08T13:53:56+00:00" /> <meta property="article:modified_time" content="2024-03-11T17:31:21+00:00" /> <meta property="og:site_name" content="Community Over Code" /> <meta property="og:image" content="https://s0.wp.com/i/blank.jpg" /> <meta property="og:image:alt" content="" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:text:title" content="Community Over Code NA 2023" /> <meta name="twitter:image" content="https://s0.wp.com/i/webclip.png" /> <meta name="twitter:card" content="summary" /> <!-- End Jetpack Open Graph Tags --> <link rel="icon" href="https://s0.wp.com/i/webclip.png" sizes="32x32" /> <link rel="icon" href="https://s0.wp.com/i/webclip.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://s0.wp.com/i/webclip.png" /> <meta name="msapplication-TileImage" content="https://s0.wp.com/i/webclip.png" /> </head> <body class="page-template-default page page-id-514 page-child parent-pageid-510 wp-embed-responsive"> <div class="wp-site-blocks"><header class="wp-block-template-part"> <div class="wp-block-group gapless-group is-layout-constrained wp-block-group-is-layout-constrained"> <div class="wp-block-group alignfull site-header site-header-linear is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex" style="padding-top:var(--wp--custom--gap--vertical);padding-bottom:var(--wp--custom--gap--vertical)"> <div class="wp-block-group site-brand is-layout-flex wp-block-group-is-layout-flex"> <div class="wp-block-group site-words-stack-small is-layout-flex wp-block-group-is-layout-flex"><p class="wp-block-site-title"><a href="https://communityovercode.org" target="_self" rel="home">Community Over Code</a></p> <p style="font-size:var(--wp--custom--font-sizes--x-small);" class="wp-block-site-tagline">The ASF Conference</p></div> </div> <nav class="is-responsive items-justified-right social-links wp-block-navigation is-horizontal is-content-justification-right is-layout-flex wp-container-core-navigation-is-layout-1 wp-block-navigation-is-layout-flex" aria-label="Navigation" data-wp-interactive="core/navigation" data-wp-context='{"overlayOpenedBy":{"click":false,"hover":false,"focus":false},"type":"overlay","roleAttribute":"","ariaLabel":"Menu"}'><button aria-haspopup="dialog" aria-label="Open menu" class="wp-block-navigation__responsive-container-open" data-wp-on-async--click="actions.openMenuOnClick" data-wp-on--keydown="actions.handleMenuKeydown" ><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><rect x="4" y="7.5" width="16" height="1.5" /><rect x="4" y="15" width="16" height="1.5" /></svg></button> <div class="wp-block-navigation__responsive-container" id="modal-1" data-wp-class--has-modal-open="state.isMenuOpen" data-wp-class--is-menu-open="state.isMenuOpen" data-wp-watch="callbacks.initMenu" data-wp-on--keydown="actions.handleMenuKeydown" data-wp-on-async--focusout="actions.handleMenuFocusout" tabindex="-1" > <div class="wp-block-navigation__responsive-close" tabindex="-1"> <div class="wp-block-navigation__responsive-dialog" data-wp-bind--aria-modal="state.ariaModal" data-wp-bind--aria-label="state.ariaLabel" data-wp-bind--role="state.roleAttribute" > <button aria-label="Close menu" class="wp-block-navigation__responsive-container-close" data-wp-on-async--click="actions.closeMenuOnClick" ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg></button> <div class="wp-block-navigation__responsive-container-content" data-wp-watch="callbacks.focusFirstElement" id="modal-1-content"> <ul class="wp-block-navigation__container is-responsive items-justified-right social-links wp-block-navigation"><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="https://communityovercode.org/sponsors/"><span class="wp-block-navigation-item__label">Sponsors</span></a></li></ul><ul class="wp-block-navigation__container is-responsive items-justified-right social-links wp-block-navigation"><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="https://communityovercode.org/conduct/"><span class="wp-block-navigation-item__label">Code of Conduct</span></a></li></ul><ul class="wp-block-navigation__container is-responsive items-justified-right social-links wp-block-navigation"><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="https://communityovercode.org/past-sessions/"><span class="wp-block-navigation-item__label">Past Sessions</span></a></li><li class=" wp-block-navigation-item wp-block-navigation-link"><a class="wp-block-navigation-item__content" href="https://asia.communityovercode.org/"><span class="wp-block-navigation-item__label">Community Over Code Asia</span></a></li></ul> </div> </div> </div> </div></nav></div> </div> <div style="height:90px" aria-hidden="true" class="wp-block-spacer"></div> </header> <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"> <h1 style="margin-bottom:calc(2 * var(--wp--style--block-gap));" class="has-text-align-left wp-block-post-title">Community Over Code NA 2023</h1> </div> <main class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"> <div class="entry-content wp-block-post-content is-layout-constrained wp-block-post-content-is-layout-constrained"> <h2 class="wp-block-heading">Sessions</h2> <h3>Plenary Track</h3> <p><strong>Track Chair:</strong> Rich Bowen</p> <p id="KEY001"><strong>Sponsor Keynote: Open Source Democratizes AI</strong><br><br> <strong>Speaker:</strong> Charu Anchlia<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="KEY002"><strong>Open Source in Africa and Why You Should be a Part of It</strong><br> The production and consumption of Open Source projects are widely used and Africans are not left out. We are on a journey of creating impact while building innovative solutions through Open Source. In this talk, I will take you on a journey of identity in Africa and how we are contributing and making a difference in the lives of people (<a href="https://communityovercode.org/wp-content/uploads/2023/11/abigail-dogbe-keynote-open-source-in-africa.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Abigail Mesrenyame Dogbe<br> Abigail Mesrenyame Dogbe is an Open Source Programs Manager, Researcher and Community Builder who believes in the power of Open Source Community Building.<br> She dedicates time and effort to promoting collaboration, sustainability, and inclusivity within the Open Source Community through contributions such as research, and organizing local and international community events among others. Her current research is focused on Improving Diversity and Inclusion in Open Source Community Leadership.<br> When she is not contributing to open source, she is inspiring the next generation of Women in STEM at Mesrenyame & FRIENDS – Girls in STEM.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="KEY003"><strong>Why open source AI matters: towards a clear definition</strong><br> The number of publicly available AI models is growing exponentially, doubling every six months. With this explosion, communities and policymakers are asking questions and proposing legislation to address open source AI’s innovation benefits, safety risks, impact on sovereignty, and competitive economics against closed models.<br> Against this backdrop, open source communities need a clear and consistent definition of open source AI to ensure that the “open source” marker signals safety and respect for AI developers, rights for end users, and frictionless improvement for the broader community. In this keynote, OSI board member Justin Colannino will talk about what OSI is doing to build this needed open source AI definition and how you can help. (<a href="https://communityovercode.org/wp-content/uploads/2023/11/colannino-community-over-code-keynote.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Justin Colannino<br> Justin is a lawyer with over a decade of experience representing clients at the intersection of free & open source software communities and for-profit enterprises. As a board member of OSI, he works to support OSI’s vision of building healthy ecosystems where open source freedom and opportunities can be enjoyed by all. In Justin’s day job at Microsoft, he runs a small team that oversees legal processes to enable open source, standards, and open ML engagement at massive scale.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="KEY004"><strong>Foundations Considered Essential</strong><br> The role of open source foundations has never been more important. Once upon a time, it was a generally accepted wisdom that open source foundations provided developers useful services, infrastructure, governance, and a sense of community. The rise of GitHub and social coding challenged that assumption, as did the rise of venture-funded open source startups. But it is becoming increasingly apparent that open source foundations play a crucial role in fostering, governing, and sustaining the open source projects that truly matter. Open source foundations not only protect developers, they provide value to consumers and adopters of open source by guaranteeing a level playing field with fair and consistent policies for all stakeholders. They also provide a voice for developer communities in an increasingly complex regulatory and geopolitical environment. This talk will focus on the values that we share, the successes we enjoy, and the challenges we face. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/2023.10-community-over-code-keynote-1-mike-milinkovich.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Mike Milinkovich<br> Mike Milinkovich is an industry leader and open source community champion. He has been involved in the software industry for over thirty-five years, doing everything from software engineering, to product management to IP licensing. He has been the Executive Director of the Eclipse Foundation since 2004. In that role he is responsible for supporting both the Eclipse open-source community and its commercial ecosystem. Prior to joining Eclipse, Mike was a vice president in Oracle’s development group. Other stops along the way include several startups, IBM, and Nortel Research.<br> Mike has sat on the Boards of the Open Source Initiative (OSI), and the OpenJDK community, as well as the Executive Committee of the Java Community Process (JCP).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>API/Microservices Track</h3> <p><strong>Track Chair:</strong> Ming Wen</p> <p id="API001"><strong>Evolving your APIs, a pragmatic approach</strong><br> When you publish your first HTTP API, you’re more focused on short-term issues than planning for the future. However, chances are you’ll be successful, and you’ll “hit the wall”. How do you evolve your API without breaking the contract with your existing users?<br>In this talk, I’ll first show you some tips and tricks to achieve that: moving your endpoints, deprecating them, monitoring who’s using them, and letting users know about the new endpoints. The talk is demo-based, and I’ll use the Apache APISIX project for it. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/apisat.frankel.data_evolve_apis-nicolas-frankel.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Nicolas Fränkel<br> Developer Advocate with 15+ years experience consulting for many different customers, in a wide range of contexts (such as telecoms, banking, insurances, large retail and public sector). Usually working on Java/Java EE and Spring technologies, but with focused interests like Rich Internet Applications, Testing, CI/CD and DevOps. Also doubles as a trainer and triples as a book author.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="API002"><strong>Data Residency: the fun of storing data worldwide</strong><br> It involves the storage and location of data, which are subject to varying legal requirements depending on their physical whereabouts. Some jurisdictions even mandate data to be stored exclusively within their own borders. In this talk, we will delve into the intricacies of data residency, exploring its consequences for organizations operating across international boundaries. We will present various practical implementations of data residency, offering attendees a comprehensive understanding of the available strategies. Finally, by leveraging fully Open Source projects from the ASF, we will showcase a sample implementation that demonstrates the feasibility of adopting such solutions. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/apisat.frankel.data_residency-nicolas-frankel.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Nicolas Fränkel<br> Developer Advocate with 15+ years experience consulting for many different customers, in a wide range of contexts (such as telecoms, banking, insurances, large retail and public sector). Usually working on Java/Java EE and Spring technologies, but with focused interests like Rich Internet Applications, Testing, CI/CD and DevOps. Also double as a trainer and triples as a book author.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="API003"><strong>A.I & Fintech – How Apache fineract can benefit from the rise of the machines</strong><br> We have all heard the rumours "Machines" will replace mankind. The rise of AI is an interesting era in technology advancement. How about instead of being sentimental, we leverage?<br>Join me to dive into how best we can leverage AI to push forward the agenda of open source. <br><br> <strong>Speaker:</strong> Robert Jakech<br> Robert is CTO & Co-founder of fiter, the number one expert in Apache fineract in the World.<br>Robert leads a diverse team in distribution of fineract around the World<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="API004"><strong>Traffic Ops: From monolith to SOA</strong><br> Traffic Ops (TO), in its current form, can be best described as a monolithic application. All the code and logic for TO resides in one single application. Hence, making even a minor change to one area of TO requires a redeploy of the entire TO application. This is not ideal, as it adds the additional burden of deploying a huge application, for a small change. In order to move faster and in a more seamless manner, TO needs to be refactored so that we can redeploy/ restart one part of the application without affecting the other parts.<br>Rewriting the entire TO application will be a highly time and resource intensive effort. However, a refactor of TO, to convert it into a Service Oriented architecture (SOA) style product is feasible. This would allow us to decouple new features and functionality from the monolith while also providing the opportunity to re-factor out existing features in the future. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_apis_and_microservices_srijeet_chatterjee-srijeet-chatterjee.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Srijeet Chatterjee<br> I work as a Principal Software Engineer on the Traffic Control team at Comcast, in Denver, Colorado. I mostly on content routing, optimization and just trying to make things simpler for everyone 🙂 Outside of work, I love hiking, trying new breweries and cuisines and playing cricket.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="API005"><strong>Building Robust and Scalable APIs with Apache CXF</strong><br> Discover the power of Apache CXF in building robust and scalable APIs. This talk delves into the core concepts, architecture, and key features of Apache CXF, a mature framework for API development. Learn how CXF simplifies integration with JAX-RS and JAX-WS standards, and explore deployment options for optimal scalability and performance. Gain practical insights into handling data formats, supporting transport protocols, implementing security measures, and effectively managing errors and exceptions. Through practical examples and best practices, this session equips developers with the knowledge to design RESTful and SOAP-based APIs, integrate with other frameworks, and optimize API performance. Join us to unlock the potential of your APIs with Apache CXF! <br><br> <strong>Speaker:</strong> Seyyed Ali Mohammadiyeh<br> Seyyed Ali Mohammadiyeh, also known as Max Base, is a highly accomplished open-source maintainer at GitHub and CTO at Asrez. He is currently a Mathematics student/researcher at the university, where he is actively engaged in studying the application of mathematics on the computer. With over 10 years of programming experience, Ali is a seasoned software engineer and computer analyst, who has a deep understanding of the field and a passion for using his technical skills to solve real-world problems. He has a strong background in applied and pure mathematics and is particularly interested in group theory, computational algebra, coding theory, and other areas of computer science and mathematics. As one of the world’s most active programmers, Ali is highly dedicated to contributing and publishing his experience, making it widely available to others.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="API006"><strong>Building Composable Data Microservices with Apache Arrow</strong><br> By specifying a standardized data format, Apache Arrow enables data systems to interoperate more seamlessly, regardless of how they may be implemented. Inspired by its utility in general-purpose systems like databases and query engines, we incorporated Arrow into our application-level systems. In this talk, we will discuss how Arrow sped up bulk data transfer and accelerated in-process analytics in our microservices. We will also look at the benefits of standardizing around Arrow, as well as some of the lessons learned from using Arrow directly in our application-level code. (<a href="https://communityovercode.org/wp-content/uploads/2024/03/sat_api_microservices_Leicht_Chakravorti-Peter-Leicht.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Peter Leicht<br> Peter Leicht is an Engineering Team Lead in Bloomberg’s Indices Engineering group. His team builds and manages the systems that produce and publish the Bloomberg Fixed Income Indices. He has more than 15 years of software development experience, and works primarily in C++<br>Shoumyo Chakravorti<br>Shoumyo Chakravorti is a software engineer in Bloomberg’s Indices Engineering group, where he helps build and manage the systems that produce and publish the Bloomberg Fixed Income Indices.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Big Data: Compute Track</h3> <p><strong>Track Chair:</strong> Uma Maheswara Rao Gangumalla</p> <p id="BDC001"><strong>Running Large-Scale Spark Applications on Kubernetes with YuniKorn: Lessons from Pinterest</strong><br> Pinterest, a visual discovery engine with over 450 million monthly active users, has successfully implemented and optimized large-scale Spark applications on Kubernetes using YuniKorn, in addition to building a job submission service. In this talk, we will delve into the challenges of supporting large-scale data processing and share our real-world use cases and best practices for overcoming these challenges. We will discuss how we optimized resource allocation, implemented smart job routing, managed job scheduling, ensured reliability, and handled high-traffic environments while running Spark applications on Kubernetes with YuniKorn at Pinterest. We will share specific techniques and strategies that we employed to address these challenges, including examples and case studies.<br>Furthermore, we will provide insights into our Spark job submission service, which handles large-scale job submission, job deletion, job status tracking, and application logs with multiple Spark Operators and clusters. We will highlight the features and functionalities of our job submission service and share lessons learned from its development and deployment.<br>Don’t miss this opportunity to learn from our journey and gain valuable insights into enhancing your big data processing capabilities with YuniKorn and Kubernetes, including supporting large-scale use cases. <br><br> <strong>Speaker:</strong> Rainie Li<br> Rainie Li is a senior software engineer at big data platform team at Pinterest. She worked at Microsoft Azure and AWS Rekognition before she joined Pinterest. Rainie got her master degree in Electrical Computer Engineering from Duke University.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC002"><strong>Deploying Apache Ranger in the Big Data ecosystem at CERN</strong><br> Apache Ranger offers a centralized security framework to manage fine-grained access control over Hadoop and related components. Using the Apache Ranger administration console, users can easily manage policies around accessing a resource for a particular set of users or groups and enforce the policies within Hadoop. Apache Ranger also provides the ability to delegate the administration of certain data to other group owners, to decentralize data ownership.<br>This talk will cover our journey to deploying Apache Ranger in the multi-cluster and multi-project Hadoop ecosystem at CERN. The lessons we learned on the way and the benefits of the deployment we gained. This integration has been enrolled in the Big Data ecosystem hosted at CERN namely HDFS, Yarn, HBase, Spark, and many more components. As part of this talk, I will also provide more insights into the existing deployments and the CERN infrastructure. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_compute_emil-emil-kleszcz.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Emil Kleszcz<br> Emil is a Big Data expert at CERN working in Hadoop, Spark, and OpenSearch services. Emil has over 5 years of experience in designing, deploying, and supporting scalable data stores and computing clusters. He enjoys sharing knowledge and experience with broader engineering communities at CERN and beyond. In his free time, he enjoys teaching skiing in the Alps and backpacking on all the continents.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC003"><strong>Impala learned some new tricks while living on Iceberg</strong><br> Apache Impala is a high-performance distributed query engine specifically designed for lightning fast read operations.<br>Apache Iceberg is a groundbreaking table format that introduces advanced features such as partition and schema evolution, data partitioning through transform functions, time-travel capabilities, and row-level deletes.<br>Recognizing the significance of Iceberg, the Impala team has invested tremendous development efforts to provide comprehensive support for its features.<br>This talk will cover the following key points:<ul><li>A brief overview of how Impala integrates with Iceberg</li><li>The limitations of traditional table formats</li><li>How Iceberg addresses these existing challenges and unlocks new possibilities</li><li>An exploration of Impala’s new features and some insights into their implementation</li></ul></p><p>Iceberg has transformed Impala from being solely a query engine optimized for read operations into a robust data warehouse engine.<br>With Iceberg, Impala now extends its support to include ACID write operations and table maintenance functions, enabling it to fulfill the role of a comprehensive and versatile data warehouse engine.<br>Join us for this session to gain valuable insights into the integration between Impala and Iceberg, and discover the new functionalities of Impala. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_bigdata_impala_learned_some_new_tricks_while_living_on_iceberg-zoltan-borok-nagy.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Zoltán Borók-Nagy<br> Zoltán is a software engineer at Cloudera, working on Apache Impala. He is also a PMC member on the project. Currently he is leading the Impala/Iceberg integration efforts. Before Cloudera, he worked at Ericsson where he was working on C++ static analysis tools. He is interested in distributed, massively parallel systems, and performance engineering.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC004"><strong>Apache YuniKorn: preemption for multi tenant Kubernetes clusters</strong><br> Multi tenant data processing is one of the difficult resource-intensive data engineering use cases in Kubernetes. Today, a simple rule that governs both scheduling order and the preemption behaviour in the Kubernetes default scheduler is that a pod with a higher priority is more important than a pod with a lower priority. The whole cluster is seen as one big set of pods.<br>When looking at preemption from a batch and data processing workload we need more. We need the possibility to opt-out and consider the context of a pod within the workload. In a cluster that runs workloads for multiple tenants, preemption must be tenant aware. How do we get both accuracy and flexibility? How do we include tenants, user quotas, or hierarchical queues?<br>Incorporating lessons learned from the Apache YARN we defined the “The Laws of Preemption”. What are these laws? Why do we need them for multi tenant data processing? How do they help define guardrails around preempting a workload from one tenant and giving the resources to another? The laws are there to prevent a preemption storm or loop. YuniKorn uses these laws to implement preemption in a hierarchical queue model, based on guaranteed resources configured for a queue.<br>In this talk, we will dive deep into the preemption capabilities of YuniKorn explaining the laws and their implementation. We will also look at priority offsets and preemption fencing for advanced use cases. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_bigdata_yunikorn-preemption-kubernetes-wilfred-spiegelenburg.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Wilfred Spiegelenburg<br> Wilfred is a Principal Software Engineer with Cloudera, based in Melbourne Australia. He has worked as a software engineer for more than 25 years. Involved in multiple open source projects for over 10 years. Tech lead of the Apache YuniKorn project. He is an Apache Software Foundation member, Apache YuniKorn PMC chair and Apache Hadoop committer. <br><br> Craig Condit<br> Craig is an open source, cloud native, and high performance computing enthusiast. He has been a software engineer for over 20 years, and has worked in Big Data for over a decade, with extensive experience in Apache Hadoop, YARN, and YuniKorn. He is an Apache YuniKorn PMC member and works as a Senior Staff engineer for Cloudera. Formerly, he was a Principal Engineer for Target, Inc. responsible for one of the largest multi-tenant Hadoop clusters in North America. He holds a BS in Computer Science.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC005"><strong>Intelligent Query Routing And Runtime Query Killing in Apache Pinot</strong><br> Apache Pinot is a real-time, distributed, OLAP database designed to serve low-latency SQL queries at high throughput. LinkedIn’s large Pinot production deployment for site-facing use cases faced resiliency issues due to failures, slowness, and unpredictable query patterns. Providing a robust query processing framework resilient to such issues became paramount to guarantee our promised SLAs. We strengthened Pinot’s Query Processing framework using two features: Intelligent Query Routing and Runtime Query Killing.<br>Intelligent Query Routing:<br>Pinot Brokers route queries to Servers using a round-robin approach. This routing was agnostic to the performance of servers, which do the heavy-lifting in query processing. We developed an intelligent approach to route queries to the best available servers using an algorithm that quickly reacts to slowness events on servers. This framework reduces the need for manual intervention and prevents latency degradation during server slowness events.<br>Runtime Query Killing:<br>Users can run expensive queries that could potentially crash Pinot hosts with Out of Memory errors. The Query Killing framework tracks the resource usage of queries at runtime using a lockless sampling algorithm. This algorithm detects and kills the offending queries to help maintain our availability SLAs.<br>In this presentation, we plan to cover the design details and benefits observed by deploying these 2 new features on the 6000+ hosts in Linkedin’s Pinot deployment. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_bigdatacompute_pinot_intelligent_query_routing_and_killing-vivek-iyer-vaidyanathan-iyer.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jia Guo<br> Jia is a software engineer in Linkedin’s Data Infrastructure group focusing on Apache Pinot distributed systems development. Before joining LinkedIn, he received his PhD in parallel and high-performance computing from Ohio State University. <br><br> Vivek Iyer<br> Vivek is a software engineer in Linkedin’s Data Infrastructure group focusing on Apache Pinot distributed systems development. Prior to Linkedin, Vivek was working at Cohesity in the distributed File Systems team.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC006"><strong>Enhancing Apache Ignite 3.0 with the Power of Open-Source</strong><br> Apache Ignite 3.0, the next major version of one of the top Apache projects in Big Data, aims to dramatically improve the usability of the platform for developers and incite new use cases. Join this talk to learn how the Apache Ignite Developer Community achieves this goal by harnessing the power of open-source and using a number of well-known projects for its core components. Technologies such as Apache Calcite, RocksDB, ScaleCube, JRaft, and others will enhance the stability of Apache Ignite, reduce future maintenance, and open a path to future integrations.<br>Join this talk to learn how Apache Ignite uses open-source to make the next generation of open-source distributed databases even better. Developers will get a major leg-up on the foundations of this technology and learn:<ul><li>What are the key components of Apache Ignite’s architecture</li><li>Which battle-tested open-source technologies are fit for a modern distributed database</li><li>What challenges Apache Ignite developers have faced in the process and how they surmounted them</li></ul></p><p><strong>Speaker:</strong> Stanislav Lukyanov<br> Stanislav Lukyanov is a Director of Product Management at GridGain Systems, a provider of enterprise-grade in-memory computing solutions based on Apache Ignite. A software engineer and architect, he helps to build the next generation of in-memory computing solutions to answer modern industry challenges. Stanislav has been an Apache Ignite contributor and advocate for over 5 years.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC007"><strong>Transforming Resource Distribution in Apache Hadoop YARN: Enhancing Flexibility for the Cloud</strong><br> Apache Hadoop YARN has long been a cornerstone of on-premises solutions, and its importance continues into the future. However, we also recognize the value it can bring to the Cloud, empowering users to effortlessly migrate their solutions to private and public cloud environments.<br>In the era of on-demand dynamic cluster scaling, the traditional rigidity of Capacity Scheduler’s resource distribution poses some limitations. Previously, every bit of the cluster resource had to be meticulously allocated, treating any change in total cluster resources as an exceptional scenario, rather than the norm.<br>To overcome this, we undertook a comprehensive revamp of resource distribution mechanisms within Capacity Scheduler. This update enables users to seamlessly combine any previously available unit within the queue hierarchy or even within a single resource unit. Now, describing memory with megabyte values, allocating vcores with percentage shares, and assigning weighted shares of GPUs is a possibility, all while having the option of leaving resources unallocated for queues to scale organically.<br>In this talk we delve into the challenges we encountered during development and the ways we overcame them. Through examples, we will demonstrate the practical implementation of this feature and highlight its usefulness in real-world scenarios. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_compute_transforming_resource_distribution_in_apache_hadoop_yarn-benjamin-teke.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Benjamin Teke<br> Benjamin is a Staff Software Engineer, YARN Tech Lead, Hadoop Committer @ Cloudera. He has many years of experience in big data, mainly working with Java or lately Golang. Before YARN and Cloudera Data Engineering he worked on a mobile network traffic analyser used by multiple large network providers. He lives in Budapest and besides his interest in photography and cars, he is passionately automatizing his home via IoT. <br><br> Tamas Domok<br> Tamas is a Staff Software Engineer at Cloudera, where he is working on Apache Hadoop YARN and also on Cloudera Data Engineering – a platform to run Spark jobs and Airflow workflows on top of Kubernetes. Previously, he worked for 10 years for Balabit (acquired by OneIdentity, Quest) where he was a Lead Developer designing a distributed system to process remote desktop protocols like SSH/ RDP/VNC that was able to replay, index and even intervene in the network traffic.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC008"><strong>Decoding Kubernetes Batch Schedulers: Unraveling the Differences for Optimal Workload Management</strong><br> In the dynamic world of containerized applications, Kubernetes has emerged as a dominant resource orchestrator, revolutionizing the way we deploy and manage workloads. However, there are multiple batch schedulers available, each with unique features, performance characteristics, and trade-offs. Navigating this diverse landscape of batch schedulers can be challenging, especially when selecting the optimal one for specific use cases.<br>In this talk, we will embark on an in-depth exploration of different Kubernetes batch schedulers, evaluating them to suit the needs and demands of large enterprises like DBS. We will dissect popular schedulers such as Apache Yunikorn, Kubeflow, Kueue, Volcano, and others. By understanding the architectural nuances, scheduling mechanisms, performance, fault tolerance, and scalability aspects, attendees will gain insights into selecting the most suitable batch scheduler for their applications. We will also delve into advanced features such as resource management with hierarchical queues, Gang Scheduling, Queue priorities, Pod Preemption, and observability options, empowering attendees to make informed decisions when designing and deploying enterprise-grade batch workloads. (<a href="https://communityovercode.org/wp-content/uploads/2023/11/tue_bigdata_naganarasimha-naganarasimha-ramesh-garla.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Naganarasimha<br> Senior Principal Engineer and SVP @DBS. Contributing to Apache Hadoop project since 2013 in various roles as Hadoop Contributor, Hadoop Committer, and a member Project Management Committee (PMC). Majorly working on YARN Scheduling and observability improvements like Node Lablels and Attributes support, ATS V2 in YARN etc. As part of the ongoing work he is focusing on having cost effective and performance optimised containerised spark workloads in a multi cloud environment. <br><br> Harish Kumar<br> Harish Kumar Malaga is a Principal Engineer in the DBS Data Platform team, specializing in Data Security, Privacy, Performance Engineering, and open source Big Data Technologies. He has made significant contributions to the Apache Ranger project and is actively involved in securing containerized Big Data Platforms in Kubernetes and other cloud-native environments.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC009"><strong>ime Series Data Modeling for Massive Scale</strong><br> Apache Cassandra is renowned for its remarkable scalability in the face of a rapidly expanding data footprint. However, to fully harness its potential, it is essential to equip yourself with a repertoire of invaluable techniques.<br>Drawing from two-decades of experience in database optimization, our speaker will guide you through practical strategies to overcome common obstacles encountered at every growth stage. With a keen eye on maximizing efficiency, you will gain insights into the following:<br>* Understanding Growth Pitfalls: Explore the challenges that arise during each phase of expansion and learn how to preemptively navigate around them, ensuring smooth and sustainable growth.<br>* Effective Data Storage: Discover proven approaches for structuring and organizing your time series data within Cassandra, optimizing storage utilization while maintaining accessibility and performance.<br>* Performance Optimization: Uncover key considerations for fine-tuning your Cassandra environment to achieve optimal performance, enabling seamless operations and faster response times.<br>Through this session, you will acquire a comprehensive toolkit of best practices and methodologies, honed by years of hands-on experience. Join us as we unlock the untapped potential of Cassandra, empowering you to efficiently manage and extract value from your vast time series data repositories. <br><br> <strong>Speaker:</strong> Jon Haddad<br> Jon Haddad is a highly experienced software engineer and consultant with over 20 years of industry experience. For the last 10 years, Jon has been deeply involved with Apache Cassandra, having worked on some of the largest and most complex Cassandra deployments in the world. Jon is a committer on the project and is widely recognized as a leading expert in the Cassandra community.<br>Jon has held key roles at prominent technology companies including Datastax, The Last Pickle, Apple, and Netflix. During his tenure, Jon has developed a wealth of expertise in building and managing large-scale distributed systems, with a particular emphasis on Cassandra. In his current role as a consultant, Jon leverages his extensive experience to help teams succeed with Cassandra and other distributed systems, providing expert guidance on architecture, data modeling, performance optimization, and more.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC010"><strong>Data Integrity Guarantees in Erasure Coding Storage Systems</strong><br> Data integrity is a critical requirement in storage systems, and many of them support erasure coding. Checksum calculations are relied upon by storage systems to ensure integrity, and the computed checksum data is stored as well. However, in erasure coding, checksum bits need to be regenerated when a lost replica is recovered. If the recovered data is corrupted, the checksum will also be incorrect. Therefore, a mechanism is necessary to ensure the correctness of recovered data and checksums. Unlike replication systems, where data and checksum can be copied from redundant copies, additional measures are required in erasure coding systems.<br>Some storage systems like HDFS, address these integrity challenges by implementing additional parity generations after data recovery. However, this approach requires additional computational resources to recompute the parity, and it becomes difficult to detect multiple data corruption blocks within data and parity units.<br>In this presentation, we will go through the integrity challenges and other solutions we built to solve these data integrity issues. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tuesdayoctober102023_bigdata_storage_track_data_integrity_guarantees_in_erasure_coding_storage_systems_by_uma_gangumalla_aswin_swami-uma-maheswara-rao-gangumalla.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Aswin Shakil Balasubramanian<br> I am Aswin Shakil Balasubramanian. I work at Cloudera as a Software Engineer. I’m an active contributor and committer for Apache Ozone. Over the past year, I have contributed directly to multiple core functionalities for various sub-projects such as Multitenancy, Erasure Coding, and Snapshots. <br><br> Uma Maheswara Rao Gangumalla<br> Uma Maheswara Rao is an Apache Software Foundation Member. An Apache Hadoop, Ozone, BookKeeper, Incubator committer and a member of the Project Management Committee, and a long-term active contributor to the Apache Hadoop project. He is also mentoring several incubator projects at Apache. Uma holds a bachelor’s degree in Electronics and Communications Engineering. He has more than 15 years of experience in large scale Distributed Software Platforms design and development. Currently, Uma is working as a Senior Engineering Manager at Cloudera, Inc, and primarily focuses on open source big data technologies. Prior to this, Uma worked as a Software Architect at Intel Corporation, California. He also served as chair for the review committee of the big data storage and compute track proceeding at Community Over Code conference.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC011"><strong>Optimizing Apache Spark Data Pipelines on Kubernetes: Leveraging Spot Instances for Production Efficiency.</strong><br> Kubernetes has rapidly become the go-to open-source system for automating the deployment, scaling, and management of containerized applications. With the integration of Apache Spark and Kubernetes (k8s) since Spark 3.1, the Spark community has increasingly embraced running Spark on k8s. In this talk, we will address the challenges faced by Data teams when transitioning to Apache Spark on Kubernetes, while highlighting the significant benefits such as efficient resource utilization and cost optimization. <br>Key points to be covered in the talk: <br>-Exploring the motivation behind running Spark on Kubernetes <br>-Understanding the benefits of Kubernetes for Spark applications <br>-Optimizing resource utilization and reducing costs with Spark on Kubernetes <br>-Harnessing the potential of spot instances for substantial cost savings <br>-Strategies for gracefully handling spot instance interruptions <br>-Best practices and future considerations for running Spark on Kubernetes (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_-bigdata_kenniche-hichem-kenniche.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Hichem Kenniche<br> Hichem brings more than 15 years in the big data processing domain. He is currently an OSS Product Architect at Instaclustr (part of Spot by NetApp) working with the product team to priorities the market and customers needs into new features.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDC012"><strong>Orchestrating Scalable Data Pipelines with Apache Toree, YuniKorn, Spark, and Airflow</strong><br> This session explores the integrated use of Apache Toree, YuniKorn, Spark, and Airflow to create efficient, scalable data pipelines. We will start by discussing how Apache Toree provides an interactive analysis environment with Spark via Jupyter Notebook. Then, we’ll discuss using Apache YuniKorn to manage and schedule these computational resources, ensuring system efficiency. Central to our talk, we’ll delve into the role of Apache Spark in large-scale data processing, highlighting its integration with Toree and YuniKorn. Finally, we’ll demonstrate how Apache Airflow orchestrates this complex workflow, managing dependencies, and providing end-to-end processing solutions. Attendees will learn to leverage these Apache projects for optimized data processing. <br><br> <strong>Speaker:</strong> Luciano Resende<br> Luciano Resende is an AI Platform Architect at Apple AI/ML organization. He’s a highly performant technical leader that embraces challenges and complex problems to drive breakthrough innovations. Luciano’s expertise is in open source, and enterprise-grade AI platform technologies with over 20 years of experience successfully designing, building and delivering complex software in fortune 500 companies and open source. He has a strong background in open source big data platforms such as Apache Spark, and data science building blocks such as the Jupyter Notebook Stack, Elyra and Apache Toree Scala kernel.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Big Data: Storage Track</h3> <p><strong>Track Chairs:</strong> Uma Maheswara Rao Gangumalla, Owen O’Malley</p> <p id="BDS001"><strong>Apache Iceberg for large-scale analytics: An architectural deep-dive</strong><br> Data Lakes have allowed organizations to store huge amounts of data with cheaper costs to run robust analytical workloads such as BI and Machine Learning. However, data lakes have no data management capabilities (quality, governance, etc.) & can give analysts/data scientists a hard time in making sense of the data. This is where a Data Lakehouse architecture comes to bring the best of a data lake & warehouse.<br>One of the key component of a lakehouse is the ‘table format’ which brings in capabilities such as ACID transactions, row-level operations, time-travel, rollback/versioning, etc. Over the years, the de-facto table format has been Hive. However, Hive falls short on data, user & applications at scale. This is where Apache Iceberg shines.<br>In this talk, we will go through: <ul> <li>What is a table format in data lakes</li> <li>Hive table format & why do we need a new one?</li> <li>Architecture of an Iceberg table: deep dice</li> <li>What happens under the covers when we CRUD?</li> <li>Benefits of this architecture (cost savings, etc.) & how it enables an open lakehouse</li></ul></p><p> By the end of this talk, you will learn about: <ul> <li>What a Lakehouse architecture is</li> <li>What Iceberg brings into the picture in terms of capabilities</li> <li>What tools/engines can be used with Iceberg? (Spark, Flink, Tableau, TensorFlow, etc.)</li> <li>How Iceberg helps with huge volume of datasets</li></ul></p><p>(<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_bigdata_dipankarmazumdar-dipankar-mazumdar.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Dipankar Mazumdar<br> Dipankar is currently a Developer Advocate at Dremio where his primary focus is advocating data engineers/architects/scientists on Dremio’s open lakehouse platform & various open-sourced projects such as Apache Iceberg, Arrow, Project Nessie, etc. that helps data teams apply & scale analytics. In his past roles, he worked at the intersection of Machine Learning & Data visualization. Dipankar has a Masters in Computer Science with research area in ExplainableAI.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS002"><strong>Improving concurrency for a Hadoop Compatible Filesystem</strong><br> Over the years, Hadoop-compatible file systems have tried multiple times to tackle the concurrency model and improvements that can be made to reduce concurrency contention. In this talk, we will present Ozone’s path forward to allow maximum concurrency and how we plan to expose that within the Hadoop-compatible filesystem and the S3 APIs. In addition to design, there have been many interesting findings around the implementation details for the concurrency model. This includes locking implementations, implications of replicating using a Raft-like consensus model and request replication, and other speed bumps.<br>This talk aims to engage with the community, share the work done so far, measurements, and discuss the way forward. <br>This talk will dive deep into the concurrency model for the various APIs exposed, internal implementations, snapshot concerns, and testing. <br><br> <strong>Speakers:</strong> Ritesh Shukla<br> Ritesh is an Apache Ozone committer. He has over a decade of experience with distributed storage solutions and systems. He is passionate about picking all three in a solution: simple, right, and efficient. He initiated the VMware Storage integration with Kubernetes, then designed a git for data solution integrated into Kubernetes for OneConcern (github.com/oneconcern/datamon), followed by integrating MinIO into VMware’s Tanzu platform over vSAN Direct. He is currently working on Ozone, a distributed object store that caters to HDFS and S3 workloads and scales beyond what HDFS can scale. Ozone is consumed as a Hadoop-compatible filesystem and S3-compatible store from multiple Kubernetes-based data services. There is an ongoing effort to run the entire stack, including Ozone in Kubernetes, including Ozone. <br><br> Duong Nguyen<br> Duong Nguyen has worked on scaled software services for nearly 10 years, spanning companies such as Amazon AWS and Cloudera. He is an Apache Ozone committer, and his contributions have helped improve performance by multiple orders of magnitude. <br><br> Tanvi Penumudy<br>Tanvi Penumudy started her Apache software contributor experience and her software career with Apache Ozone. She has been focused on improving Ozone’s performance.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS003"><strong>Multi Tenancy — Apache Hbase</strong><br> Apache HBase is an open-source non-relational distributed database with multiple components such as Zookeeper, JournalNodes, Hmaster, Namenodes, Datanodes, Regionserver. Managing independent clusters for each use case is operationally heavy and sub-optimal utilization of hardware. Hence there is a need for providing a consolidated, managed, multi-tenant HBase cluster with stronger isolation guarantees in many organizations. <br>In this talk, we are going to talk about how we approached this problem, made tradeoffs and run large scale multi-tenant hbase clusters with strict isolation guarantees. <br>Blog Links:<br>Part I: <a href="https://blog.flipkart.tech/hbase-multi-tenancy-part-i-37cad340c0fa" rel="nofollow">https://blog.flipkart.tech/hbase-multi-tenancy-part-i-37cad340c0fa</a><br>Part II: <a href="https://blog.flipkart.tech/hbase-multi-tenancy-part-ii-79488c19b03d" rel="nofollow">https://blog.flipkart.tech/hbase-multi-tenancy-part-ii-79488c19b03d</a> <br><br> <strong>Speaker:</strong> Mallikarjun Venkataswamyreddy <br><br> Engineer @ Flipkart, India. Working in platform team which takes care of large multi-tenant hbase clusters.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS004"><strong>Just add water: Apache Ozone Applications and Real-world Success Stories</strong><br> Creating an object store for the Big Data Analytics ecosystem is a highly complex undertaking. It requires careful consideration and expertise to ensure seamless integration with various applications such as Hive, Impala, Spark, HBase, and more. The demand for Ozone, an object store designed for Big Data, is rapidly growing as there is a significant interest in enabling smooth collaboration between Ozone and other Big Data applications.<br>This presentation aims to provide a concise introduction to the extensive application support offered by Ozone. Additionally, it will showcase real-world examples of how community members have adopted and utilized Ozone, presenting compelling use cases to highlight its effectiveness in diverse scenarios. <br><br> <strong>Speakers:</strong> Saketa Chalamchala<br> Saketa is a Sr. Software Engineer at Cloudera working with the Storage Team at Cloudera. She has previous experience as a Solutions Architect developing and architecting Hadoop Platform & ETL solution for over 15 customers and brings a customer centric point of view to product engineering. She is a professional with a Master’s degree focused in Computer Science from Stony Brook University.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS005"><strong>Using temporal recency to improve upsert’s memory performance in Pinot</strong><br> Upsert is a very important feature in Pinot allowing updates for a primary key in real-time. In Uber, we use upserts at trips-scale. One of the major challenges of upsert is that we are bottlenecked by in-memory storage limiting us to just 200 million keys in one host. This leads us to higher cost for our use-cases even though disk space / compute is not used to its full capacity. This talk focuses on the various solutions we are exploring based on our time-series oriented data patterns resulting in bringing down the in-memory storage for upsert tables and unlocking use-cases with higher retention. <br><br> <strong>Speakers:</strong> Atri Sharma<br> Big Data hacker, Open source contributor at Pinot, Presto, Solr, Lucene <br><br> Pratik Tibrewal<br> <a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS006"><strong>Fast Copy-On-Write within Apache Parquet for Data Lakehouse ACID Upserts</strong><br> Efficient table ACID upsert is essential for today’s LakeHouse. Important use cases, such as GDPR Right to be Forgotten (also known as Data Erasure) and Change Data Capture (CDC), rely heavily on it. While Apache DeltaLake, Iceberg, and Hudi are widely adopted for these use cases, the slowness of upserts is seen when the data volume scales up, particularly for copy-on-write mode. Sometimes, the slow upserts become time and resource-consuming tasks or even blockers to finishing compliance requirements on time.<br>To improve the speed of upserts, we introduced partial copy-on-write within Apache Parquet files with row-level index, which can skip unnecessary data chunk reads and writes efficiently. The term "partial" here means only performing copy-on-write for the related data chunks inside a Parquet file but skipping the unrelated ones. Generally, only a small portion of the file needs to be updated, and most of the data chunks can be skipped. We have observed an increased speed of 3x to 20x when compared with Delta and Hudi.<br>In this tech talk, we will discuss the row-level secondary index and the innovations we introduced in Parquet on how to upsert data inside a Parquet file. We will also demonstrate benchmarking results that show 3x to 20x faster speeds than traditional DeltaLake, Iceberg, and Hudi. <br><br> <strong>Speakers:</strong> Xinli Shang<br> Xinli Shang is Apache Parquet PMC Chair, Presto Committer, Tech Lead Manager on the Uber Big Data Infra, and Uber Open Source Committee member. He is leading the Apache Parquet community and contributing to several other communities. He is also leading several initiatives on data format for storage efficiency, security, and performance. <br><br> Mingmin Chen<br> Mingmin is director of engineering and head of Data Infrastructure engineering team at Uber. He has been leading the team to build and operate Hadoop data lake to power multiple Exabytes data in storage, Kafka infrastructure to power tens of trillions messages per day, and compute infrastructure to power hundreds of thousands compute jobs per day. His team builds highly scalable, highly reliable yet efficient data infrastructure with innovative ideas while leveraging many open-source technologies such as Hadoop (HDFS/YARN), Hudi, Kafka, Spark, Flink, Zookeeper etc.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS007"><strong>When Hardware Fails, Ozone Prevails</strong><br>Apache Ozone supports half petabyte nodes that scale horizontally to exabyte capacity. Managing this tremendous amount of hardware requires a self-healing system that can proactively detect and overcome failures without administrator intervention. In this talk we will explore Ozone’s self-healing capabilities that scale from a single flipped bit to complete node failure, with flaky disks and networks in between. We will enumerate Ozone’s mechanisms to ensure data integrity during write, rest, and read, and the configurations to customize them for your cluster. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_bigdata_rose-ethan-rose.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Ethan Rose<br> Ethan Rose is a Senior Software Engineer at Cloudera and an Apache Ozone PMC member.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS008"><strong>Unified Compaction Strategy in Cassandra (CEP-26)</strong><br> Cassandra 5 will include a new compaction strategy which aims to provide a common solution for the kinds of workloads that the existing compaction strategies in Cassandra target, solve the existing strategies’ deficiencies, improve performance and permit easy reconfiguration.<br>The new unified strategy defines an abstraction that covers levelled, tiered, as well as hybrid compaction schemes, employs a flexible SSTable sharding scheme, and selects and prioritizes SSTable sets for compaction based on overlap. As a result it is able to match or exceed the performance of the size-tiered compaction strategy but forgo its space overhead requirements and SSTable and compaction size problems; alternatively, it can provide better read performance than levelled compaction strategy at much higher write throughput; it can also effectively handle time-series data, and can be easily extended to offer time-driven compaction decisions.<br>Join us for a deeper dive into the key features of the strategy and the rationale behind them, as well as some examples of what we have been able to achieve with it. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_bigdata_lambov-branimir-lambov.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Branimir Lambov<br> Long-term Cassandra committer focusing on local data storage and retrieval.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS009"><strong>Snapshots for an Object Store</strong><br> File system snapshots have been an integral part of a complete feature set for most storage systems out there. They enable several use cases including backup, restore, replication, archival, compliance, incremental evaluation etc. However such a feature has been lacking for object storage systems even though these systems have been around for several years. Some well known object storage systems out there, have supported individual object versioning and portrayed it as the snapshot feature. However it’s far from a true snapshot feature similar to the file systems. A true snapshot feature offers the ability to take a point in time, consistent image of a group of objects within the object storage. While this allows for referential integrity amongst the group of objects, it also offers easy manageability of hundreds and thousands of such snapshots over time. <br>In this presentation, we explore the challenges associated with offering a snapshot feature for an object storage system and how it is very different from object versioning. We also discuss the design and development of the snapshot feature for Apache Ozone object store. <br><br> <strong>Speaker:</strong> Prashant Pogde<br> Prashant is a seasoned technical leader with several industry disrupting products under his name over the last 23+ years in the distributed systems space. Some of the massively scalable distributed systems that he has designed and developed include Yahoo’s unstructured data object store, EMC -DD9500 platform, storage for Oracle Public cloud etc. More recently he has been involved with Apache Ozone object store and is an Apache PMC member for this project.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS010"><strong>Caching Framework for Exabyte-Scale Data Lakes</strong><br> We are a data-driven company with one of the largest data lake deployments in the world. Our data lakes contain exabytes of data across tens of clusters. As data lakes grow more complex, we face challenges such as 1) slow and inconsistent data access performance, 2) fast-growing data storage costs, and 3) high data operation costs when migrating to the cloud. This talk will discuss how we have designed and implemented an open-source caching framework to improve performance by 1.5x and reduce storage costs by millions per year. The caching framework leverages Hadoop, Parquet, Hudi, Alluxio, and other open-source tools and applies to both on-prem and cloud.<br>By the end of this session, you will learn: <ul> <li>The challenges of data access performance and cost in large-scale data lakes</li> <li>What should be considered while architecting caching to accelerate queries, maximize cache hit rates, and cut data storage costs</li> <li>The open-source stack of caching on top of high-density HDDs to achieve the balance between performance and cost efficiency</li> <li>Advanced techniques to improve cache hit rates, including segmented data file caching, soft-affinity scheduler policies, and cache filtering</li> <li>How to monitor cache usage and working set size with comprehensive trace and JMX metrics</li></ul></p><p>(<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_storage_caching-framework-for-exabyte-scale-data-lakes-hope-wang.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Jing Zhao<br> Jing Zhao is a software engineer at Uber Technologies, Inc. He is a committer and PMC member of Apache Hadoop and Apache Ratis. He got his Ph.D. from University of Southern California. Hope Wang<br> Hope Wang is a Developer Advocate at Alluxio with a decade of experience in Data, AI, and Cloud. She contributes to open-source projects such as Alluxio, Trino, and PrestoDB and is an AWS Certified Solutions Architect – Professional. Her prior roles include positions in venture capital and as a Data Architect. Academically, she holds a BS in Computer Science, a BA in Economics, an MEng in Software Engineering from Peking University, and an MBA from the University of Southern California.<br><a href="/schedule/">Back to Schedule</a><hr><br></p> <p id="BDS011"><strong>Four Technical Value Drivers of A Data Lakehouse with Iceberg</strong><br> Iceberg is becoming synonymous with Lakehouse as this architecture pattern gains in popularity. But what does that mean for data practitioners? What is driving adoption of lakehouses for data engineers, data scientists, business analysts and machine learning professionals, and how does Iceberg help? This session covers four technical value drivers for data lakehouses, and how Iceberg’s unique capabilities help make these use cases possible or better. <br><br> <strong>Speaker:</strong> David Dichmann<br> David leads the product innovation team for Databases and Data Warehouses, with a focus on modern data architectures such as Data Mesh, Fabric and Lakehouses. David has over 30 years experience in data management, data ecosystems, information architecture and enterprise architecture. David has a passion for helping businesses and people make data into transformative insights that lead to product and market acceleration and disruption. Before joining Cloudera, David has worked for companies like Sybase, SAP, and Hewlett Packard Enterprise.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="BDS012"><strong>Iceberg Replication</strong><br> Apache Iceberg is an open-source table format designed for large-scale data workloads. With features such as schema evolution, ACID transactions, and time travel capabilities, Iceberg has gained significant popularity among data engineers and analysts. However, in distributed environments, data replication is a critical requirement to ensure fault tolerance, high availability, and efficient data access. <br>The Iceberg Replication initiative provides an enterprise-grade replication solution for the Apache Iceberg table format. It enables data set replication across multiple clusters, covering provisioning, scheduling, distributed execution, and logging for the Iceberg tables. Initially supporting the Apache Hadoop Distributed File System (HDFS) as underlying storage, it will soon extend its support to Apache Ozone and Amazon S3. It also handles various file types, including multiple Iceberg table specification versions and deletion files in formats like Apache Avro, Apache Orc, and Apache Parquet. <br>The current technical implementation utilizes Apache Hadoop YARN as the underlying framework to distribute large workloads across multiple instances, ensuring efficient replication. The initiative employs Apache Hadoop DistCp for parallel data transfer, contributing to seamless data replication. However, continuous development is underway, with plans to incorporate Apache Tez for data transformation and version comparison to further enhance the capabilities and effectiveness. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_iceberg_replication-rahul-buddhisagar.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Rahul Buddhisagar<br> Rahul is a senior engineering manager from Cloudera based in Santa Clara, California. He has held various roles in engineering and leadership in several domains ranging from speech recognition, storage, replication, and distributed systems. In his current role, Rahul works on providing an analytics/data engineering on-prem platform along with a Data Recovery product portfolio. <br><br> Shailesh Shiwalkar<br> Shailesh Shiwalkar is a Principal Software Engineer at Cloudera based in Santa Clara, CA. He is an Architect who primarily looks at data protection and replication strategy across the Cloudera Data Platform. In the past, he has worked on providing enterprise-grade replication solutions for HDFS, Hive, Impala, HBase, and most recently Apache Iceberg. His background has been in distributed systems and systems programming in his prior roles. <br><br> Teddy Choi<br> Teddy Choi is a senior staff software engineer from Cloudera, and is based in South Korea. He improved Apache Hive’s performance as a committer. He implemented various performance optimization for distributed systems, with relational algebra, propositional calculus, SIMD, scheduling, cache, profiler, heuristics, compression, and hash. In his current role, Teddy works on designing reliable and scalable Apache Iceberg replication services for hybrid multi-clouds.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Cloud and Runtime Track</h3> <p><strong>Track Chair:</strong> Jean-Baptiste Onofré</p> <p id="CR001"><strong>Apache Minho as data gateway with gRPC and Iceberg</strong><br> This talk will present Apache Karaf Minho as runtime, illustrating use of Minho to create a data gateway exposing REST API transformed in gRPC call to store data in Apache Iceberg table format. <br><br> <strong>Speaker:</strong> JB Onofré<br> JB is ASF member for ~ 15 years. He’s PMC member for about 20 Apache projects.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CR002"><strong>Observable resource usage for cloud workloads with Apache YuniKorn</strong><br> Kubernetes is geared towards service-type workloads. A services’ resource usage is stable over time. Apache YuniKorn adds batch and data processing extensions to Kubernetes.<br>The resource usage for batch or data processing workloads is more dynamic. A workload’s resource usage could change each run if the data being processed changes. Workload runs thus change often. Observing the usage for different runs, over time, is important for cluster admins to help plan and manage a cluster.<br>Batch extensions added in Apache YuniKorn make observing usage a little more difficult. Hierarchical queues, workload queueing and user based quotas change things. A workload might not even start if a quota is exhausted. Something that cannot happen on Kubernetes. YuniKorn also has user and group quotas that need to be observable too.<br>How do we make the usage observable for all these objects: a system that exposes changes per application, queue and node directly from YuniKorn. In this talk we will cover the event system which provides this functionality. A simple message stream that can be stored and processed offline. Every change available to analyse or graph when needed. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_cloud_observable-resource-usage-yunikorn-wilfred-spiegelenburg.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Wilfred Spiegelenburg<br> Wilfred is a Principal Software Engineer with Cloudera, based in Melbourne Australia. He has worked as a software engineer for more than 25 years. Involved in multiple open source projects for over 10 years. Tech lead of the Apache YuniKorn project. He is an Apache Software Foundation member, Apache YuniKorn PMC chair and Apache Hadoop committer. <br><br> Peter Bacsko<br> Peter is a Senior Software Engineer with Cloudera. He is an Apache YuniKorn and Apache Oozie PMC member and Apache Hadoop committer.<br><a href="/schedule/">Back to Schedule</a><hr><br></p> <p id="CR003"><strong>Developing infrastructure for using Guacamole</strong><br> Open source is great for software development but utilizing open source in a production is another matter entirely. We wanted a virtual development workstation in the cloud for our developers (>1000). This talk reviews what additional infrastructure we needed to develop to utilize Apache Guacamole for virtual desktops in AWS.<br>I developed automation around Apache Guacamole and a virtual desktop that incorporates newer software versions at reasonable time increments, as well as automating administration. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_cloudandruntimetrack_marklidd-mark-lidd.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> mark lidd<br>IT developer for over 35 years and AWS Cloud developer for 15 years.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CR004"><strong>Apache HBase on K8s</strong><br> In recent years, containerization and orchestration technologies have revolutionized the way we deploy and manage applications. Apache HBase, a distributed NoSQL database, is no exception to this trend. This talk will covers the practical aspects of deploying Apache HBase on Kubernetes using FluxCD Helm, while also exploring essential considerations such as auto-scaling factors, affinity rules, and cloud deployment strategies.<br>Auto-scaling is a critical aspect of managing HBase workloads. This talk will delve into the factors that influence auto-scaling decisions, such as monitoring metrics, load patterns, and performance indicators. We will discuss various auto-scaling techniques, including horizontal and vertical scaling to adjust the HBase cluster size based on demand dynamically. <br>Affinity rules play a crucial role in optimizing performance and resource allocation within a Kubernetes cluster. We will explore the concept of affinity and anti-affinity rules and their implications for HBase deployments. We will discuss scenarios where affinity rules can be applied to achieve specific performance and fault tolerance goals.<br>Additionally, the talk will cover strategies for deploying Apache HBase on various cloud platforms, considering cloud-specific features and services that can enhance HBase deployments, including managed Kubernetes offerings, persistent storage options, and networking configurations. <br><br> <strong>Speakers:</strong> Sergey Soldatov <br><br> Balazs Meszaros <br><br> Tamas Payer <br><br> Ankit Singhal<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CR005"><strong>Enabling Native Integration of NoSQL HBase with Cloud Providers</strong><br> HBase, an open-source NoSQL database, excels at handling large-scale data workloads. However, deploying and managing HBase on cloud platforms presents challenges due to differences in infrastructure and configuration requirements.<br>This talk bridges the gap between HBase and cloud providers by exploring methods to make HBase compatible with cloud environments. We address challenges in deploying HBase on popular cloud platforms (AWS, Azure, GCP), analyzing storage options (local, block, object storage), networking, security (JWT vs Kerberos, GSS-API vs TLS encryption), and resource management.<br>To make HBase native to cloud providers, we propose different strategies for utilizing cloud-specific storage services (Amazon S3, Azure Blob Storage, Google Cloud Storage) as underlying storage for HBase. We evaluate these services in terms of data durability, scalability, cost and performance.<br>Additionally, we present performance benchmarks and case studies showcasing the feasibility and cost benefits of making HBase native to cloud providers. We discuss scalability, elasticity, and cost-efficiency improvements achieved through HBase integration with cloud environments.<br>In conclusion, this talk provides insights into the challenges and opportunities of making NoSQL HBase native to cloud providers. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_cloud_ankit_wellington_stephen-tak-lon-stephen-wu.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Wellington Ramos Chevreuil<br>Ankit Singhal <br><br>Stephen Wu<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CR006"><strong>Apache EventMesh in Huawei Cloud – Next Generation of Enterprise Cloud Native Event Centre: EventGrid</strong><br> This presentation will talk about Apache EventMesh project adoption in Huawei Cloud. As the enterprise cloud event centre, Huawei Cloud EventGrid Service leverages Apache EventMesh as the high performance cloud native Event Processing Engine. EventGrid builds the cloud services and applications ecosystem around asycnAPI and eventing protocol. Today EventGrid already integrated 100+ Huawei Cloud Services and developer applications, servicing over millions of event transactions per day. Together working with Apache EventMesh community, Huawei EventGrid is one of the most innovative and high performance event hub in the Cloud. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_cloudnativetrack_alexluo-alex-luo.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Alex Luo<br> Alex Luo has over 10 years of industry experience in software engineering and IT project management, with specialty in Cloud Platform as a Service (PaaS) and Cloud native Event-driven architecture (EDA). Alex currently is leading the R&D team in Huawei Canada Toronto Research Centre, working on next generation of cloud middleware technologies. Alex is also PMC and key contributor in Apache EventMesh. He is leading the EventMesh project adoption in Huawei Cloud, created EventGrid Service, the enterprise high performance cloud event centre for cloud native applications and services.<br>Outside of the work Alex enjoys hiking and travelling. He loves bringing his family with his lovely son and daughter for travel.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Content Wrangling Track</h3> <p><strong>Track Chairs:</strong> Tim Allison, Nick Burch</p> <p id="CW001"><strong>Adding LLMs to Apache Tika. From 1s and 0s to Llamas!</strong><br> These days, most of us have a lot of data, some of us almost un-imaginable quantities of it. Generally though, what we (and our organisations) want isn’t raw data, it’s useful information. If you don’t know what your piles of binary data are, that can be a tall order. Luckily, Apache Tika is there to help!<br>By using Apache Tika, you’re able to have the file’s type determined, the metadata extracted in a consistent way, and textual content extracted. But what if that isn’t enough?<br>Luckily, the new generation of LLMs (Large Language Models) such as LLaMA are able to help refine the extracted text further. That could be summarising it, classifying it, extracting names and places, or helping improve search over it!<br>Whether you’re new to Apache Tika, to LLMs, or both, we’ll help you to understand how to combine the two! We’ll start by looking at what LLMs are, where they’ve come from, how they work, what they can do, what might go wrong, and how to run open source ones. Then we’ll review what Apache Tika can do, including recent advances. Finally, we’ll see how to join them together.<br>No experience of Machine Learning, Large Language Models or Apache Tika required. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_content_nickburchdoublebill-nick-burch.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Nick Burch<br> Nick began contributing to Apache projects in 2003, and hasn’t looked back since! Most of the projects Nick has worked in belong in the "Content" space, such as Apache POI (ex-PMC Chair), Apache Tika and Apache Commons. As well as coding projects, Nick is also involved in a number of foundation-wide activities, including Conferences, Travel Assistance, Community Development and the Incubator.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CW002"><strong>Laptop-sized ML for Text, with Open Source</strong><br> AI text models like GPT3, ChatGPT, LLaMA, Bing AI and Github Co-Pilot are getting a lot of buzz right now, both good and bad. Much of the training techniques are public, and much of the software is open source, but until recently the computational and data requirements meant most of us couldn’t build or run our own. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_content_nickburchdoublebill-nick-burch.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Nick Burch<br> Nick began contributing to Apache projects in 2003, and hasn’t looked back since! Most of the projects Nick has worked in belong in the "Content" space, such as Apache POI (ex-PMC Chair), Apache Tika and Apache Commons. As well as coding projects, Nick is also involved in a number of foundation-wide activities, including Conferences, Travel Assistance, Community Development and the Incubator.<br><a href="/schedule/">Back to Schedule</a><hr><br></p> <p id="CW003"><strong>Apache Tika: What’s New</strong><br> In this talk, we offer a general introduction to Apache Tika and then turn to focus on some of the more important recent improvements. We’ll offer an overview of the new(ish) pipes module as well as the tika-eval module and then present a brief deep dive on advanced PDF processing.<br>When all you have are files, but you need data, Apache Tika can help. <br><br> <strong>Speaker:</strong> Tim Allison<br> Tim has been working in content/metadata extraction (and evaluation), advanced search and relevance tuning for nearly 20 years. Tim is the founder of Rhapsode Consulting LLC, and he currently works as a data scientist at NASA’s Jet Propulsion Laboratory. Tim is a member of the Apache Software Foundation (ASF), the chair/VP of Apache Tika, and a committer on Apache OpenNLP (2020), Apache Lucene/Solr (2018), Apache PDFBox (2016) and Apache POI (2013). Tim holds a Ph.D. in Classical Studies, and in a former life, he was a professor of Latin and Greek.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CW005"><strong>Apache OpenNLP and LLMs – Where does OpenNLP fit in?</strong><br> Deep learning quickly became a popular method for performing natural language processing (NLP) tasks a few years ago. Its ability to be applied very effectively to many NLP tasks, such as tokenization and named-entity recognition, has made it become the de-facto standard. But what about other methods?<br>Apache OpenNLP is a machine learning based toolkit for the processing of natural language text. It does not use deep learning but can still be effectively applied to many NLP tasks. In this talk we will compare and contrast Apache OpenNLP’s capabilities, performance, and overhead with deep learning methods, with the goal of helping you make a more informed framework choice for your next NLP project. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_contentwrangling_zemerick-jeff-zemerick.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jeff Zemerick<br> Jeff is the current chair of the Apache OpenNLP project, and works in the intersections of cloud, big-data, and NLP. He lives outside of Pittsburgh, PA, USA. Get in touch with Jeff at <a href="https://jeffzemerick.dev/" rel="nofollow">https://jeffzemerick.dev/</a>.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CW006"><strong>Neural Network tools within a clinical Natural Language Processing application.</strong><br> ChatGPT has recently gained attention in the media. So has conjecture such as "this will replace programmers." Such statements do not consider the data scientists, software developers and other fleshy types who actually create the neural network (NN) models, as well as the science, frameworks, tools and curated data required to generate and support them.<br>Despite the penetration of research on NN approaches in the Natural Language Processing (NLP) field, none of them have been engineered into an open source clinical NLP platform for broad adoption and usage. As Python is becoming a standard language in the development of NN models, it is becoming crucial for existing tools to be able to integrate with Python-based machine learning tools.<br>Apache cTAKES Python Bridge to Java (PBJ) is the first modern next-generation open source NN platform for clinical NLP. Built upon the Apache UIMA framework, Apache cTAKES uses pipelines built of individual java components. PBJ can be inserted into a cTAKES/UIMA pipeline as a component, and it can build a sub-Pipeline of Python components. This flow enables interoperability and encourages a development of interchangeable “best-of-breed” components. <br>This talk will broadly cover NNs such as ChatGPT, as well as some tools that exist behind the scenes. It will then discuss the cTAKES platform and PBJ, as well as Apache UIMA, Apache Artemis and other open source tools used in its implementation. <br><br> <strong>Speaker:</strong> Sean Finan<br> Research Computing Principal Engineer<br>Computational Health Informatics Program, Natural Language Processing Lab<br>Boston Children’s Hospital<br>PMC, Apache cTAKES<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Community Track</h3> <p><strong>Track Chairs:</strong> Sharan Foga, Swapnil Mane</p> <p id="CY001"><strong>The Practical ASF Way</strong><br> The Apache Way is a set of behaviors and techniques that will help anyone – organizations and individuals alike – work more effectively in distributed communities. These behaviors turn plain old open source into a truly open governance project, that can keep growing for the long term. <br>This session is a highly interactive review of the core behaviors that help keep Apache projects healthy and productive. Many behaviors are required at the ASF, but they are also valuable to any collaborative project where the contributors are distributed across companies, continents, and experiences.<br>Attendees will leave with a clear understanding of practical actions they can take to help improve their own open source experience, and how to help their communities succeed together. Lessons learned are tied back directly to relevant community and PMC documentation at the ASF, including the latest edits and updates in our docs. <br><br> <strong>Speaker:</strong> Shane Curcuru<br> Shane has been volunteering at the ASF since 1999, speaking at more than a dozen ApacheCons and leading one conference; as well as serving as VP, Brand Management and as a Director for many terms.<br>Otherwise, Shane is a father, husband, and friend. Oh, and we have cats! Find me on socials as ShaneCurcuru.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY002"><strong>Outreach: The Two-Way Street of Open Source Projects</strong><br> There are millions of open source projects people can use and contribute to. Why yours?<br>Developing an open source project that is valuable to many and widely accepted in an industry requires a lot of care and feeding–and more than just code. Whether your project is brand new or been around for decades, you need to explain why other people should take the time to learn, use, and potentially contribute to it. The most prolific open source projects have roles for contributors that include docs, blogs, events, conference talks, podcasts, press releases, social media, new member onboarding, answering questions, and other community-building activities. <br>In this talk, you will learn: <ul> <li>Why community, marketing, and advocacy are vital to open source projects</li> <li>Examples of programs and activities to attract users and contributors</li> <li>How to work with ASF Marketing & Publicity to amplify your project</li> </ul></p><p> <strong>Speakers:</strong> Melissa Logan<br> Melissa Logan is part of the Marketing and Publicity team at the Apache Software Foundation. She is also the founder of Constantia.io, a tech community company that provides community and marketing consulting to data and open source organizations in addition to managing its own independent user communities – Data on Kubernetes Community and Data Mesh Learning. Prior to founding Constantia.io in 2018, Logan was a director at the Linux Foundation with a focus on Linux, networking, cloud, and automotive open source projects. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_outreach_-two_way_street_logan_proffitt.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> Brian Proffitt<br> Brian Proffitt is the VP of Marketing and Publicity for the Apache Software Foundation. He is also the Senior Manager, Community Outreach within Red Hat’s Open Source Program Office, focusing on enablement, community metrics and foundation and trade organization relationships. Brian’s experience with community management includes knowledge of community onboarding, community health and business alignment. Prior to joining Red Hat in 2013, he was a technology journalist with a focus on Linux and open source, and the author of 22 consumer technology books.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY003"><strong>How to participate and contribute to an Apache project as a non-developer, Apache Solr edition</strong><br> After five years of working with Apache Solr and other Apache projects as a support engineer in a big data company, I wanted to check “The Apache Way” and “Community Over Code” with my own eyes. So I went to ApacheCon 2022, and I liked it.<br> In this presentation, I will share my experience attending an ApacheCon for the first time and trying to participate and contribute to the Apache Solr project as a non-developer.<br> We will check where and how to start getting involved, traditional and non-traditional ways to help a project, and what changes I have seen in the community in the last year (spoiler alert: good changes). (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_community_aarrieta-alejandro-arrieta.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Alejandro Arrieta<br>Alejandro Arrieta is a Senior Staff Customer Operation Engineer at Cloudera, working with Apache Solr and other Apache projects since 2017.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY004"><strong>Starting my career The Apache Way</strong><br> After I finished university I started working on Apache Ozone, which was the most exciting thing I could have done. With little to no experience in open source development everything was so new and interesting for me. Ozone has an active community and I was able to fit in quickly. <br>In my talk I’d like to give an inside look of my experience and how our community is working together. The past 2 years I’ve been contributing to Ozone and I learned from the best people throughout this time, who also helped me to become a committer. As we all know the Apache way is a phrase that is hard to define, but through my experience I’d be happy to tell what it means for me and how open communications helped me become a better and more confident software engineer. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_community_dombi-zita-dombi.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Zita Dombi<br>She did her bachelor’s and master’s degree in Computer Science at the University of Szeged and during her last year she joined Cloudera as a software engineer intern. After graduation she became a full time employee and continued to work on the Apache Ozone project.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY005"><strong>Having Hard Conversations on Mailing lists</strong><br> In our ASF communities most of the conversations happen on the mailing lists. Even if there are other tools for communication like Slack and GitHub, the mailing list is still the best place for community discussions.<br>In this talk I will highlight both the benefits and the troubles I have seen while participating in a few ASF projects, focusing especially on the "hard conversations", where it is difficult to converge to decisions for the benefit of the community and the products we provide to the world. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_community_olivelli-enrico-olivelli.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Enrico Olivelli<br> Enrico is an Open Source Software and ASF enthusiast, he is PMC member in a few projects (ZooKeeper, BookKeeper, Pulsar, Curator) and committer of Maven.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY006"><strong>Usability for high code software to help improve contributions</strong><br> How to increase contributions to open source software? Open source software (OSS) development often prioritizes functionality and usability can sometimes take a back seat. This is more so the case when tool enhancements target users with high-code proficiency. There is a popular sentiment that developer tools are constructed differently from end-user applications. While IntelliSense is an example cited for being UX-optimized, there are many examples such as PHP language, Eclipse IDE and others that raise questions of terms used in the tool, descriptiveness of names, naming pattern, and other usability basics or essentials. <br>While it is common to test for bugs and errors in code, evaluating an experience for usability is typically more specialized and seems unnecessary. That said, there are many benefits of usability for many stakeholders in the open source context. The benefits span the OSS development context from sales, and marketing, increased customer or end user satisfaction, impact of recurring and redesign-related costs, etc. <br>In this presentation, I offer details of improvements made to OpenSearch for the developer user, but one which not just prioritizes on experience enhancement, actually measures how usable the launched features are. The OpenSearch Project team established a baseline for future improvements to UX. Therefore, in the first baseline study, I examined our performance on usability with Admins. We presented 20 participants with seven tasks from Admin panel workflow. The seven tasks cover the most common data management functionalities, such as managing and creating indexes and index lifecycles, in OpenSearch. <br>In this talk I present benefits of usability to ultimately ease the process for community contribution. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_community_sundar-aparna-sundar.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Aparna Sundar<br> Aparna Sundar is a Senior Researcher at OpenSearch Project. She has decades of experience in the field of research and design. She actively publishes in cognitive science journals. Aparna gives talks in various domains including Technology, Psychology and Marketing.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY007"><strong>A Journey through the ASF!</strong><br> When I made my first ever open source contribution to the ASF all those years ago I would never have thought that it have such a huge impact on my life, and the way I see the open source world. That contribution led me to where I am today – an ASF Board Director but I’m not anyone particularly special. The ASF is full of people who like myself became a part of the ever growing community of project communities that make up the Foundation. We often talk about the health and sustainability of projects but what about the sustainability of the roles that form the governance model of the foundation itself? There are a lot of wheels working in the background to keep the foundation running and many of those things are linked to individuals interested in helping share the load by taking on those roles.<br>I’d like to share the story of my open source journey and how you too could become a part of the ‘governance or operational engine’ that keeps the foundation moving. <br><br> <strong>Speaker:</strong> Sharan Foga<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY008"><strong>Building a Commercial Service with Community Engagement</strong><br> Amazon Managed Workflows for Apache Airflow (MWAA) was launched in November, 2020 with the goal of making it easy for users to adopt this popular orchestration tool without worrying about security, scalability, and infrastructure. From the start, MWAA intended to 1/Only offer the same Apache Airflow code as users could download themselves, and 2/Give back to the community by helping make Airflow better for everyone. In this talk, I will present the tenets that were followed when building and running this service, and show how being community-first can be a foundation for commercial success. <br><br> <strong>Speaker:</strong> John Jackson<br> John has over 20 years of software experience as a developer, systems architect, and product manager in both startups and large corporations and is the AWS Principal Product Manager responsible for Amazon Managed Workflows for Apache Airflow (MWAA).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY009"><strong>Empowering Responsible Community Decision-Making</strong><br> Community decision-making is a vital aspect of ASF communities. A decision-making framework provides a reliable and replicable process for navigating the complexities involved while ensuring community voices are heard. This talk focuses on the five phases of the framework: Frame, Shape, Evaluate, Refine, and Act, with a specific emphasis on community decision-making. By incorporating core questions, evaluating options through a matrix of values and principles that align with ASF values, and refining proposals, we can make informed decisions that prioritise the well-being and interests of the community and project over individuals or companies. Join me in exploring how decision-making empowers people to create positive impacts within their communities. <br><br> <strong>Speaker:</strong> Justin Mclean<br>Justin Mclean is a highly experienced professional with over 30 years in web application development, education, and community work, and is an active contributor to open source software. Justin is a renowned speaker at conferences worldwide and currently serves as the Community Manager at Datastrato. He mentors projects in the Apache Software Foundation and holds positions as VP of the ASF Incubator, and is an ASF board member.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY010"><strong>Category X for AI? Are LLM / ML projects repeating our licensing mistakes?</strong><br> AI, ML and LLMs are hot topics right now, both in the Commercial and in the Open Source space. We’re seeing large numbers of new contributors and companies draw in, who haven’t taken part in Open Source before.<br>Unfortunately, it seems like these new communities are heading rapidly towards many of the licensing and legal problems that Apache projects faced 10+ years ago.<br>What’s going on? What’s going wrong? Is history doomed to repeat itself?<br>Join us for a review of what’s going on in ML communities right now, especially around LLMs. We’ll see what’s going wrong, and some of the struggles they’re facing around licensing, community and legal. Learn where it is all happening, and how to get involved. With any luck, see how you can bring your Apache experiences to help a new generation of contributors avoid our mistakes.<br>And if not, look forward to another decade of "what license is that under really" and "can I use this or not" debates!<br>No AI (Artificial Inteligence), ML (Machine Learning), or LLM (Large Language Model) experience needed! (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_community_categoryxforai-nick-burch.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Nick Burch<br>Nick began contributing to Apache projects in 2003, and hasn’t looked back since! Most of the projects Nick has worked in belong in the "Content" space, such as Apache POI (ex-PMC Chair), Apache Tika and Apache Commons. As well as coding projects, Nick is also involved in a number of foundation-wide activities, including Conferences, Travel Assistance, Community Development and the Incubator.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY011"><strong>Lessons learned: Improving the security process of an Apache Project</strong><br> Lessons learned from the effort made by Apache Airflow to improve their process of handling security issues. With the focus on supply chain security in OSS, having a sound security process is becoming more important for every OSS project.<br>Based on the true story of how a deliberately designed security process in a big and popular Apache project led to significant improvements in the way reported security issues are handled, managed and communicated, leading to a significant decrease in the number of open security issues and implementing improvements to decrease the incoming numbers. While your project needs might be different, a number of the lessons learned might be transferable.<br>The deliberate improvement effort, collaboration with the ASF security team and wider community, led to changes in the project’s approach to security – adding a clear and understandable security model that can be used to communicate with users and security researchers. It also resulted in implementing structural changes to handle security issues not only by individual fixes but by implementing structural changes in the project that eliminated a whole class of problems. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_community_-lessons-learned_-improving-the-security-process-of-an-apache-project-jarek-potiuk.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jarek Potiuk<br>Independent Open-Source Contributor and Advisor, Committer and PMC member of Apache Airflow, Member of the Apache Software Foundation<br>Jarek is an Engineer with a broad experience in many subjects – Open-Source, Cloud, Mobile, Robotics, AI, Backend, Developer Experience, Security, but he also had a lot of non-engineering experience – building a Software House from scratch, being CTO, organizing big, international community events, technical sales support, pr and marketing advisory but also looking at legal aspects of security, licensing, branding and building open-source communities are all under his belt. <br>With the experience in very small and very big companies and everything in-between, Jarek found his place in Open-Source world, where his internal individual-contributor drive can be used to the uttermost of the potential. <br><br> Arnout Engelen<br> Arnout is an independent Open Source developer and part of the ASF Security Team<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="CY012"><strong>Embracing Differences for Innovation: The Path to Inclusive Open-Source Projects</strong><br> Open-source technologies have become a true force behind technological advancements, collaboration, and innovation, and Apache Software Foundation is known as one of the most popular nonprofit organizations. However, these projects’ true potential can only be reached when embracing diversity and inclusion.<br>Diversity and Inclusion are not limited to gender or physical disabilities, it also embraces the neurodivergent (Autism, Dyslexia, Dyscalculia, etc.) individuals who frequently need support to read and/or write content for websites and coding. Allowing different people to join a project brings distinct points of view and ideas, and when ally to open-source projects, it enhances creativity, broadens perspectives, and strengthens the project’s resilience.<br>This presentation outlines best practices to be implemented in open-source projects to promote diversity and inclusion, such as accessibility tools and practices for websites, events accommodations, and codes of conduct. Notwithstanding, this presentation also aims to empower individuals and communities within ASF by offering insights and practical steps to create inclusive environments. <br><br> <strong>Speaker:</strong> Glaucia Esppenchutz<br> Hello there! I’m Gláucia, an experienced developer passionate about Python and DataOps. With over 8 years of coding, I’ve had the opportunity to work on a wide range of projects, harnessing the power of Python to solve complex problems and streamline data operations.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Data Engineering Track</h3> <p><strong>Track Chairs:</strong> Ismaël Mejía, Jarek Potiuk</p> <p id="DE001"><strong>Building a semantic/metrics layer using Calcite</strong><br>A semantic layer, also known as a metrics layer, lies between business users and the database, and lets those users compose queries in the concepts that they understand. It also governs access to the data, manages data transformations, and can tune the database by defining materializations.<br> Like many new ideas, the semantic layer is a distillation and evolution of many old ideas, such as query languages, multidimensional OLAP, and query federation.<br> In this talk, we describe the features we are adding to Calcite to define business views, query measures, and optimize performance. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_dataeng_building-a-semantic-metrics-layer-using-calcite-julian-hyde.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Julian Hyde<br> Julian Hyde is the original developer of Apache Calcite, an open source framework for building data management systems, and Morel, a functional query language. Previously he created Mondrian, an analytics engine, and SQLstream, an engine for continuous queries. He is an engineer at Google, where he works on Looker and BigQuery.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="DE002"><strong>Iceberg Catalog as a Service</strong><br> Catalog provides unified, secure access to structured data. Apache Iceberg is a new open source table format, which enables ACID-compliance and scales for petabyte datasets. While the same Hive metastore can be used for cataloguing when migrating from Hive to Iceberg table, its convenience is quickly outweighed by intermittent lock issues and maintenance overhead. The Iceberg open source community has a proposal for a new implementation of catalog, which can be hosted as a REST server. Defined by an open API specification, Iceberg REST catalog presents a language-agnostic choice and hides all server side logic behind the scenes, while also provides better security and extensibility.<br> This talk highlights how the REST catalog was built and adopted at Apple and the improvements we are bringing back to the open source community. We will cover the benefits of the new REST catalog, our migration journey from Hive metastore to the REST catalog, and lessons learned. We will even dive into some of the ways that we extended the catalog functionality to clients outside of Apache Spark and Apache Flink, introduced a new set of APIs to expose files behind Iceberg table and integrated with the authentication and authorization plugin for access control. Attendees will leave ready to start their migration to the REST catalogue. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_dataengineering_hongyue-hongyue-zhang.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Hongyue Zhang<br> Hongyue started his career developing micro services in AWS to help schedule the serverless containers at scale. His journey with data started in 2021, and he immediately became the fan of the Apache Iceberg project. At Apple, Hongyue is building tools and systems around Apache Iceberg to help make data-driven decisions.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="DE003"><strong>The making of an Exabyte-scale Data Lakehouse</strong><br> The concept of the "Data Lakehouse" quickly gained widespread acceptance in the industry. By utilizing the Apache Ozone object store as its foundation, a Data Lakehouse can effortlessly scale up to exabytes of data. This scalability empowers high-performance queries while simultaneously reducing the total cost of ownership and minimizing the carbon footprint.<br>The Ozone community has actively collaborated with key stakeholders such as Hive, Impala, Spark, Nifi, and Iceberg communities to ensure optimal integration and seamless functionality with Ozone. This collaborative effort has resulted in significant advancements, ensuring that query engines are finely tuned for Ozone and that systems like Nifi and Iceberg work harmoniously within the Ozone ecosystem.<br>During this presentation, we will delve into the recent integration endeavors undertaken. These efforts are aimed at providing a cohesive and integrated Data Lakehouse experience on the Ozone platform, offering enhanced capabilities and a unified environment for data management and analysis. <br><br> <strong>Speakers:</strong> Saketa Chalamchala<br> Saketa is a Sr. Software Engineer at Cloudera working with the Storage Team at Cloudera. She has previous experience as a Solutions Architect developing and architecting Hadoop Platform & ETL solution for over 15 customers and brings a customer centric point of view to product engineering. She is a professional with a Master’s degree focused in Computer Science from Stony Brook University. <br><br> Siddharth Wagle<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="DE004"><strong>The free lunch is over, we have to ‘really’ deal with unstructured data</strong><br> When Data Engineers think about unstructured data, basically the first idea that comes to mind is those pesky legacy files we need to transform to extract into some ‘good old’ structured table somewhere. But the recent improvements on Machine Learning and the growing popularity of Large Language Models (LLMs) have opened the pandora box of interest and requirements for Data Engineers. Users want to access and analyze data from unstructured data sources using natural language processing and we should maintain unstructured sources.<br>In this talk we will go into detail about what we need to do to get up to speed with the recent changes, we will talk about processing audio, images and text, using vector embeddings as well as the requirements for unstructured data based pipelines and how we can achieve them by relying on new open-source tools and our own good old Apache data engineering stack: Apache Spark, Lucene, Tika and others. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_dataengineering_the-free-lunch-is-over-we-have-to-really-deal-with-unstructured-data-ismael-mejia-1.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Ismaël Mejía<br> Ismaël Mejía is a Senior Cloud Advocate at Microsoft working on the Azure Data team. He has more than a decade of experience architecting systems for startups and financial companies. He has been focused on distributed data and data engineering, he is a contributor to Apache Beam, Apache Avro and many other open-source projects. He is also a member of the Apache Software Foundation (ASF).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="DE005"><strong>Demystifying Apache Airflow: Separating Facts from Fiction</strong><br> Apache Airflow is a popular workflow platform, but it often faces critiques that may not paint the whole picture. In this talk, we will unpack the critiques of Apache Airflow and provide a balanced analysis. We will highlight the areas where these critiques correctly point out Airflow’s weaknesses, debunk common myths, and showcase where competitors like Dagster and Prefect are excelling.<br>By understanding the pros and cons of Apache Airflow, attendees will be better equipped to make informed decisions about whether Airflow is the right choice for their use cases. This talk will provide a comprehensive and objective assessment of Apache Airflow and its place in the workflow management ecosystem.<br>Notes:<br>1. What Critics Get Right About Airflow’s Weaknesses<br>2. Debunking Myths and Misconceptions About Airflow<br>3. Competitor Analysis<br>4. Real-World Use Cases: When Airflow Shines<br>5. Making Informed Decisions: Choosing the Right Workflow Platform <br><br> <strong>Speaker:</strong> Shubham Mehta<br> Shubham is a skilled product manager with a diverse background in delivering successful products across various industries. As a Senior Product Manager at AWS, he oversees the roadmap and prioritization of Airflow features in Amazon Managed Workflows for Apache Airflow (MWAA) and leads the open-source contributions to enhance product functionality.<br>Prior to joining AWS, Shubham held multiple roles at Skillz and Samsung Electronics, where he was responsible for devising data strategy for user acquisition, and launching innovative products like Samsung Pay and Bixby. He is an International Physics Olympiad Gold Medalist and holds a Bachelor of Technology in Computer Science from the Indian Institute of Technology, Bombay.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="DE006"><strong>Inference at Scale with Apache Beam</strong><br> Apache Beam is an open source tool for building distributed scalable data pipelines. This talk will explore how Beam can be used to perform common machine learning tasks, with a heavy focus on running inference at scale. The talk will include a demo component showing how Beam can be used to deploy and update models efficiently on both CPUs and GPUs for inference workloads.<br>An attendee can expect to leave this talk with a high level understanding of Beam, the challenges of deploying models at scale, and the ability to use Beam to easily parallelize their inference workloads. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/inference-at-scale-with-apache-beam-community-over-code-danny-mccormick.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Danny McCormick<br> Danny is a committer on the Beam project and a senior software engineer at Google in Durham, NC where he gets to spend most of his time working on Beam. Previously, Danny worked at GitHub where he helped launch GitHub Actions and developed his love for open source communities.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Frameworks Track</h3> <p><strong>Track Chair:</strong> Ryan Skraba</p> <p id="FK001"><strong>Javax to Jakarta tales from the Crypt</strong><br> Announced almost six years ago by Oracle, the Javax to Jakarta migration has created a logjam down in the projects. Many of us have been stuck on old versions of the JVM and containers until all of our software providers release using Jakarta. This talk will provide an overview of the issues involved in the migration along with a case study of the Apache Fortress efforts in getting to a Jakarta compatible release. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/javax-to-jakarta-tales-from-the-crypt-v2-shawn-mckinney.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Shawn McKinney<br> Software architect, PMC Apache Directory Project<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK002"><strong>Integrate anything with Camel: A Beginner’s Guide</strong><br> Apache Camel is an incredible integration framework. Sometimes called "the Swiss knife of integration," it allows you to connect various pieces of a heterogeneous IT infrastructure more simply than you can imagine! The presenter has used it for years to integrate large business systems with other technologies including SMS, REST, Kafka, AI, and much more. <br>In this talk, we will explore the key concepts behind defining integration routes and the use of Enterprise Integration Patterns (EIPs). You will leave with a working understanding of Apache Camel and the ability to create basic integration tasks with ease! <br><br> <strong>Speaker:</strong> Jesse Gorzinski<br> Jesse Gorzinski is a longtime enthusiast of open source software (OSS). Currently, he is a Senior Business Architect at IBM, where he specializes in the the application of OSS in large-scale business computing. Jesse drives companies to success by leveraging the benefits of both legacy systems and cutting-edge technologies in harmony. He has worked with numerous Fortune 500 companies and also has applied experience in the finance/mortgage industry, where he specialized in data backup/recovery, process optimization, and information integrity. He has a Bachelor’s degree in Computer Science as well as a Master of Business Administration degree.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK003"><strong>WebAssembly plugin for Apache Traffic Server</strong><br> In this talk we will describe the recently open-sourced WebAssembly (Wasm) plugin for Apache Traffic Server (ATS). This plugin allows WebAssembly modules following the "proxy-wasm" specification to be run on ATS. <br>We will begin by first talking about the background and history of plugins and programmability of ATS. We will describe the short comings of the current offerings and then introduce the Wasm plugin as a solution for them. We will then talk about the "proxy-wasm" specification, which describes the support of WebAssembly modules for proxy server software. This has already been implemented by a few open source proxy server, such as Envoy, Nginx and MOSN. And it is now coming to ATS through this plugin. <br>Next we will go over the structure and implementation of the Wasm plugin. We will talk about the different WebAssembly runtimes that we support, such as WAMR and WasmEdge. And we will then do some demo on how to write code for the plugin in different programming languages and compile them into Wasm modules. <br>We will conclude the talk by going through some missing features, limitations and future enhancements for the plugin. We will also talk about some interesting use cases that we plan to support with this plugin. We will also take a look at the bigger picture and discuss the use of WebAssembly for building plugin framework or to extend functionality for software system. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_framework_wasmforats-shu-kit-chan.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Shu Kit Chan<br> Kit is currently a software architect working in Yahoo. His team is tasked to leverage Apache Traffic Server to provide innovative, fast and safe solutions to delivery web contents to users. He has been a long time contributor to the Apache Traffic Server project and was responsible with a number of ATS plugins such as ESI (edge side include), Lua and WebAssembly.<br>Kit is also a volunteer at the open source program office in Yahoo and has been providing some help in monitoring the usage and contribution of open source software as well as advising on the governance of these processes.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK004"><strong>Compatibility witchcraft in distributed systems</strong><br> Compatibility is an ever required property of a system, however it is never easy to achieve. Sometimes it requires magic, but at least a communication scheme that is designed with compatibility in mind from the get go.<br>There are multiple levels where we can discuss compatibility, but this talk focuses on protocol level compatibility. With the main topic of client to service, and service to service communication protocols in the Hadoop ecosystem. Using examples of what we do within the Apache Ozone project, the presentation attempts to describe an easy to use framework. It might become a separate add-on, or an inspiration for other projects aiming to standardize how compatibility is handled in their respective codebase.<br>The presentation discusses the core concepts and the main idea of how the compatibility issues can be separated from the core business logic. To then take a sneak peak into the nasty details of pre-requisites, and the adoption procedure of the system showcasing our current state and future plans. <br><br> <strong>Speaker:</strong> Istvan Fajth<br> Started his carrier as a web developer in a small garage company in Budapest Hungary to join one of the leader Chemiformatics companies worldwide and start his journey in the world of Java.<br>Nowadays after a detour to customer support at Cloudera he is working mainly on the Apache Ozone and HDFS projects in the last 4-5 years with a strong troubleshooting background.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK005"><strong>Forget about that certificate</strong><br> Security, the most basic demand we all have troubles with. Big outages are often caused by small things, we all know or at least heard stories about the expired rootCA certificate that brought down even big cloud vendors. Looking back in history certificate expiration can hurt, it happens with big organizations having large security teams, sometimes more than once.<br>Within Apache Ozone we would like to enable a pain free working solution that ensures the operability of the distributed storage and automatically renews the PKI elements when they are approaching expiration without distracting operations.<br>In this talk I would like to give a deep dive about how Apache Ozone implements and automates the certificate maintenance required for its secure internal and external communication. How trust is being established, what measures we do or plan to do to ensure that the system is secure and remains secure without a glitch, at least without an expired certificate bringing down the system. Last but not least I would like to explore the possibility of turning this part of the system to an independent module other projects might include with well defined integration points. <br><br> <strong>Speaker:</strong> Istvan Fajth<br> Started his carrier as a web developer in a small garage company in Budapest Hungary to join one of the leader Chemiformatics companies worldwide and start his journey in the world of Java.<br>Nowadays after a detour to customer support at Cloudera he is working mainly on the Apache Ozone and HDFS projects in the last 4-5 years with a strong troubleshooting background.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK006"><strong>Reproducible Builds for the JVM and beyond</strong><br> Reproducible Builds started with Linux distributions: this provided much experience and tools when starting applying Reproducible Builds principles to Java, Maven and Maven Central.<br>Today, after 4 years of hard work, more than 1600 releases from 500 projects were proven reproducible: it works at large scale!<br>It’s time to share learnings and try to expand to other languages used at the Apache Software Foundation. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_frameworks_-reproducible-builds-for-the-jvm-and-beyond-herve-boutemy.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Hervé Boutemy<br> Maven PMC member, Attic PMC Chair<br>Trying to fill the gap between official ASF source releases and associated convenience binaries.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FK007"><strong>Apache Maven 102: Best Practices</strong><br> Know enough about Maven to get by, but not enough to thrive? Then this talk is for you. We will review the basics and then dive into the best practices for both Maven single and multi-module projects. You will also walk away with enough knowledge to troubleshoot your builds. <br><br> <strong>Speaker:</strong> Brian Demers<br> Brian Demers is a Developer at Gradle.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Fintech Track</h3> <p><strong>Track Chair:</strong> Javier Borkenztain/p> <p id="FT001"><strong>Fineract for enterprise clients</strong><br> Fineract has been having a fascinating journey. It was a simple, accessible open source SOR (System of Record) which proved itself for many small banks, credit unions or anyone involved in financial accounting. But then came a challenge. Could it do more? Can it support millions of customers and their loans?<br>The challenge had several aspects. Technical, business, personal and even cultural. This story is about how a small team lifted one project off the ground while maintaining their independence. What unforeseen problems they faced and how they conquered.<br>It started with a promise and a PoC. The goal was ambitios to achieve high performance and scalability on cloud deployment. Even if you can prove it, that’s just the beginning. Then comes execution, and the honeymoon is over. The team had to grow, in headcount and maturity. An enterprise is a complex organisation with complex requirements. The software is only part of it, so is the scheduling and the project itself. On top of that, you have to build the machinery of delivery. This becomes a real team effort. With BA, who need to grasp crazy international or US banking practices and adapt it to the needs of the community. QA that develops new reliable automations. Developers who are learning new technologies while spread around the globe. One thing they all have in common their work revolves around an open source software. And that makes it different. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/fineract_for_enterprise_customer-mihaly-dallos.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Mihaly Dallos<br> Mihaly has been working in the industry for more than twenty years. He has software development from many angles leading him to managing the overall process of transforming an idea into a pragmatic solution as project manager. His experience is built from diverse sources; including Hungarian SMEs, a Fortune500 company and several years in outsourcing. He ended up forging his own success as an entrepreneur.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT002"><strong>Embedded Banking: The role of Fintech</strong><br> Embedded banking refers to the integration of financial services and products directly into the customer’s digital experience, such as within mobile apps, e-commerce platforms, or other non-financial applications. It enables seamless and convenient access to banking services without the need to visit a traditional bank branch or switch between different applications. Fintech (financial technology) plays a crucial role in enabling and powering embedded banking solutions.<br>Fintech companies are at the forefront of innovation in the financial services industry, leveraging technology to create new and enhanced banking experiences. They often collaborate with traditional banks or operate independently to provide services that were traditionally offered exclusively by banks. The presentation examines how fintech contributes to embedded banking and how different components of Apache Software Foundation serve as the building blocks to deliver embedded banking services. <br><br> <strong>Speaker:</strong> Ademola Babalola<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT003"><strong>Cloud Native Fineract with Scalability</strong><br> Deploying a high-performing financial platform in the cloud in a heavily regulated environment can be a daunting task.<br>In this presentation we dive deep into our experience, showing the technical and regulatory hurdles we encountered with our original design from last year and how we transformed the challenges into opportunities for collaboration and growth. Since then we achieved balance between consistency and flexibility, and between self-managed and customer-managed environment properties.<br>This presentation will provide an in-depth look at how we harnessed the collective expertise and creativity of our team and our customer’s communities to manage and scale environments successfully.<br>We’ll have a look at the following specific areas:<br>1. How our could native platform design evolved to enable collaboration among various groups of developers and administrators while providing suitable guardrails for everybody to feel comfortable working in the environment.<br>2. How we leveraged the capabilities of the platform to identify and eliminate feature gaps and performance bottlenecks in the environment. By showing specific examples from leveraging Kubernetes to work on JVM tuning we’ll show how the platform enabled us to deliver results to our clients. <br>Our journey is a testament to how prioritizing the power of collaboration can lead to remarkable outcomes in coding and beyond. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_fintech_mezei-zoltan-mezei.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Zoltan Mezei<br> Zoltan is an IT generalist, currently working with open source and cloud technologies for fintech and e-commerce companies.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT004"><strong>Fineract with Advanced Batch and Event frameworks</strong><br> This presentation will provide some insight regarding the recent significant enhancements we have made to Fineract, our comprehensive software solution for managing batch jobs and business event data flow. In accordance with the Fineract roadmap, these enhancements are designed to improve the efficiency and performance of Fineract, enabling seamless integration with external processing systems.<br>Integration of Spring Batch: We have implemented a comprehensive upgrade to the batch support system in Fineract by introducing Spring Batch. This enhancement encompasses a complete overhaul of the infrastructure and job definitions, providing the following benefits:<br>Enhanced reliability and robustness of the batch processing system.<br>Streamlined management and execution of batch jobs, resulting in improved performance and efficiency.<br>Creation of Event Data Streams: We have implemented transactional, reliable event data streams in Fineract, enabling downstream systems to consume business events near real-time. This enhancement provides the following benefits:<br>Configurable business events, allowing users to define various event types based on specific requirements.<br>Seamless transmission of events to downstream systems, facilitating efficient processing and utilisation of data. Event generation is transactional, streaming has at least once guarantees.<br>Integration with AVRO schema, ensuring data consistency and compatibility with downstream systems. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_fintech_istvanmolnar-advanced-batch-events-istvan-molnar.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Istvan Molnar<br> Istvan Molnar is a founding member and Chief Technology Officer of BaasFlow. Istvan is a Financial Technology Architect from Budapest, Hungary that has decades of experience implementing banking and real-time payment solutions at scale. Istvan has led the deployment of Mifos and Fineract at a bank in Germany as well as banks in SE Asia. Building off of the experience implementing real-time payment systems for Singapore and Hungary, Istvan has lead the design and architecture of Payment Hub EE, a powerful bridge and microservices workflow orchestration tool<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT005"><strong>PRQL: A Modern Data Transformation Language Empowering Fintech Data Engineering and Analysis</strong><br> The fintech industry promises to empower people through personalised insights from their financial data. To this end, we introduce PRQL, a powerful data transformation language designed specifically for data analysts and scientists. PRQL combines the elegance of relational algebra with the usability of popular libraries like dplyr, Pandas, and LINQ, offering a functional, pipelined query paradigm with modern ergonomics and expressivity.<br>PRQL is a modern replacement of SQL, built around the organizing principle of pipelined relational queries, and facilitated by a compact set of orthogonal language constructs. These constructs enable seamless composition of complex data pipelines, streamlining data filtering, transformation, and reshaping processes. PRQL incorporates modern ergonomics like f-strings, @date literals, and a ?? coalesce operator, as well features such as functions and loop based iteration that have long been missing from SQL. <br>By seamlessly transpiling into SQL, PRQL ensures compatibility with any relational database, allowing fintech organizations to leverage their existing infrastructure. This talk highlights PRQL’s adaptability to fintech use cases, demonstrated through interactive examples.<br>PRQL is a completely open-source (Apache licensed) and volunteer-driven project and is committed to staying that way forever. Having gained over 7000 stars on GitHub in just over a year, the community response has been incredibly enthusiastic! Come and join us! <br><br> <strong>Speaker:</strong> Tobias Brandt<br> Tobias is an experienced professional in data science and data engineering with 20 years of experience in quantitative finance. Currently serving as the Head of Analytics and Customized Solutions at Argon Asset Management in Cape Town, he leads teams responsible for portfolio analytics, systems, and data.<br>With a strong background in finance and technology, Tobias has held key roles in the investment management industry. As a Portfolio Manager at Argon Asset Management, he focused on quantitative strategies within the Multi-Asset Class team and played a pivotal role in building an in-house platform for strategy research, risk monitoring, and portfolio optimization. Before that, he also worked as an Algorithmic Trading Systems Developer at AHL, part of the hedge fund group Man Group Plc in London.<br>Tobias holds degrees in Applied Mathematics and Physics and is a CFA Charter Holder. With his deep knowledge of quantitative finance, combined with his proficiency in data science and engineering, Tobias brings valuable insights to the fields of data engineering and fintech.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT006"><strong>Multiple Apache Projects Used for Bank Solution</strong><br> We will explain how a number of key technologies, including Fineract, Mifos PaymentHUB, Camunda, Kafka, and other open source components have been leveraged to create a comprehensive solution for customer onboarding, channels, standing orders, and statements in the financial sector. <br>We understand the importance of open source software and its impact on fostering innovation, collaboration, and inclusion globally. We have built a robust foundation for our solution, and we want to share our journey and the exciting possibilities it presents for open source developers. <br>Our solution goes beyond the capabilities of individual components and extends their functionality to meet the diverse needs of financial institutions and their customers. We will delve into the additional important features we have incorporated into the system, providing a overview of the enhancements we have made to the customer onboarding process, channels management, standing orders, and statement generation.<br>Join us for an engaging session that explores the limitless possibilities of Apache Fineract, Mifos PaymentHUB, and the additional features we have built upon them. Together, we can reshape the financial industry and create a more inclusive and efficient future. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_fintech_jamesdailey_opensourcebank-james-dailey.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> James Dailey <br> James is the original brains behind Mifos which then contributed and created the Fineract project. A serial entrepreneur, he is currently CEO of BaaSFlow which offers commercial open source banking solutions. James is a fintech expert in emerging markets focused on banking and payment interoperability. He is an Apache member and current PMC Chair of Fineract. <br><br> Istvan Molnar<br> Istvan Molnar is a founding member and Chief Technology Officer of BaasFlow. Istvan is a Financial Technology Architect from Budapest, Hungary that has decades of experience implementing banking and real-time payment solutions at scale. Istvan has led the deployment of Mifos and Fineract at a bank in Germany as well as banks in SE Asia. Building off of the experience implementing real-time payment systems for Singapore and Hungary, Istvan has lead the design and architecture of Payment Hub EE, a powerful bridge and microservices workflow orchestration tool<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT007"><strong>Unbundling the Core: Exploring the Boundaries of a Core Banking System</strong><br> Fineract didn’t set out to be a platform but organically became one as the ecosystem deployed it for more & more use cases. As the de-facto platform for banking & fintech, it powers end to end solutions from MIS & Core Banking for financial inclusion to loan management for fintechs small & large, to wallet management for payment providers to SaaS solutions for neobanks. <br>As the thickness of the core grows, it’s ever more important to define boundaries of what constitutes the core. There are many ways to slice & dice. Is it managing the current account? Loan management SOR? Origination & Decisioning? KYC & Onboarding? CRM? Payment Orchestration? <br>It’s a fundamental question for those using the software, building on it, and the community cultivating upstream contribution.<br>We’ll lay out the playing field, establish the boundaries, and propose frameworks & playbooks to better collaborate on top of an open banking core:<br>* Define boundaries of the core & ancillary systems from a theoretical level plus practical examples blending together OSS & proprietary solutions. <br>* Establish the landscape of the core, modules within it, and solutions built around it.<br>* Discuss the design for a plugin-based architecture facilitating an ecosystem & marketplace of modules & add-ons integrating with the core. <br>* Properly define commons vs competitive space to catalyze a virtuous cycle enabling upstream contribution with clearer incentives to contribute and opportunities to commercialize. <br><br> <strong>Speaker:</strong> Edward Cable<br> As the President/CEO of the Mifos Initiative and founding member of the Apache Fineract PMC, Edward Cable is a leader in technology-enabled financial inclusion and open service financial services innovation. Since his time at the Wharton School at the University of Pennsylvania, Edward has understood and proven the catalytic power of communities – first through the cooperative movement, then through financial inclusion, and now through open source for financial services. Edward joined the Mifos project in 2007, incubating the open source community as part of the initial team guiding the project within the Grameen Technology Center. He led the spinout of the Mifos Initiative in 2011, overseeing the evolution of both the platform as well as the open source community as a transformative force for microfinance, financial inclusion and now digital financial services. Edward’s strategic vision and foresight has enabled the community to keep pace with rapid fintech innovation and nurtured the growth of a vibrant ecosystem of solution providers reaching nearly 20 million clients through solutions built on top of the open-source Mifos and Fineract APIs. When he’s not focused on cultivating innovative fintech solutions, Edward tends to his menagerie of animals including goats, dogs, rabbits, and chickens in the majestic Redwoods. Edward has spoken at numerous open source and fintech events including a keynote and LF Open Source Summit in Europe, and workshops/talks at Fintech DevCon hosted by Moov and OSCON.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT008"><strong>Open Banking Core for the Mexican Government</strong><br> The fintech industry in Mexico is growing rapidly, with several startups and established companies offering innovative financial services due to the increasing use of mobile devices, and government efforts to promote financial inclusion.<br>In this talk, I will discuss the role that Mexico’s National Research and Innovation Center for ICT (INFOTEC) is playing in the development of Open Technology as Digital Public Good. I will also share insights from our own experience in implementing our Banking CORE (based on MIFOS/Fineract) within government-owned financial institutions in Mexico. <br>These institutions play an important role in promoting financial inclusion and supporting economic development.<br>INFOTEC is a key contributor to Mexico’s Digital transformation and capacity building through the development of specialized talent and R&D. The Banking CORE is an open-source software platform that provides a range of financial services, including savings, loans, and payments. It is designed to be scalable and flexible, making it suitable for use by a wide range of financial institutions. In this talk we will discuss the implementation, architecture and present a demo of the technical part.<br>In conclusion, we believe that open technology has the potential to play a significant role in promoting financial and digital inclusion in Mexico. Our Banking CORE is an example of how open technology can be used to improve the efficiency and accessibility without a multimillion-dollar price tag. <br><br> <strong>Speakers:</strong> Federico C González Waite<br> Federico González Waite is a true hands-on innovator and cyber enthusiast with a keen eye for the use of technology as a tool for social inclusion and development. He has extensive experience in a range of roles within the Mexican and New Zealand governments, the private sector, and international organizations.<br>Currently, Federico is the Executive Director of Mexico’s National Research and Innovation Center for ICT (INFOTEC). In this role, he has been a promoter of the use of open source technology and a key player in developing Mexico’s technological capacities and digital public infrastructure.<br>Prior to this role, he served as Technology Advisor to the General Director of the Federal Electricity Commission, in the Internet for All Project. He also served as Chief Technology and Innovation Officer at the Ministry of Foreign Affairs, where he laid the foundations for the New Mexican Electronic Passport. In the Ministry of Agriculture, he served as Deputy CTO and as Director of Information Security and Strategic Planning. In this role, he led the implementation of the National Beneficiary Registry in Open Source and Cloud Technology.<br>Federico holds a Master’s degree in Public Policy from Tel Aviv University, Israel, and a Bachelor’s degree in International Business and Marketing from the Auckland University of Technology in New Zealand. In 2022, he completed an Executive Certification in Public Policy at Harvard University Kennedy School. In 2021, he was awarded in the Top 100 CIO Mexico Edition. He has served on the national Cybersecurity Council, the National Digital Strategy Committee, and the Digital Nations Sustainable Govt IT Workgroup. <br><br> James Dailey <br> James is the original brains behind Mifos which then contributed and created the Fineract project. A serial entrepreneur, he is currently CEO of BaaSFlow which offers commercial open source banking solutions. James is a fintech expert in emerging markets focused on banking and payment interoperability. He is an Apache member and current PMC Chair of Fineract. <br><br> Victor Manuel Romero Rodriguez<br> Hailing from Mexico City, Victor Romero now has over 20 years of experience in the area of Information Technology applied to Financial Services after completing his Bachelor of Computer Science at the National Polytechnic Institute,<br>He is the Chief Architect for Financial Solution at Infotec the Mexican Federal Institution that creates digital solutions based on the Mifos and Fineract Ecosystem, he has successfully overcome challenges related to aligning Open Source Technologies to the regulatory rules for bringing best in class software for Federal Financial Institutions to strike a balance between innovation and compliance.<br>During this journey, Victor has implemented APIs that enable customer-facing flows and improve the user experience while handling securely the sensitive data of the financial transactions.<br>Having used Mifos X and Mifos Payment Hub Enterprise Edition as two of the pillars to solve the needs of banking and fintech customers, Victor is adept at crafting innovative solutions using open source core banking APIs.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT009"><strong>Modularizing Fineract: The journey so far</strong><br> Apache Fineract is a powerful open-source platform for financial inclusion that has been widely adopted by microfinance institutions, digital credit providers, fintechs and e-commerce companies worldwide. Fineract 1.x has had again an exceptional year of contributions on top of the already extensive feature set. As the code base continues to grow, the need to transition from a monolithic code base to a modular structure becomes increasingly evident.<br>This session will highlight real world use cases and practices the community and third party integrators applied so far to achieve higher modularity and extensibility while keeping the code base as backwards compatible as possible. This session will cover the following topics:<br>– commonly shared code or "core" module<br>– "custom" modules<br>– replacement of existing business logic<br>– modular security (authentication and authorization) <br><br> <strong>Speaker:</strong> Aleksandar Vidakovic<br> Aleks is an independent software developer and consultant who has been working for more than two decades in industries like security, publishing, automotive and telecommunications.<br>He’s a PMC member and the release manager for Apache Fineract. He’s also a Member of the Apache Software Foundation.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT010"><strong>Empowering Global Fintech Success: Implementing Fineract Across Borders</strong><br> In this talk, I will share the amazing journey in implementing Fineract, across the globe for diverse fintech clients, including banks, all sized fintechs, and NGOs. This presentation will explore the challenges faced, innovative solutions developed, and the transformative impact Fineract has to achieve their goals.<br>Through real-world case studies, I will highlight the key lessons learned, best practices, and strategies employed to ensure seamless adoption and successful integration of Fineract. <br>From overcoming regulatory hurdles to adapting to diverse financial ecosystems, navigating cultural nuances and addressing scalability concerns, we will dive into the intricate details of global implementation projects.<br>Attendees will gain valuable insights into the technical intricacies of deploying Fineract, customizing it to meet specific client requirements, and leveraging its advanced capabilities to push the boundaries of innovation.<br>By the end of this session, participants should be inspired by real-life success stories, armed with practical knowledge and strategies to overcome implementation challenges when deploying Fineract on a global scale. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_fintech_cecilia-menso-cecilia-menso.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Cecilia Menso<br> Delivery lead, Account and Project Manager with 20 years of experience in the IT industry, I’ve worked for clients in the Manufacturing, Telecommunications and now specifically in the Financial sector across the globe.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT011"><strong>Business date & Close of business day concept in Fineract</strong><br> One of the recent significant enhancements of Fineract: Logical Date Handling, also known as "Business Date," and the Close of Business Day concept. These advancements -in accordance with the Fineract roadmap – bring Fineract closer to becoming an enterprise software solution that meets the specific needs of banks and financial institutions.<br>1. Logical Date Handling (Business Date): We have integrated logical date handling into Fineract, enabling the software to support logical dates. The business date feature allows users to handle date-related operations in aligning with business rules and requirements. This functionality enables to:<br>a. Accurately track and manage transactional activities based on business-specific calendar. <br>b. Generate reports, statements, and financial data with the business date perspective. <br>c. Maintain consistency and reliability in date-related calculations, avoiding errors and discrepancies.<br>2. Close of Business Day Concept: We have introduced the Close of Business Day concept to facilitate streamlined end-of-day operations for banks and financial institutions. This concept allows users to define and execute specific actions at the close of business each day like<br>a. Systematic execution of end-of-day processes, ensuring data integrity and reliability. <br>b. Enhanced efficiency in the overall day-end workflow, resulting in time savings and improved productivity.<br>This presentation will provide some insight about the functionalities and some use cases. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tues_fintech_adamsaghy_cob-adam-saghy.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Adam Saghy<br> Seasoned Java developer with 10+ years of experience from Budapest, Hungary and an active Fineract contributor in the last couple years.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="FT012"><strong>Enhancing Apache Fineract capabilities to support wallet accounts</strong><br> Adapting existing infrastructures to novel use cases is a critical aspect of fintech innovation. In this presentation, we will explore our use of Apache Fineract’s Savings account as a wallet for customers, an approach that combines Fineract’s robust transaction handling capabilities with a custom-created Data Table for transaction-related extra data storage.<br>We will detail the process of configuring advanced accounting rules and setting up special payment types. The audience will gain insights into the challenges of tailoring Fineract to specific requirements, with a focus on modeling activities using the withdraw, deposit, holdAmount, and releaseAmount functions, while fully leveraging the batchAPI feature.<br>Our implementation includes enhanced features for filtering and sorting transaction entities on the Savings Account, significantly improving transaction management. We also integrated the Fineract API with Payment Hub, a key component for managing transactions and interfacing with settlement systems that handle money movements between banks.<br>Targeted at developers and individuals interested in Fineract development, this presentation will provide a practical exploration of real-world application of Fineract’s Savings Account as a wallet, sparking discussion on the potential of this platform. <br><br> <strong>Speaker:</strong> Péter Sánta<br> I’ve been working as software engineer since about 2010. I’ve been working on projects about loan origination, loan account management with Fineract, savings account management with Fineract, other banking projects and non-related other subjects. My roles were developer, technical analyst, program manager and lead of analyst team.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Geospatial Track</h3> <p><strong>Track Chairs:</strong> Martin Desruisseaux, J. Lieberman, Marco Neumann, George Percivall, Jia Yu</p> <p id="GEO001"><strong>Geo-Unleashed: How Apache Sedona is Revolutionizing Geospatial Data Analysis</strong><br> Apache Sedona is a cluster computing system designed to revolutionize the way we process large-scale spatial data. By extending the capabilities of existing systems such as Apache Flink, Sedona provides a comprehensive set of out-of-the-box distributed Spatial Datasets and Spatial SQL that enable efficient loading, processing, and analysis of massive amounts of spatial data across multiple machines. With its ability to handle big data at scale, Sedona has the potential to transform industries.<br>In this presentation, we will delve into the key features of Apache Sedona and showcase its powerful capabilities in handling large-scale spatial data. We will also showcase examples of how Sedona has been used in various industries such as transportation, logistics, and geolocation-based services, to gain insights and improve decision-making. <br><br> <strong>Speaker:</strong> Jia Yu<br> Jia Yu is a co-founder of Wherobots Inc., a venture-backed company for helping businesses to drive insights from spatiotemporal data, and leads the engineering team at Wherobots. He is currently on leave of absence from his role as a Tenure-Track Assistant Professor of Computer Science at Washington State University. He obtained his Ph.D. in Computer Science from Arizona State University in Summer 2020 under the guidance of Mohamed Sarwat. His research focuses on large-scale database systems and geospatial data management. In particular, he worked on distributed geospatial data management systems, database indexing, and geospatial data visualization. Jia’s research outcomes have appeared in the most prestigious database / GIS conferences and journals, including SIGMOD, VLDB, ICDE, SIGSPATIAL and VLDB Journal. He is the main contributor of several open-sourced research projects such as Apache Sedona, a cluster computing framework for processing big spatial data, which receives 800,000 downloads per month and has users / contributors from major companies.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GEO002"><strong>Efficient handling of geometry data in Apache Impala with Parquet files</strong><br> Apache Impala, a distributed massively parallel analytic query engine written in C++ and Java, has recently been extended with experimental geospatial support. Although this project is still in its early stages, we have already gained useful insights into how we can achieve significant performance improvements in geometry-related queries.<br>Even without purpose-built geospatial indices, the existing features of Apache Parquet (one of the most widely used open source column-oriented file formats in Big Data) and partitioning allow the vast majority of the data to be discarded in queries that filter for a bounding rectangle.<br>An advantage of relying on existing file and table format features (such as page indices, dictionary encoding etc.) is that it is independent of database engines and does not require them to be aware of geospatial concepts. Therefore also Apache Hive, Spark etc. could benefit from this approach.<br>Our method is based on a two-level division of space into cells. The coarser division is used for table partitioning and the more fine-grained one for sorting the data within a partition. This can work with Hive Metastore partitions or the Apache Iceberg table format – the latter further enhances the efficiency and convenience of these optimisations. This scheme seems to be suitably flexible for unevenly distributed real-world data and it provides enough filtering capability without causing issues like inefficient compression or the small file problem. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_geospatial_ringhofer-becker-daniel-becker.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Csaba Ringhofer<br> Csaba Ringhofer has been working on Apache Impala since 2017 at Cloudera. He is a Member of the Apache Impala PMC. He studied at the Budapest University of Technology and Economics. Daniel Becker<br> Daniel Becker started working on Apache Impala in 2019, first as an intern and later as a full time employee of Cloudera. He is a member of the Apache Impala PMC. He has a degree from Pázmány Péter Catholic University.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GEO003"><strong>Updates and vision for GeoParquet</strong><br> Geoparquret, a version of the Parquet file format that supports geometries, has grown in adoption and integration over the past year. In this session we will share with you how Geoparquet is being used, where it is being integrated, and the future vision for the project. From integrations with GDAL, PostGIS, DuckDB, and more, we will show how this format is already scaling open source spatial analytics and providing a new way to process and analyze large geospatial data. <br><br> <strong>Speaker:</strong> Matthew Forrest<br> Matt is a technology leader at CARTO working on geospatial analytics and advocating for open and modern geospatial technology to be used by GIS practitioners. Matt has worked in geospatial analytics for his entire career and enjoys anything to do with spatial SQL, scalable data systems, and enabling users to make use of the great open technology in our ecosystem.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GEO004"><strong>Geospatial in the Apache Dataverse with GeoArrow</strong><br> Enterprise data systems increasingly expect geospatial support in the tools they leverage in their data pipelines. Apache Arrow and Apache Parquet are central to many enterprise data pipelines; however, there are few if any conventions for storing and transporting geospatial data in these standards. Similarly, geospatial tools are increasingly expected to support bigger-than memory data with few built-in tools to support this capability. In this presentation we introduce GeoArrow and GeoParquet as extensions to the Apache Arrow and Apache Parquet standards such that geospatial tools can leverage these ecosystems and Apache Arrow/Apache-based pipelines can offer out-of-the-box geospatial support. Some examples include:<br>– Leveraging the performant and compact storage of Apache Parquet as a vector data format in geospatial tools<br>– Storing and querying warehouse-scale geospatial data in Apache Parquet-based table formats (e.g., Apache Iceberg)<br>– Accelerated between-process geospatial data exchange using Apache Arrow IPC message format and Apache Arrow Flight<br>– Zero-copy in-process geospatial data transport using the Apache Arrow C Data Interface (e.g., GDAL)<br>– Shared libraries for geospatial data type representation and computation for query engines that support columnar data formats (e.g., Velox, DuckDB, Acero)<br>Collectively, we hope to demonstrate the ways in which tools are able to benefit from the GeoArrow standard today and discuss opportunities for future development. <br><br> <strong>Speakers:</strong> Dewey Dunnington<br> Dewey Dunnington (Ph.D., P.Geo.) is an environmental researcher, programmer, and educator based in Nova Scotia, Canada. Dewey’s environmental research investigates the mechanisms that control toxic metals in lakes, whereas his programming has led him to develop mobile applications, web apps, and R packages, including a summer internship with RStudio working on the popular R package ggplot2. He has developed and taught many courses on R programming, Python programming, and GIS, and is a RStudio-certified tidyverse instructor. He recently completed his Ph.D. in the Centre for Water Resources Studies at Dalhousie University and is currently a Senior R Developer at Voltron Data working on all things Apache Arrow + R. <br><br> Joris Van den Bossche<br> Joris Van den Bossche is an open source Python enthusiast. Joris is a core contributor to Pandas and is currently working at Voltron Data to advance Arrow-based data tools in Python. I am also a freelance teacher and developer.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GEO005"><strong>Geospatial in Space</strong><br> The Open Geospatial Consortium (OGC) conjointly with the International Organization for Standardization (ISO) define international standards that make interoperability possible between different geospatial applications. However, currently most OGC standards focus on data on planet Earth. Last year, OGC evaluated how those standards could be extended for describing locations within the Solar System, and implementation experiments are underway. In this talk we will show how to describe the coordinate reference system (CRS) for an extra-terrestrial planet or for a spacecraft using OGC standards, what information is missing, and the extensions explored by OGC Testbed-18 engineering report. Then we will show how Apache SIS (a Java library) can handle those CRS definitions. A visual demo developed with another framework (GNOSIS SDK) will be shown. This will demonstrate interoperability on two aspects:<br>1) The use of standard formats (Geographic Markup Language and Moving Features encoding) for describing a chain of coordinate transformations.<br>2) The use of standard Java interfaces (GeoAPI 3.0.2) for allowing an application (the visual demo) to access the services of another library (Apache SIS) in an implementation-independent way.<br>Details will cover aspects such as identifying the celestial body, defining axes that are fixed relative to stars, using trajectory data, and how to do those operations when the effects of Einstein’s relativity become significant. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_geospatial_in_space-martin-desruisseaux.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Martin Desruisseaux<br> Martin holds a Ph.D in oceanography, but has continuously focused on developing tools for analysis work. Programming experience was C/C++ before switching to Java in 1997. He has been developing geospatial libraries for more than 25 years, as a contributor to Apache SIS since 2013. He follows Open Geospatial Consortium (OGC) meetings since 2002. Martin works in a small IT services company (Geomatys) specialized in development of geoportals, which uses Apache SIS as a foundation.<br> Jérôme Jacovella-St-Louis<br> Jérôme is founder and CTO of Ecere, designed the eC programming language, initiated the development of the FOSS Ecere Cross-Platform SDK (including a 2D/3D graphics engine, a cross-platform GUI toolkit and an IDE) and leads the development of GNOSIS geospatial software solutions. Jérôme is a co-chair of multiple OGC Standards Working Group and co-editor of several OGC standards such as OGC Styles & Symbology and OGC API – Tiles.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GEO006"><strong>Machine Learning over Streaming Spatiotemporal Data with Drifts, using Apache Kafka, Cadence and TensorFlow.</strong><br> This talk introduces a realistic real-time geospatial drone delivery demonstration application using two complementary open-source technologies working at different timescales – Uber’s Cadence (for long-running/scheduled workflows) and Apache Kafka (for fast streaming data). With up to 2,000 (simulated) drones and deliveries in progress at once this application generates a vast flow of spatiotemporal data. The second part of the talk uses this platform and data to explore Machine Learning over streaming data from Kafka. We will explore some of the challenges and solutions of incremental Machine Learning over fast-moving data, particularly when the data is spatiotemporal with concept drifts, and reveal how well a selection of open-source Kafka Machine Learning frameworks perform and scale at this demanding task. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_geospatial_brebner-paul-brebner.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Paul Brebner<br> Paul is an Open Source Technology Evangelist at Instaclustr (now part of Spot by NetApp). For the past six years, he has been learning new scalable Big Data technologies, building realistic demonstration applications, and blogging and talking about a growing list of open-source technologies including Apache Cassandra, Apache Spark, Apache Kafka, Apache ZooKeeper, Redis, OpenSearch, PostgreSQL, Cadence, and many more.<br>Since learning to program on a VAX 11/780, Paul has extensive R&D, teaching, and consulting experience in distributed systems, technology innovation, software architecture and engineering, performance engineering, grid and cloud computing, and data analytics and machine learning.<br>Paul has also worked at Waikato University (New Zealand), University of New South Wales (UNSW, Sydney), Commonwealth Scientific and Industrial Research Organisation (CSIRO, Australia), University College London (UCL, UK), National ICT Australia (NICTA), Australian National University (ANU), and several tech start-ups (including as a Founder/CTO). Paul has an MSc (1st Class Hons, Waikato) in Machine Learning and a BSc (Computer Science and Philosophy, Waikato).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Groovy Track</h3> <p><strong>Track Chair:</strong> Paul King</p> <p id="GR001"><strong>Groovy and Groovy Ecosystem Update</strong><br> An update on the latest changes in production Groovy versions and what’s coming in Groovy 5. Including the latest stats for the project and what’s happening in the Groovy ecosystem in projects like Grails, Micronaut and Spock. <br><br> <strong>Speaker:</strong> Paul King<br> Dr Paul King has been contributing to open source projects for over 30 years and is an active committer on numerous projects including Groovy, GPars, and many other projects. Paul is VP Apache Groovy, speaks at international conferences, publishes in software magazines and journals, and is a co-author of Manning’s best-seller: Groovy in Action, 2nd Edition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR002"><strong>Why use Groovy in 2023?</strong><br> Groovy was originally developed as a "replacement for Java" to solve some of the pain points being experienced by Java developers and because Java was evolving too slowly. In 2023, Java is no longer evolving slowly and has now also solved some of the pain points Groovy tackled long ago. In recent years, additional alternative languages have also emerged on the JVM. So why use Groovy in 2023?<br>This talk looks at the strong points of the Groovy language; the places where it still offers great value over other languages. It is an example rich journey covering a multitude of topics. <br><br> <strong>Speaker:</strong> Paul King<br> Dr Paul King has been contributing to open source projects for over 30 years and is an active committer on numerous projects including Groovy, GPars, and many other projects. Paul is VP Apache Groovy, speaks at international conferences, publishes in software magazines and journals, and is a co-author of Manning’s best-seller: Groovy in Action, 2nd Edition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR003"><strong>Groovy for Java Developers</strong><br> Groovy is a powerful, agile and dynamic language for the Java platform. Groovy has Java like syntax along with many features inspired by languages such as Python, Ruby and Smalltalk. The language has been embraced by popular frameworks including the Grails framework, the Micronaut framework, Spring Boot and many others. <br>This session covers a lot of ground to quickly get Java developers started with Groovy including many interactive examples to highlight the powerful language features that make Groovy compelling. <br>Topics include: <br>– Everything Is An Object <br>– Groovy Beans <br>– Groovy Strings <br>– Closures <br>– Collections <br>– Groovy Builders <br>– Java Integration <br>– Build Tools & Frameworks <br><br> <strong>Speaker:</strong> Jeff Scott Brown <br> Jeff, Unity Foundation, has been committed to open source and open solutions for his entire career. He has contributed to numerous widely adopted OSS frameworks and enjoys engaging with the community. At the Unity Foundation, he and the team are dedicated to bringing technology solutions to bear on issues related to equality and creating solutions which provide equitable access to information regardless of socioeconomic status. Jeff is passionate about advocating for Inclusion, Diversity, Equity, and Action (IDEA).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR004"><strong>Testing your Java with Groovy, Spock, JUnit5, Jacoco, Jqwik and Pitest</strong><br> This talk examines a common scenario seen in the Groovy community which is projects which use Java for their production code and Groovy for their tests. Tests will be written using Groovy and utilise various testing frameworks including Spock, JUnit5, Jacoco, Jqwik and Pitest. <br><br> <strong>Speaker:</strong> Paul King<br> Dr Paul King has been contributing to open source projects for over 30 years and is an active committer on numerous projects including Groovy, GPars, and many other projects. Paul is VP Apache Groovy, speaks at international conferences, publishes in software magazines and journals, and is a co-author of Manning’s best-seller: Groovy in Action, 2nd Edition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR005"><strong>It works on my cluster. Deploying a groovy kubernetes application to Okteto</strong><br> Do you have an idea and want to go to production with it?<br>Do you want to deploy your first groovy application in kubernetes but you’re afraid so many concepts ?<br>In this talk we’ll deploy from scratch a Groovy Micronaut application accesible in Internet thanks to Okteto platform without knowledges of kubernetes only with a simple docker compose file.<br>We’ll deploy an application with postgres persistence and if we have time we’ll learn also how we can debug remotly. <br>This is a live coding show talk so if something can fails surely it will does (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_groovy_it_works_on_my_cluster-jorge.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jorge Aguilera<br> Software developer in Groovy and Java for a long time in different environments, as cash machines, bioinformatics or stocks applications <br>As an passionate of Open Source I like to share my knowledge giving talks, mainly in the Madrid Groovy User Group, and publishing tech post at my blog.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR006"><strong>Let Groovy operate your k8s cluster</strong><br> Did you know you can create an operator for your cluster using GroovyLang? seriously, you can use it.<br>As many of yours, I’m a software developer that deploy into the cluster my applications, link the services, configure and so but I always thought that create an operator to automatize my tasks was reserved for Go people.<br>But once I realized you can use Groovy I created SwaggerOperator, a kubernetes operator in Groovy to maintain the OpenApi definitions of my services.<br>In this talk I’ll show to you step by step how to create and deploy an operator using a real use case from scratch … all of them using our preference language, Groovy (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_groovy_let_groovy_operate_your_cluster-jorge.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jorge Aguilera<br> Software developer in Groovy and Java for a long time in different environments, as cash machines, bioinformatics or stocks applications <br>As an passionate of Open Source I like to share my knowledge giving talks, mainly in the Madrid Groovy User Group, and publishing tech post at my blog.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR007"><strong>Whiskey Clustering with Apache Groovy and Apache Ignite</strong><br> This talk looks at using Apache Groovy with Apache Ignite’s distributed K-Means clustering algorithm to cluster Whiskey profiles. Ignite helps you scale your machine learning applications. Groovy simplifies your data science code. <br><br> <strong>Speaker:</strong> Paul King<br> Dr Paul King has been contributing to open source projects for over 30 years and is an active committer on numerous projects including Groovy, GPars, and many other projects. Paul is VP Apache Groovy, speaks at international conferences, publishes in software magazines and journals, and is a co-author of Manning’s best-seller: Groovy in Action, 2nd Edition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR008"><strong>Scalable Distributed Computing with Groovy Using Apache Ignite</strong><br> Groovy’s concise and expressive syntax and its powerful language features make it an attractive choice for prototyping and exploring. <br>Apache Ignite’s compute grid allows for distributed computing and in-memory data to cater to high performance requirements. Distributed tasks take the form of Java classes. Java has many advantages but is also static, quite verbose syntactically, and needs explicit compilation. <br>Groovy’s seamless integration with the Java ecosystem makes it the perfect companion to Ignite, allowing developers to scale computations to multiple nodes automatically, with easy to write, dynamic code without even needing explicit compilation. <br>In this talk, we will explain the concepts of the Ignite compute grid and demonstrate this combination of Groovy and Ignite using the light-hearted example of solving oddly shaped Rubik’s cubes with brute force algorithms. We will show performance comparisons with single processor solutions and the incremental gains of adding CPUs / nodes to the compute grid. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_groovy_jeremymeyer-jeremy-meyer.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jeremy Meyer<br> Jeremy Meyer heads up the Professional Services and Education team at GridGain Systems, the creators and sponsors of the Apache Ignite project.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR009"><strong>GORM Data Services</strong><br> GORM is the powerful ORM tool that has been developed as part of the Grails framework. GORM fully leverages the capabilities of Groovy to provide a rich set of capabilities which greatly simplify interacting with databases from any JVM application, not just Groovy and Grails applications as recent versions of GORM are very easy to use independent of the Grails framework.<br>This session will introduce GORM and quickly get into details which highlight what has made GORM so successful, including an exploration of GORM Data Services which allow most of your data access layer to be written as interfaces with no classes necessary as GORM is able to generate most of the database interaction bytecode at compile time. I will also introduce GORM’s flexibility with respect to communication with fundamentally different types of datastores including relational databases, graph databases, document stores and more. <br><br> <strong>Speaker:</strong> Jeff Scott Brown <br> Jeff, Unity Foundation, has been committed to open source and open solutions for his entire career. He has contributed to numerous widely adopted OSS frameworks and enjoys engaging with the community. At the Unity Foundation, he and the team are dedicated to bringing technology solutions to bear on issues related to equality and creating solutions which provide equitable access to information regardless of socioeconomic status. Jeff is passionate about advocating for Inclusion, Diversity, Equity, and Action (IDEA).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="GR010"><strong>Open Source Software and You</strong><br> Open Source Software (OSS) has been part of our industry for decades. It is so ubiquitous that in certain domains it is practically impossible to develop systems without using OSS. You probably use OSS every day and often may not even think about it. Taking a more active role in OSS can help you be more productive and can help others do the same. This involvement doesn’t have to mean quitting your day job and spending most of your time contributing OSS software to the community (though you can, and it can be an awesome experience). Your involvement can be minimal or can be the primary focus of your development efforts. Many developers are surprised to learn the ways they can contribute to making OSS better and not all of them demand a lot of time or effort.<br>In this session I will discuss having a career dedicated to developing, managing, evangelizing, and supporting OSS projects. We will address and clarify some misconceptions that folks often have about OSS and will discuss ways that all of us can help OSS continue to be successful and a more impactful part of our industry. <br><br> <strong>Speaker:</strong> Jeff Scott Brown <br> Jeff, Unity Foundation, has been committed to open source and open solutions for his entire career. He has contributed to numerous widely adopted OSS frameworks and enjoys engaging with the community. At the Unity Foundation, he and the team are dedicated to bringing technology solutions to bear on issues related to equality and creating solutions which provide equitable access to information regardless of socioeconomic status. Jeff is passionate about advocating for Inclusion, Diversity, Equity, and Action (IDEA).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Highlights Track</h3> <p id="HI001"><strong>Leveraging Large Language Models for SQL generation in Hue [Cloudera Sponsor Session]</strong><br> The rapid advancements in large language models have opened new possibilities in various natural language processing tasks including SQL generation. In this case study, we delve into the technical intricacies of seamlessly integrating LLMs into Hue, the SQL editor of choice at Cloudera. This integration unlocks enhanced functionalities and empowers users with a more intuitive and user-friendly approach to interact with relational databases. The case study commences by exploring the diverse tasks that LLMs can efficiently perform, such as SQL generation, optimization, and summarization. Then we investigate the feasibility of using Langchain for performing these tasks. Further, we propose an innovative approach using GenAI and semantic search to support large schemas with thousands of tables. Then we examine ways to support built-in and user-defined functions in various dialects. And finally, design a vendor and infra-independent architecture for integrating with LLMs.<br>The talk also introduces datasets we used for benchmarking, and based on empirical evaluation explains how we achieved state-of-the-art results on a wide range of SQL generation tasks. <br><br> <strong>Speakers:</strong> Sreenath Somarajapuram<br> Sreenath is an IC, Programmer, System Designer, UX Designer and Mentor. He comes with 15 years of experience in designing and developing cutting-edge web, mobile, and desktop applications. As an esteemed member of the Apache PMC. Sreenath has contributed significantly to numerous projects within the Hadoop ecosystem, leaving a lasting impact on the industry. He holds B.Tech in Computer Science from MGU, India. His passion for technology knows no bounds, and he finds particular fascination in the realms of AI, Theoretical Physics, and Space Exploration.<br> Subrata Nandi<br> Subrata Nandi is leading the strategic & technical leadership and driving innovation within the engineering teams at Cloudera. He is a veteran in building distributable databases/Mobile platforms at Sybase and has delivered many enterprise applications at SAP. Subrata holds two MBAs from CSUEB, PMI & Data Warehouse from UC Berkeley & BS in Physics Honors from the University of Calcutta, India. He is currently working as a director of engineering at Cloudera.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="HI003"><strong>Developer Productivity Engineering for Open Source Communities [Gradle Sponsored Session]</strong><br>The emerging practice of Developer Productivity Engineering focuses on identifying and removing productivity pitfalls in the developer toolchain. This can encourage contribution and increase user confidence in your open source project. We will explore and demonstrate using Apache projects how we can make the developer toolchain faster and more stable with Develocity and how that leads to faster contributions, higher-quality contributions, and more contributions. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_sponsored_etienne-etienne-studer.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Etienne Studer<br> Etienne Studer is the SVP of Engineering, Gradle Enterprise, at Gradle Inc. He leads the engineering team behind Gradle Enterprise. As the founding team lead of Gradle Enterprise since 2015, he has successfully scaled and guided a fully distributed team of engineers across the globe that develops and delivers innovative technologies to improve developer productivity dramatically and transform the developer experience. Etienne holds a Master’s in Molecular Biology from the University of Basel, Switzerland.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="HI004"><strong>Setting up Apache Cassandra and Apache Kafka clusters [Instaclustr Sponsored Session]</strong><br>In this session come learn a little about Instaclustr as Kassian spins up a Cassandra and Kafka cluster using the dashboard and writes a basic application to use them. We’ll discuss the open source technologies behind Instaclustr and how you can get started. <br><br> <strong>Speaker:</strong> Kassian Wren<br> Kassian (they/their/them) is an Open Source Technology Evangelist at NetApp on the Instaclustr team. They read, learn, and write about technology regularly, and love to build IoT projects. When they’re not working on tech, they’re reading, gaming, crafting, or snuggling one of their three cats.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="HI005"><strong>If You Think Branding Is A Waste of Time, Come to This Talk</strong><br>Do you think logos and colors and branding are “just the make-it-pretty” part of an organization? What’s the big deal, anyway? Come to this session to get an introduction to the art and science of brand management, reminisce about some of history’s greatest branding fails, and get some insight into why this all matters. This is not a talk specifically about the ASF brand, but if you’re interested in the upcoming changes, you may learn a little bit more about the how and why that go into the process. <br><br> <strong>Speaker:</strong> Ruth Suehle<br> Ruth Suehle is Executive Vice President of the ASF, and a co-organizer of Community Over Code NA.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="HI006"><strong>M&P Office Hours</strong><br>As a follow up to today’s earlier talk about Marketing and Publicity, Brian Proffitt will be holding Office Hours for all things marketing, publicity, and ASF branding. <br><br> <strong>Speaker:</strong> Brian Proffitt<br> Brian Proffitt is VP – Marketing & Publicity for the ASF, and a co-organizer of Community Over Code NA.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Internet of Things Track</h3> <p><strong>Track Chair:</strong> Christopher Dutz</p> <p id="IOT002"><strong>Having fun with a solar panel, camera and raspberry doing IoT</strong><br> The talk will present a fun project of a raspberry powered by a small solar panel that sends images, temperature an other informations to a server.<br>The project uses an attiny to control the panel and the battery, i2c to pilot it and measure temperature with small sensor. A raspberry pi zero to take pictures and small Apache httpd server to control the whole thing from remote.<br>The talk explains the journey from a test cluster with RPI to a small IoT infracture to report information and pictures from different location using a solar panel as power supply and Apache httpd a server for the collected information. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/tue_iot_having-fun-with-a-solar-panel-camera-and-raspberry.-how-with-a-few-dollars-you-end-making-iot-jean-frederic-clere.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jean-Frederic Clere<br> Jean-Frederic has spent more than 30 years writing client/server software.<br>His knowledges range from Cobol to Java, BS2000 to Linux and /390 to i386 but with preference to the later ;).<br>He is committer in Httpd and Tomcat and he likes complex projects where different languages and machines are involved.<br>Borne in France, Jean-Frederic lived in Barcelona (Spain) for 14 years.<br>Since May 2006 he lives in Neuchatel (Switzerland) where he works for RedHat on Tomcat, httpd and cloud/cluster related topics.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IOT003"><strong>IoT Overkill: Running a Cassandra and Kafka cluster on Open-Source Hardware</strong><br> Open-source hardware and software nearly always go hand-in-hand, and in this talk we’ll go into how this fully open-source cluster is run, what the cluster can do, and how we can automate its setup and maintenance.<br>The cluster will be on hand to demonstrate; it is a five-node cluster with two Raspberry Pi 4 manager nodes and 3 Orange Pi Zero 2 worker nodes. The manager nodes manage a Docker swarm configuration that runs a Cassandra and Kafka service that are both partitioned between each of the worker nodes.<br>Come learn about creating, using, and maintaining a fully open-source cluster! <br><br> <strong>Speaker:</strong> Kassian Wren<br> Kassian (they/their/them) is an Open Source Technology Evangelist at NetApp on the Instaclustr team. They read, learn, and write about technology regularly, and love to build IoT projects. When they’re not working on tech, they’re reading, gaming, crafting, or snuggling one of their three cats.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IOT004"><strong>Faster, easier, more stable and scalable V1.x Apache IoTDB: A Time Series Database for IoT Applications</strong><br> In this talk, I will introduce the new requirements of time series data management posed by typical industrial scenario which not well addressed in other existing solutions, including (1) device-defined ever-evolving schema, (2) mostly periodical data collection, (3) strongly correlated series, (4) variously delayed data arrival, and (5) highly concurrent data ingestion. <br> And then I will introduce the new distributed architecture of Apache IoTDB V1.x, including: 1) overall cluster architecture and node roles; 2) data and metadata sharding; 3) MPP query engine; 4) IoT consensus protocol which is a distributed consensus protocol optimized for IoT scenarios; and explain how IoTDB uses these technologies to solve the above problems.<br>In the past year, IoTDB QueryEngine has also supported more time-series-related features which greatly improved usability of IoTDB. I will compare the short sql written in IoTDB using these new features and the verbose standard relational sql written by ChatGPT.<br>Finally, I will also share with you some IoTDB application cases and solutions in various industries, including the Internet of Vehicles scenario with millions of vehicles and billions of time series, the application of end-edge-cloud collaboration technology in an industrial enterprise with the highest steel output in the world and so on. <br><br> <strong>Speaker:</strong> Yuan Tian<br> PMC Member of Apache IoTDB<br>Graduated from School of Software, Tsinghua University.<br>Now working in Timecho Ltd., engaged in query engine-related research.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IOT005"><strong>Building an Open-Source Historian</strong><br> While the industry is still in great need of functionality many open-source projects have to offer, they are still hesitant to adopt these technologies. The main reason for this being: The industry doesn’t think in Services, they think in Products. <br>They need something, they can install and run and are not able or willing to invest time and money needed to build their own solutions. <br>That’s why we are trying come up with typical industry solutions, that are built up out of open-source components. The first of these would be a solution to replace established "Historians". In general these are systems, that collect data from industrial equipment and store this in database for archiving purposes.<br>Based on Apache PLC4X for collecting the data and Apache IoTDB for storing and processing it, we already have the perfect candidates for such a product. <br>In this talk I want to talk about what we have already achieved, what still has to be worked on and what our plans are from there on. <br><br> <strong>Speaker:</strong> Christofer Dutz<br> Big open-source enthusiast, Apache Member and currently serving as VP of Apache PLC4X as well as a member of the Board of Directors of the ASF.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Incubator Track</h3> <p><strong>Track Chair:</strong> Justin Mclean</p> <p id="IR002"><strong>Navigating the ASF Incubator Process</strong><br> This talk provides an overview of the Apache Software Foundation (ASF) and its incubation process. It guides projects on learning the Apache Way, ensuring compliance with licensing and intellectual property rights, and fostering community growth. The process involves creating a proposal, entering the incubator, focusing on community building and making releases, and eventually graduating as a top-level ASF project. Key aspects covered in this talk include, complying with licensing, engaging in open and transparent practices, and adopting a vendor-neutral approach. This presentation offers valuable insights for those interested in joining the ASF or seeking an understanding of the incubation process. <br><br> <strong>Speaker:</strong> Justin Mclean<br> Justin Mclean is a highly experienced professional with over 30 years in web application development, education, and community work, and is an active contributor to open source software. Justin is a renowned speaker at conferences worldwide and currently serves as the Community Manager at Datastrato. He mentors projects in the Apache Software Foundation and holds positions as VP of the ASF Incubator, and is an ASF board member.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IR003"><strong>Podling Releases: Achieving Success in the Apache Incubator</strong><br> Discover the keys to success when releasing a podling within the Apache Incubator. This talk explores the aspects the incubator PMC looks for in every release, providing practical tips to pass the IPMC vote and move your project closer to graduation.<br>Learn about the incubator and ASF policies, recent updates you may have missed, and the legal requirements of open source licenses. Gain insights into assembling your NOTICE and LICENSE files effectively while understanding the reasoning behind specific practices.<br>Witness a review process demonstration using simple tools, accompanied by real-world examples. Avoid common release mistakes and discover available support resources.<br>Join this session to unlock the secrets of achieving an IPMC-approved podling release, shaping the future of your project within the Apache Incubator and towards graduation. <br><br> <strong>Speaker:</strong> Justin Mclean<br> Justin Mclean is a highly experienced professional with over 30 years in web application development, education, and community work, and is an active contributor to open source software. Justin is a renowned speaker at conferences worldwide and currently serves as the Community Manager at Datastrato. He mentors projects in the Apache Software Foundation and holds positions as VP of the ASF Incubator, and is an ASF board member.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IR004"><strong>Migrating a Large Open Source project to the Apache Software Foundation</strong><br> Discover the challenges, strategies, and benefits we have faced migrating a large open-source project, all of the KIE Community, to the Apache Software Foundation. In 2022, Red Hat exited the Business Automation space, and IBM took over sponsorship of Drools, jBPM, and Kogito. At the end of 2022, we felt it would benefit everyone to move the collective KIE Community and those projects to the ASF.<br>In this talk, you’ll discover how to maintain project momentum and leverage the opportunities provided by the Apache Software Foundation. We’ll also discuss the Apache Incubator and what it takes to become a Top Level Project within Apache. Whether you are a developer, project manager, or open-source enthusiast, this conference will equip you with valuable insights to navigate the migration journey. <br><br> <strong>Speaker:</strong> Jason Porter<br> Jason is a software engineer currently working within the Business Automation Management Team at IBM. He has also worked on Arquillian, Quarkus, and other developer experience projects while with Red Hat before IBM. His specialties include Wildfly, Quarkus, CDI, JSF, Java EE, solr, and Gradle. He has worked with PHP, Ruby, Groovy, SASS, and the rest of the web language arena (HTML, CSS, JS, etc). His current position as Principal Software Engineer at IBM keeps him busy with community work for the Business Automation Manager Open Editions product; however, he has also contributed to JBoss Forge, Arquillian, Apache DeltaSpike, Awestruct, Asciidoctor, and others as time allows. He’s very interested in the developer experience and helping to improve it in all aspects.<br>He has co-authored two books: Testing Java Microservices, published by Manning, and, most recently, Quarkus Cookbook, published by O’Reilly. He has spoken at many conferences over the years, including JavaOne, Devoxx Belgium, Devoxx Ukraine, Devoxx Morocco, and JavaLand in Germany. For the past several years, he has also been President of the Utah Java Users Group. He is a native of Utah and a father of five children. Spare time is precious, as you can imagine!<br>Twitter: lightguardjp<br>LinkedIn: jasonporter<br>Lanyrd: lightguardjp<br>GitHub: LightGuard<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IR005"><strong>Pekko: Hard solutions to the issues of hard-forking</strong><br> In 2022 Akka, one of the leading Scala/Java frameworks for distributed programming using the Actor model went from an open source Apache 2.0 License to a commercial “source available” BSL license. While not the first project to undergo a questionable transition from open source to source available, it highlights a trend we see more and more in the OSS field: companies capitalising on an open source community only to remove access at a later stage. <br>Life’s got you down, so what do you do? Well, hard fork it into Apache Incubator of course…<br>Listeners will gain insight into how a project that was open source for ~13 years decided to change course, what it is like when two open source communities with very different styles of governance collide and the lessons learnt (both for the incubator and the incubating) when undergoing the process.<br>This talk goes through the history of Akka, one of the largest and oldest formerly open source projects in Java + Scala and how the "incident" catalysed. Then we turn into the genesis of Pekko, where it is now, how we got there and the Apache Incubator’s hand that played a role in this memorable journey. <br><br> <strong>Speaker:</strong> Matthew de Detrich<br> Matthew is a Senior Software Engineer in the Open Source Program Office at Aiven, where he contributes to upstream Kafka as well as a member of Apache Foundation and PMC of the Apache Pekko Incubator project. Before joining Aiven, Matthew worked at Zalando on returns, arguably the most business-critical part of the system (ask him about his experience there over a beer). Based in Berlin for over 5 years, he was born in Australia. Knows too much about Scala. Knows how to dance (Salsa). And loves vegetables because they don’t taste bitter to him (scientific term: beta carotene), which is great news because he’s vegan<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IR006"><strong>Apache Toree: A Jupyter Kernel for Scala / Apache Spark</strong><br> Many data scientists are already heavily using the Jupyter ecosystem for analyzing data using interactive notebooks. Apache Toree (incubating) is a Jupyter kernel designed to enable data scientists and engineers to easily connect and leverage Apache Spark and its powerful APIs from a standard Jupyter notebook to execute their analytics workloads. In this talk, we will go over what’s new with the most recent Apache Toree release. We will cover available magics and visualization extensions that can be integrated with Toree to enable better data exploration and data visualization. We will also describe some high-level designs of Toree and how users can extend the functionality of Apache Toree powerful plugin system. And all of these with multiple live demos demonstrating how Toree can help with your analytics workloads in an Apache Spark environment including the new support for Apache 3.3 and Scala 2.13. <br><br> <strong>Speaker:</strong> Luciano Resende<br> Luciano Resende is an AI Platform Architect at Apple AI/ML organization. He’s a highly performant technical leader that embraces challenges and complex problems to drive breakthrough innovations. Luciano’s expertise is in open source, and enterprise-grade AI platform technologies with over 20 years of experience successfully designing, building and delivering complex software in fortune 500 companies and open source. He has a strong background in open source big data platforms such as Apache Spark, and data science building blocks such as the Jupyter Notebook Stack, Elyra and Apache Toree Scala kernel.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Performance Engineering Track</h3> <p><strong>Track Chair:</strong> Roger Abelenda & Paul Brebner</p> <p id="PE001"><strong>Developing Fast Applications With Open Source Software – Without The Fury</strong><br> Developing fast scalable Big Data applications has been made significantly easier over the last decade with horizontally scalable open-source databases and streaming technologies such as Apache Cassandra and Apache Kafka. Cloud-native trends have also accelerated the uptake and ease of use of these technologies, and they are available as managed services on multiple cloud platforms. <br>But maybe it has become too easy to embark on building complex distributed applications using multiple massively scalable open-source technologies, as there are still many performance and scalability issues to be aware of. In this talk, I will give a high-level overview of some of the performance and scalability challenges I’ve overcome over the last six years building realistic demonstration applications using Apache Cassandra and Apache Kafka (and more), supplemented with performance insights from our operation of thousands of production clusters. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_performanceengineering_brebner-paul-brebner.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Paul Brebner<br> Paul is an Open Source Technology Evangelist at Instaclustr (now part of Spot by NetApp). For the past six years, he has been learning new scalable Big Data technologies, building realistic demonstration applications, and blogging and talking about a growing list of open-source technologies including Apache Cassandra, Apache Spark, Apache Kafka, Apache ZooKeeper, Redis, OpenSearch, PostgreSQL, Cadence, and many more.<br>Since learning to program on a VAX 11/780, Paul has extensive R&D, teaching, and consulting experience in distributed systems, technology innovation, software architecture and engineering, performance engineering, grid and cloud computing, and data analytics and machine learning.<br>Paul has also worked at Waikato University (New Zealand), University of New South Wales (UNSW, Sydney), Commonwealth Scientific and Industrial Research Organisation (CSIRO, Australia), University College London (UCL, UK), National ICT Australia (NICTA), Australian National University (ANU), and several tech start-ups (including as a Founder/CTO). Paul has an MSc (1st Class Hons, Waikato) in Machine Learning and a BSc (Computer Science and Philosophy, Waikato).<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="PE002"><strong>Design patterns and then the road to realize billions of objects, and exabytes of capacity, while preserving performance in Apache Ozone</strong><br> Scaling capacity under management and total object count for object stores while preserving performance gains has been a major focus of many storage solutions over the years. Scaling capacity leads to increased background processing, which can compete with foreground traffic. Additionally, there is a strong need for low-latency access to namespace metadata.<br> In this talk, we will discuss the challenges of scaling and how they can be mitigated using Ozone’s architecture as a reference and lessons learned. We will compare it to other implementations. We will also discuss the architecture, performance data, tooling used to run benchmarks and scale tests, and future improvements the community can contribute to.<br> Ozone is a Hadoop Filesystem and S3 API compatible Object Store designed to scale beyond the current limitations of other storage solutions. Ozone preserves low latency for metadata while allowing scaling capacity and object count without impacting performance for workloads. <br><br> <strong>Speakers:</strong> Ritesh H Shukla<br> Ritesh is an Apache Ozone committer and PMC member. He has over a decade of experience with distributed storage solutions and systems. He is passionate about picking all three in a solution: simple, right, and efficient. <br><br> Duong Nguyen<br> Duong Nguyen is an Apache Ozone committer with over a decade of experience working on scaled software solutions spanning Amazon AWS and Cloudera. <br><br> Tanvi Penumudy<br> Tanvi Penumudy started her Apache software contributor experience and her career with Apache Ozone. She has been focused on improving Ozone’s performance.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="PE003"><strong>Performance measurement and tuning of Cassandra 5.0 transactions on Cloud infrastructure</strong><br> Cassandra 5.0 supports transactions based on ACCORD requiring new benchmarks which can provide a realistic measurements of distributed transactional databases. To that end we have created new scenarios in nosqlbench, a popular nosql benchmarking tool, to simulate transactional workloads inspired by YCSB+T’s Closed Economy Workload.<br>ACCORD relies on low latency networking and minimal clock skew. While one might be able to control all these things in an on-prem environment in a cloud environment one has to work with the choices the provider has made so being able to understand and measure them is important.<br>On the example of Azure the talk will explore different network topologies like one-region cluster, multi-region clusters in different geographies and it’s influence on performance. <br>As part of this talk we will also introduce a local SSD based write-through cache first described by Discord and adapted to the Azure cloud by us and it’s performance implications on read heavy Cassandra 5.0 transactions.<br>We will also demonstrate ways to tune Cassandra 5.0 for optimal performance in different topologies – and show the impact on CPU, disk, and network metrics – as well as highlight performance differences with previous Cassandra versions like 3.11, 4.0, and 4.1.<br>After attending this talk the audience will better understand how to measure performance of distributed transactional databases and factors influencing their performance. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_performance_cassandra50-german-eichberger.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> German Eichberger<br> German Eichberger, MSc, is a Principal Software Engineer with Microsoft on the Azure Managed Instances for Apache Cassandra team. He has written articles on Cassandra and contributed bug fixes to the project. Previously, he was an architect on Rackspace’s Kubernetes team and led Hewlett-Packard’s Cloud Advanced Networking Team and was a core reviewer and contributor to many OpenStack projects. German has given talk at major conferences and teaches computer topics at University of California San Diego Extension.<br> <strong>Speaker:</strong> Pallavi Iyengar</td><br> Pallavi Iyengar, is a Software Engineer with Microsoft on the Azure Managed Instances for Apache Cassandra team and has contributed to cassandra-ldap and other OpenSource projects.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="PE004"><strong>Hunting Performance Monsters on the Back of a Camel</strong><br> This talk shares the perspective of a software engineer tasked with the work of improving the performance of Apache Camel. <br>I’ll talk about the motivation for improving the performance of Apache Camel, the process and tooling used to diagnose and verify the results. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_performance_engineering-otavio-piske.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Otavio Rodolfo Piske<br> Otavio is a Principal Software Engineer at RedHat’s Hybrid Integration Team where he works developing solutions for micro-services, cloud and integration. He has been involved with messaging and integration technologies for the last 17 years. He is a committer and a member of the Apache Camel PMC.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="PE005"><strong>Quick load testing from Selenium scripts</strong><br> You have implemented your site functional tests with Selenium. Now, how can you reuse some of these tests to verify that your site does not only work as expected with 1 user, but with a big load of them? In this talk I will show you a way to achieve this without leaving your IDE.<br>I will do a live demo generating a load script using JMeter DSL, from an existing Selenium script. Then, I will run it in combination with the Selenium script to generate load and evaluate user experience while such load is being imposed.<br>Join me, add JMeter DSL to your toolbox and let’s share some fun & ideas! (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_performance_abelenda-roger-abelenda.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> Roger Abelenda<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="PE006"><strong>Lessons Learned from Benchmarking Amazon’s E-commerce Search Engine</strong><br> The search engine on Amazon’s retail website runs on Lucene. It makes billions of products available to customers in less than 1 second per query. At this scale, every wasted millisecond comes at a large cost, so performance tests have to be thorough. Last year, we took inventory of our benchmarks, quantified the noise and bias we were seeing, introduced measurements for the statistical significance of results, and addressed sources of inconsistency (e.g.: caching, index geometry). We aren’t done, but this is a step in the right direction – benchmarks that are accurate, precise, and quick enough to remain useful. This talk will tell that story and help you move in the same direction. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_performance_vodita-stefan-vodita.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Stefan Vodita<br> I’m a software engineer doing Product Search at Amazon, where I’ve had the opportunity to tackle a broad range of search problems, from indexing scalability, to faceted navigation, to benchmarking. Before that, I used to teach C programming and Control Theory as an assistant at the Polytechnic University of Bucharest. Outside of work, I indulge in the humanities: philosophy, history, music. Reconciling these with my technical interests has led to some of my best work – the successful application of a vision transformer for optical music recognition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Search Track</h3> <p><strong>Track Chair:</strong> Anshum Gupta</p> <p id="SH001"><strong>Transforming Your Search with Cutting-Edge Techniques and LLM Models</strong><br> Vector search has transformed the landscape of information retrieval across various domains. By transcending traditional keyword-based approaches, vector search offers a semantic understanding of user query intent, improves result precision by leveraging various data sources (text, images, audio, video), and delivers superior search results, ultimately enhancing user experiences.<br>Join us as we explore the realm of neural search and its game-changing impact. We will delve into the fundamentals of vector search, uncover its remarkable capabilities, and reveal practical strategies for implementation. Additionally, we will showcase how to integrate state-of-the-art LLMs and multimodal models to augment the power of vector search. By attending this talk, you will gain invaluable insights, guidance, and techniques to embrace neural search and supercharge your information retrieval systems. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/llms-in-search-asf-coc-atita-arora.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Atita Arora<br> Atita has been working to develop, customize, and optimize Enterprise & E-commerce search engines for many years. She is an active contributor to many open-source tools. She holds 2 Masters degrees in Computer Applications and Strategic Business Management. She has worked and supported in many different roles in various organizations and even founded a small Search consultancy in India in 2017. <br>She has a keen interest in personalizing search and influencing customer interaction using NLP, ML, and AI.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SH002"><strong>Adding vector search to Apache Cassandra</strong><br> This talk discusses the implementation of vector search in Cassandra. Basics of kNN and ANN vector search are covered, and the Hierarchical, Navigable Small-World (HNSW) algorithm for vector indexing is introduced. We discuss the challenges and solutions for adapting HNSW to Cassandra, including adapting Lucene’s HNSW for concurrent updates and queries. We also demonstrate the execution of supported queries with the HNSW index and other SAI (storage-attached index) predicates, and share the lessons learned to improve performance. The talk concludes with a discussion of implications for application developers who wish to take advantage of Cassandra vector search. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_search_ellis-jonathan-ellis.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jonathan Ellis<br> Jonathan is the founder of DataStax and a former project chair of Apache Cassandra.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SH003"><strong>Search at Uber over Apache Lucene</strong><br> In this talk, we’ll give an overview of the Search platform at Uber, and share how we built a scalable and high-performance platform over Apache Lucene. We’ll highlight several business-critical use cases at Uber powered-by the search platform such as UberEats Discovery and Maps search. We will discuss the unique challenges from these use cases such as strong data freshness and geospatial search requirements. Next, we’ll present the overall architecture of the search platform, built on top of Apache Lucene, and explain how it addresses the challenges via a Base/Snapshot/Live (BSL) fashion of index structure. Lastly, we’ll share several ongoing interesting efforts that leverage new features from Lucene such as HNSW for vector search. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_search_search-at-uber-over-apache-lucene-yupeng-fu.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Yupeng Fu<br> Yupeng Fu is a Principal Engineer at Uber and he leads the Search platform at Uber and Real-time Data platform. Yupeng Fu is also an Apache Pinot committer and PMC.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SH004"><strong>Completing the Puzzle: Lucene’s Missing Aggregation Engine</strong><br> The navigation panel on the left of the Amazon retail search page presents users with options they can use to refine their search results, such as brands, colors, sizes. Lucene can model navigation using facets, it can aggregate document features up to facet labels, and it can sort the facet labels, but we wanted to do more. We wanted to store and retrieve data about the facet labels themselves, we wanted to aggregate not just on top of documents, but on top of other labels, and we wanted to do all this efficiently and with a high degree of flexibility. In short, we wanted facet labels to be first class citizens in the Lucene index. This is the story of how we went about it, the challenges we facet, and the new features we are contributing back to Lucene, such as multi-aggregation queries, enriched taxonomies, and an alternative aggregation engine. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_search_shankarvodita-stefan-vodita.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speakers:</strong> Shradha Shankar<br> I’m a software engineer who thrives on exploring topics deeply and creating extensible solutions that are built from first principles. Currently, I work at Product Search at Amazon where I get to work on a variety of problems in information retrieval and large scale systems. Prior to that, at Cisco, I developed PaaS database solutions for their internal cloud platform. My other professional interests revolve around the fascinating realm of graphs, graph databases, and recommendation engines. When I’m not working, you may find me engaged in friendly competition over board games, experimenting with my culinary skills in the kitchen, or challenging myself at the gym. <br><br> Stefan Vodita<br> I’m a software engineer doing Product Search at Amazon, where I’ve had the opportunity to tackle a broad range of search problems, from indexing scalability, to faceted navigation, to benchmarking. Before that, I used to teach C programming and Control Theory as an assistant at the Polytechnic University of Bucharest. Outside of work, I indulge in the humanities: philosophy, history, music. Reconciling these with my technical interests has led to some of my best work – the successful application of a vision transformer for optical music recognition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SH005"><strong>Introducing Multi-valued Vector Fields in Apache Lucene</strong><br> Since the introduction of native vector-based search in Apache Lucene happened, many features have been developed, but the support for multiple vectors in a dedicated KNN vector field remained to explore. Having the possibility of indexing (and searching) multiple values per field unlocks the possibility of working with long textual documents, splitting them into paragraphs, and encoding each paragraph as a separate vector: a scenario that is often encountered by many businesses. This talk explores the challenges, the technical design and the implementation activities that happened during the work for this contribution to the Apache Lucene project. The audience is expected to get an understanding of how multi-valued fields can work in a vector-based search use case and how this feature has been implemented. <br><br> <strong>Speaker:</strong> Alessandro Benedetti<br> Alessandro Benedetti is an Apache Lucene/Solr committer and PMC member. Director and R&D Software Engineer at Sease Ltd.<br>His focus is on R&D in Information Retrieval, Information Extraction, Natural Language Processing, and Machine Learning. He firmly believes in Open Source as a way to build a bridge between Academia and Industry and facilitate the progress of applied research. Experience with a great variety of clients has taught him to be a proficient and professional consultant.<br>When he isn’t on clients’ projects, he is actively contributing to the open-source community and presenting the applications of leading-edge techniques in real-world scenarios at meet-ups and conferences such as ECIR, the Lucene/Solr Revolution, ApacheCon, Haystack, FOSDEM, Berlin Buzzword, and Open Source Summit<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SH006"><strong>Fighting Adversarial Regular Expressions in Apache Lucene</strong><br> Regular expressions are a compact and powerful approach for matching strings and are well supported in Lucene using RegexpQuery. However, such queries can be surprisingly costly, leading to a possible denial of service (ReDoS) vulnerability in search services built on Lucene.<br>This talk will first briefly introduce how Lucene executes RegexpQuery using a pre-determinized finite state automaton or DFA matching approach. This yields fast query execution, but Lucene must guard against the determinization pre-step taking too much work and reject the query, preventing such costly regular expressions from being used in Lucene at all. Next I’ll describe a recent Lucene bug that led to an adversarial ReDoS query impacting an OpenSearch user [1] and how we fixed and optimized it. I’ll present the ongoing development efforts to execute the RegexQuery directly using a non-deterministic finite state automaton (NFA) instead, guided by the method described in Russ Cox’s paper [2]. Finally I’ll walk through the pros and cons of these two execution methods for Lucene’s RegexpQuery so that future Lucene users can understand and reduce the risk and impact of ReDoS attacks in their search applications.<br>[1] <a href="https://github.com/opensearch-project/OpenSearch/issues/687" rel="nofollow">https://github.com/opensearch-project/OpenSearch/issues/687</a><br>[2] <a href="https://swtch.com/~rsc/regexp/regexp1.html" rel="nofollow">https://swtch.com/~rsc/regexp/regexp1.html</a> (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_search_patrickzhai-patrick-zhai.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Haoyu Zhai<br> Lucene committer<br>LinkedIn Senior Engineer<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Serverside Chat with ASF Infra</h3> <p><strong>Track Chairs:</strong> Drew Foulks, Daniel Gruno, Chris Thistlethwaite</p> <p id="IA001"><strong>A Server Side Chat with Infrastructure</strong><br> A high level overview of how infra enables projects with existing and <br>up-and-coming services at the ASF. From storing your code to <br>distributing your artifacts and everything in between, learn how ASF <br>Infra has you covered. <br><br> <strong>Speaker:</strong> Drew Foulks<br> Drew Foulks is a member of the ASF Infrastructure team. In addition to many other topics, he set up and maintains the Gradle Enterprise server hosted by the ASF.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IA002"><strong>How-To Infra</strong><br> If you want to use foundation resources, you will likely need to interface with the infrastrcuture team. This can take many forms, whether that interaction is taking place through a jira ticket, an email or even through the self-serve portal. the question you may be asking yourself, however, is “what is the <em>best</em> way to get help from infra for my particular request?” In this talk we will discuss the most effective ways for you to request assistance for a variety of different needs. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_infra_wells-chris-wells.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Chris Wells<br> Chris Thistlethwaite<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IA003"><strong>Towards an Attribute-Based Role-Based Access Control System</strong><br> We’ve all heard the complaint, Role-Based Access Control (RBAC) doesn’t work. It leads to ‘Role Explosion’, defined as an inordinate number of roles in a production environment. Nobody knows who is assigned to what, because there are hundreds, if not thousands of roles to keep track of. We could try Attribute-Based Access Control (ABAC), but that leads to a whole different set of problems, including non-standard implementations, complexity and lack of integrity. What’s a system implementer to do? There’s a way of having both together, capturing the strengths of each while limiting their shortcomings. This talk discusses standards-based RBAC and how it can be enhanced to eliminate long entrenched problems by sprinkling attributes into the mix. At the same time we’ll look at an open source implementation, Apache Fortress, that illustrates the techniques discussed in the talk using an LDAP data model.<br> The talk will center around a typical RBAC use case to implement fine-grained access control inside of a traditional web application. The first demo (App1) will show where the traditional RBAC model falls short. The second demo (App2) will show how using dynamic role constraints solves the problem. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_filled_open_slot_mckinney-shawn-mckinney.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Shawn McKinney<br> Software architect, PMC Apache Directory Project<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IA004"><strong>Developer Productivity gains at ASF with Develocity (formerly Gradle Enterprise)</strong><br> After ApacheCon 2022, the ASF and Gradle Inc. agreed on a targeted sponsorship that provides all Apache committers free access to the full functionality of Develocity (formerly Gradle Enterprise), the leading tool to increase developer productivity in the Maven, Gradle, Bazel, and sbt ecosystems.<br>The ASF Infrastructure team will demonstrate their setup for ge.apache.org, where data of about 20.000 weekly builds from Apache projects is captured and surfaced, and how the build data has helped the ASF Infrastructure team in their work.<br>The Develocity team will share how several projects, like Beam, Kafka, Pulsar, Solr, JMeter, etc., are already benefitting and how other Apache projects could immediately benefit from deep build insights, flaky test analysis, predictive test selection, and build caching, too.<p> <strong>Speaker:</strong> Etienne Studer<br> Etienne Studer is the SVP of Engineering, Develocity, at Gradle Inc. He leads the engineering team behind Develocity (formerly Gradle Enterprise). As the founding team lead of Develocity since 2015, he has successfully scaled and guided a fully distributed team of engineers across the globe that develops and delivers innovative technologies to improve developer productivity dramatically and transform the developer experience. Etienne holds a Master’s in Molecular Biology from the University of Basel, Switzerland.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IA005"><strong>Artifact Distribution Platform</strong><br> Every piece of software, like any good, needs a place to be shipped. Python has pypi, Java has Maven Central,<br>Node.js has NPM, and the ASF has downloads.apache.org and friends for distributing our many artifacts to the<br>millions of downstream users, serving up petabytes of data to the yearning masses.<br>Our distribution system has a very long, complex, and ever-changing history, with many separate parts that all<br>work in unison to ensure that our software gets from the developers’ brains to the end users. Many parts, many rules,<br>a ton of stale data hidden in dusty coffers somewhere, and an audit trail that can often leave a fair bit to be desired.<br>With our current setup in mind, and looking at upcoming (and ever-evolving) best practices and legislation, the<br>ASF Infrastructure Team has begun a journey towards a single focal point for the entire release process at the ASF,<br>from freshly farmed release candidate to the end-users’ tables.<br>This new journey is called ADP: The Artifact Distribution Platform, and will encompass (pretty much) everything a<br>project will need in order to navigate the myriad of policies and processes involved with cutting a release:<br>– staging and testing<br>– ensuring and automating audit trails, authenticity, and provenance<br>– simplifying the vote process<br>– simplify and ease the download process for end-users by unifying current and historical releases in one place<br>– ensuring that vulnerabilities are easy to automatically backreference to any affected prior releases<br>– no more having to use five different services for a release (goodbye, dist.apache.org, archive.apache.org, and so on!)<br>In this talk, we will go through our current roadmap and discuss what lies ahead for ADP. This is as much us showing<br>you, the audience, what is in store, as it is you telling us what you would like to see happen. The future is wide<br>open and your input is most welcome! <br><br> <strong>Speaker:</strong> Daniel Gruno<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="IA006"><strong>IRL Roundtable</strong><br> After asking about Infra at the convention last year, it became <br>apparent that infra would be well served spending time strengthening its<br>connection the community that it serves. Since then infra has been <br>focusing on our presence in the larger community and after a year of <br>changes big and small we’re a more transparent and receptive Infra. <br>From the efficacy of our roundtables to our volunteer friendly approach <br>to community efforts we’d like to discuss our community building <br>efforts and what we can be doing to better enable everyone <br><br> <strong>Speaker:</strong> Drew Foulks<br> Drew Foulks is a member of the ASF Infrastructure team. In addition to many other topics, he set up and maintains the Gradle Enterprise server hosted by the ASF.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Streaming Track</h3> <p><strong>Track Chair:</strong> James Hughes</p> <p id="SG001"><strong>Declarative Reasoning with Timelines: The Next Step in Event Processing</strong><br> At the heart of modern data processing lies events. Events describe the roughest, most complete picture available of what has happened in the world, and practically every form of data processing ultimately begins with events. <br><br> <strong>Speaker:</strong> Ryan Michael<br> Kaskada community and strategy leader.<br> Ryan leads strategy and community development for Kaskada, an open-source project focused on a novel event processing engine that utilizes stream-native query abstractions to simplify time-based reasoning.<br> As Kaskada’s VP of Engineering and technology co-creator, Ryan was instrumental in the company’s evolution from a SaaS startup to an open-source project, following its acquisition by DataStax earlier this year.<br> Before Kaskada, Ryan served as a principal engineer at ReturnPath, leading the development of various systems such as distributed data acquisition services, streaming data infrastructure, and production data science platforms. Before his tech career, he dedicated over a decade to architectural project management, earning features in prestigious publications like Dwell and the New York Times.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG002"><strong>Unlocking the Power of Multi-Protocol Messaging with Apache Pulsar</strong><br> Apache Pulsar is a next-generation distributed messaging and streaming platform gaining popularity due to its unique multi-protocol capability. Unlike traditional messaging systems that typically support a single messaging protocol, Apache Pulsar is designed to provide seamless support for multiple messaging protocols and languages, including MQTT, Kafka, and AMQP. In this talk, we will explore the benefits of Apache Pulsar’s multi-protocol capability and how it can be used to build modern, distributed applications.<br>We will dive into the details of Apache Pulsar’s multi-protocol capability and how it provides a unified messaging and streaming platform that can handle various use cases, including real-time streaming, event-driven processing, and data ingestion.<br>We will demonstrate how to use Apache Pulsar’s multi-protocol capability to build polyglot messaging applications that communicate with different messaging systems and applications using different protocols and languages. <br>Attending this talk will give attendees a deeper understanding of Apache Pulsar’s multi-protocol capability and how it can be used to build modern, distributed applications that communicate with different messaging systems and applications using different protocols and languages. They will also learn about the key benefits and challenges of using Apache Pulsar for multi-protocol messaging and how to design and deploy polyglot messaging applications with Apache Pulsar. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat-streaming-unlockingthepowerofmulti-protocolmessagingwithapachepulsar-david-kjerrumgaard.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> David Kjerrumgaard<br> David is a committer on the Apache Pulsar project, and also the author of "Pulsar in Action" and co-author of "Practical Hive". He currently serves as a Developer Advocate for StreamNative where he focuses on strengthening the Apache Pulsar community through education and evangelization. Prior to that, he was a principal software engineer on the messaging team at Splunk, and Director of Solutions for two Big Data startups; Streamlio and Hortonworks.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG003"><strong>Building Scalable and Resilient Event-Driven Applications with Apache Pulsar</strong><br> In recent years, event-driven architecture (EDA) has been popular for building real-time and scalable applications. Apache Pulsar is a distributed pub-sub messaging system designed for building EDA applications. In this talk, we will explore how Apache Pulsar can be used to build scalable and resilient event-driven applications.<br>We will introduce the key concepts of EDA and the benefits of using an event-driven approach for building modern applications. We will then dive into the core features of Apache Pulsar, including its distributed architecture, support for multiple messaging models, and built-in features for message persistence and replication.<br>Next, we will discuss best practices for designing event-driven applications with Apache Pulsar, including strategies for managing message routing, handling failure scenarios, and integrating with other distributed systems. We will also cover common use cases for Apache Pulsar, such as real-time stream processing, data ingestion, and message queuing.<br>Finally, we will demonstrate how to use Apache Pulsar to build a sample event-driven application that showcases the power and flexibility of the platform. Attendees will leave this talk with a solid understanding of Apache Pulsar and how it can be used to build scalable and resilient event-driven applications. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat-streaming-buildingscalableandresilientedawithapachepulsar-david-kjerrumgaard.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> David Kjerrumgaard<br> David is a committer on the Apache Pulsar project, and also the author of "Pulsar in Action" and co-author of "Practical Hive". He currently serves as a Developer Advocate for StreamNative where he focuses on strengthening the Apache Pulsar community through education and evangelization. Prior to that, he was a principal software engineer on the messaging team at Splunk, and Director of Solutions for two Big Data startups; Streamlio and Hortonworks.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG004"><strong>Streaming Incremental View Maintenance with Apache Calcite</strong><br> DBSP (Database Stream Processor) is a new framework for expressing streaming incremental computations, that will be presented at the 2023 conference on Very Large Databases <a href="http://budiu.info/work/budiu-vldb23.pdf" rel="nofollow">http://budiu.info/work/budiu-vldb23.pdf</a>. We have devised an algorithm that automatically converts any DBSP computation on database tables (i.e., a query) into an incremental computation, that computes on *changes* to the tables. <br>This presentation will give a brief description of the DBSP framework, and it will discuss several layers of our implementation: the DBSP runtime is an open-source project <a href="https://github.com/feldera/dbsp" rel="nofollow">https://github.com/feldera/dbsp</a> implementing DBSP in Rust. The project also includes open-source compiler based on the Apache Calcite framework which translates arbitrary SQL queries into DBSP computations. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_streaming-mihai.pptx" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Mihai Budiu<br> Mihai Budiu is chief scientist at Feldera, an early-stage start-up. He has a Ph.D. in CS from<br>Carnegie Mellon University. He was previously employed at VMware<br>Research, Barefoot Networks, and Microsoft Research. Mihai’s has<br>worked on reconfigurable hardware, computer architecture, compilers,<br>security, distributed systems, big data platforms, large-scale machine<br>learning, programmable networks and P4, data visualization, and<br>databases; four of his papers have received “test of time” awards.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG005"><strong>Exactly-Once Semantics Revisited: Distributed Transactions across Flink and Kafka</strong><br> Apache Flink’s Exactly-Once Semantics (EOS) integration for writing to Apache Kafka has several pitfalls, due mostly to the fact that the Kafka transaction protocol was not originally designed with distributed transactions in mind. The integration uses Java reflection hacks as a workaround, and the solution can still result in data loss under certain scenarios. Can we do better?<br>In this session, you’ll see how the Flink and Kafka communities are uniting to tackle these long-standing technical debts. We’ll introduce the basics of how Flink achieves EOS with external systems and explore the common hurdles that are encountered when implementing distributed transactions. Then we’ll dive into the details of the proposed changes to both the Kafka transaction protocol and Flink transaction coordination that seek to provide a more robust integration.<br>By the end of the talk, you’ll know the unique challenges of EOS with Flink and Kafka and the improvements you can expect across both projects. <br><br> <strong>Speaker:</strong> Tzu-Li (Gordon) Tai<br> Tzu-Li (Gordon) Tai is a Staff Software Engineer at Confluent, and a long-time Apache Flink Committer and PMC member. At Confluent, he is currently focusing on making Flink and Kafka work really well together. His past contributions in Flink spans various areas, including the Stateful Functions subproject (<a href="https://statefun.io" rel="nofollow">https://statefun.io</a>), some of the more popular connectors for Flink (Apache Kafka, AWS Kinesis, etc.), as well as several topics surrounding evolvability of stateful Flink streaming applications. at Amazon, where I’ve had the opportunity to tackle a broad range of search problems, from indexing scalability, to faceted navigation, to benchmarking. Before that, I used to teach C programming and Control Theory as an assistant at the Polytechnic University of Bucharest. Outside of work, I indulge in the humanities: philosophy, history, music. Reconciling these with my technical interests has led to some of my best work – the successful application of a vision transformer for optical music recognition.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG006"><strong>Through the Looking Glass: Key Architectural Choices in Flink and Kafka Streams</strong><br> This talk is a comparative study of two Apache stream processing engines: Flink and Kafka Streams, shedding light on some fundamental concepts in stream processing.<br>Any streaming system needs to make numerous design choices, the impact of which is not always well understood. Flink and Kafka Streams share an isomorphic architecture, and they are both battle-tested production systems, so we can draw deep, practical insights by comparing the impact of the choices where they differ.<br>Some key points:<br>* Streams’s topic-based shuffle allows precise "subtask" failover without job restart, offering a practical alternative to granular failover proposals Flink<br>* Flink’s key-groups primitive enables higher "maximum parallelism" compared to Streams’ topic-partition approach, reducing overall system overhead<br>* In contrast, Streams’s fine-grained state partition management supports elastic scale-in and -out without pausing processing<br>* Flink’s self-managed EOS and task assignment allows it to span multiple Apache Kafka clusters and other data sources<br>* Flink and Streams both have changelogs for their state, but Streams uses compacted Kafka topics, while Flink stores them alongside checkpoints in object storage, using state checkpoint files as the compacted representation. Both projects might consider adopting hybrid approaches.<br>Attendees will walk away with a deeper understanding of stream processing fundamentals and potentially a few ideas to try out in their own projects! <br><br> <strong>Speaker:</strong> John Roesler<br> John Roesler is a principal software engineer at Confluent and an Apache Kafka PMC member. His current focus spans Apache Flink and Kafka Streams. Previously, he was at Bazaarvoice, building their massive-scale, high-throughput stream processing platform.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG007"><strong>Utilizing Real-Time Transit Data for Travel Optimization</strong><br> There are a lot of factors involved in determining how you can find our way around and avoid delays, bad weather, <br>dangers and expenses. In this talk I will focus on public transport in the largest transit system in the United States, the MTA, <br>which is focused around New York City. Utilizing public and semi-public data feeds, this can be extended to most city and <br>metropolitan areas around the world. As a personal example, I live in New Jersey and this is an extremely useful use of open source and public<br>data.<br>Once I am notified that I need to travel to Manhattan, I need to start my data streams flowing. Most of the data sources are REST feeds that are ingested<br>by Apache NiFi to transform, convert, enrich and finalize it for usage in streaming tables with Flink SQL, but also keep that same contract with Kafka consumers, <br>Iceberg tables and other users of this data. I do not need to many user interfaces to interopt with the system as I want my final decision sent in a Slack message<br>to me and then I’ll get moving. Along the way data will be visible in NiFi lineage, Kafka topic views, Flink SQL output, REST output and Iceberg tables.<br>Apache NiFi, Apache Kafka, Apache OpenNLP,<br>Apache Tika, Apache Flink, Apache Avro, Apache Parquet, Apache Iceberg (<a href="https://communityovercode.org/wp-content/uploads/2023/10/coc23_-utilizing-real-time-transit-data-for-travel-optimization-timothy-spann.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Timothy J. Spann<br> Tim Spann is a Principal Developer Advocate in Data In Motion for Cloudera. He works with Apache NiFi, Apache Kafka, Apache Pulsar, Apache Flink, Flink SQL, Apache Pinot, Trino, Apache Iceberg, DeltaLake, Apache Spark, Big Data, IoT, Cloud, AI/DL, machine learning, and deep learning. Tim has over ten years of experience with the IoT, big data, distributed computing, messaging, streaming technologies, and Java programming. Previously, he was a Developer Advocate at StreamNative, Principal DataFlow Field Engineer at Cloudera, a Senior Solutions Engineer at Hortonworks, a Senior Solutions Architect at AirisData, a Senior Field Engineer at Pivotal and a Team Leader at HPE. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton & NYC on Big Data, Cloud, IoT, deep learning, streaming, NiFi, the blockchain, and Spark.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG008"><strong>Harnessing Real-Time: Powering High Concurrency Streaming Analytics with Apache Druid</strong><br> "Stream processing is rapidly evolving to meet the high-demand, real-time requirements of today’s data-driven world. As organizations seek to leverage the real-time insights offered by streaming data, the need for robust, highly concurrent analytics platforms has never been greater.<br>This presentation introduces Apache Druid, a modern, open-source data store designed for such real-time analytical workloads. Apache Druid’s key strength lies in its ability to ingest massive quantities of event data and provide sub-second queries, making it a leading choice for high concurrency streaming analytics.<br>Our exploration will cover the architecture of Apache Druid, its underlying principles and the unique features that make it optimal for high concurrency use-cases. We’ll dive into real-life applications, demonstrate how Druid addresses the challenge of immediate data visibility, and discuss its role in powering interactive, exploratory analytics on streaming data. <br><br> <strong>Speaker:</strong> Tijo Thomas<br> Lead Solutions Architect at Imply, an experienced Data Engineer with 20+ years of experience as a Software Engineer (R&D) and as a Solution Architect mostly in big data and streaming technologies. He has been part of developing big data platforms and helping customers in solving their Data challenges using Hadoop, Spark, and Apache Druid. <br>He was instrumental in building tools for ease of the adoption of Apache Druid by the open-source community. <br>During this time he has collected best practices, patterns, and anti-patterns applied in production environments. <br>He is passionate about evangelizing the latest and greatest technologies in the analytics domain and Streaming analytics is one area he is keen on contributing. He has presented multiple talks in previous years apachecon, Druid Summit, and Data in Motion Summit.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG009"><strong>Real-time AI made easy: Harnessing Generative AI Functions in Apache Kafka and Apache Pulsar</strong><br> With the rapid advancements in Artificial Intelligence (AI) and the increasing demand for intelligent applications, Generative AI has gained significant attention. Apache Kafka and Apache Pulsar, as robust messaging and streaming platform, provide an ideal foundation for incorporating Generative AI capabilities into real-time data processing pipelines. This conference talk aims to explore the potential of Generative AI Functions for these streaming platforms, focusing on Vector Search, Computing Embeddings, and Chat Completion use cases.<br>These capabilities will revolutionize how developers can leverage streaming to build intelligent applications, enabling efficient data analysis, content recommendation, and natural language processing.<br>To reinforce the concepts discussed, we will provide a live demonstration showcasing a Kafka application that enhances a real-time data pipeline with Generative AI capabilities. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_streaming_bornet-christophe-bornet.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Christophe Bornet<br> Christophe is a Senior Software Engineer at DataStax working on building real-time AI with streaming systems (Apache Kafka, Apache Pulsar). Through his love for open source, he is also an an Apache Pulsar committer and a core team member of JHipster and OpenAPI-generator projects. ASF Infrastructure team. In addition to many other topics, he set up and maintains the Gradle Enterprise server hosted by the ASF.</td></tr> <p id="SG010"><strong>A glide, skip or a jump: Efficiently stream data into your medallion architecture with Apache Hudi</strong><br> The medallion architecture graduates raw data sitting in operational systems into a set of refined tables in a series of stages, ultimately processing data to serve analytics from gold tables. While there is a deep desire to build this architecture incrementally from streaming data sources like Kafka, it is very challenging with current technologies available on lakehouses; a lot of technologies can’t efficiently update records or efficiently process incremental data without recomputing all the data to serve low-latency tables. Apache Hudi is a transactional data lake platform with full mutability support, including streaming upserts, and provides a powerful incremental processing framework. Apache Hudi powers the largest transactional data lakes in the industry, differentiating on fast upserts and change streams to only process and serve the change records.<br>For faster upsert performance, Hudi now supports a new record-level index that deterministically maps the record key to the file location orders of magnitude faster. This allows Hudi to speed up computationally expensive MERGE operations even more by avoiding full table scans. On the query side, Hudi now supports database-style change data capture with before, and after images to chain flow of inserts, updates and deletes change records from bronze to silver to gold tables.<br>Attendees will learn:<br>-How the record index and incremental processing work in Hudi<br>-How the CDC feature unlocks incremental processing on the lake <br><br> <strong>Speaker:</strong> Ethan Guo<br> Ethan Guo is a Database Engineer at Onehouse, working on building and optimizing the next generation of Lakehouse. He’s an Apache Hudi committer and PMC member, passionate about streaming processing and Lakehouse architecture. Previously, he was a Senior Software Engineer at Uber, building mobile observability and data pipelines for monitoring Uber’s mobile network performance in production on a global scale.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG011"><strong>Looking at the New Features of Apache NiFi</strong><br> Apache NiFi has a lot of new features, processors and best practices that have arrived in the last year or so. <br>I will walk through building flows using the latest tips, techniques and processor.<br>I will and change a number of data flows utilizing the latest NiFi version and point out gotchas and some never dos. The deck will act as a take-away with notes, tips and guides to what we covered. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/coc23_-looking-at-the-new-features-of-apache-nifi-timothy-spann.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Timothy J. Spann<br> Tim Spann is a Principal Developer Advocate in Data In Motion for Cloudera. He works with Apache NiFi, Apache Kafka, Apache Pulsar, Apache Flink, Flink SQL, Apache Pinot, Trino, Apache Iceberg, DeltaLake, Apache Spark, Big Data, IoT, Cloud, AI/DL, machine learning, and deep learning. Tim has over ten years of experience with the IoT, big data, distributed computing, messaging, streaming technologies, and Java programming. Previously, he was a Developer Advocate at StreamNative, Principal DataFlow Field Engineer at Cloudera, a Senior Solutions Engineer at Hortonworks, a Senior Solutions Architect at AirisData, a Senior Field Engineer at Pivotal and a Team Leader at HPE. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton & NYC on Big Data, Cloud, IoT, deep learning, streaming, NiFi, the blockchain, and Spark.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SG012"><strong>Kafka Monitoring: What Matters!</strong><br> Given Apache Kafka’s extensive integration into enterprise-level infrastructures, monitoring Kafka’s performance at scale has become increasingly crucial. Understanding the intricacies of Kafka, both at the application level and in terms of lag performance, can be a challenging task, especially when it comes to effectively diagnosing and troubleshooting problems. To address this challenge, it is essential to have meaningful insights and comprehensive visibility across all levels of the Kafka cluster.<br>This presentation will delve into the most critical metrics and indicators for monitoring Kafka at scale, with a specific focus on lag performance. We will explore how to interpret and correlate these indicators, create informative dashboards, and configure alerts that can proactively identify potential issues. Moreover, the talk will highlight the importance of trend analysis in detecting anomalies within long-running Kafka pipelines, enabling early detection of deviations from normal behavior.<br>By the end of this presentation, attendees will have a better understanding of the key performance indicators to monitor in Kafka, how to effectively interpret and visualize them, and the value of trend analysis in maintaining the health and stability of Kafka deployments. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/kafka-monitoring_what-matters_10072023_streaming-amrit-sarkar.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Amrit Sarkar<br> 8+ years experiences engineer at Apple focussed on Search and Streaming.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Sustainability Track</h3> <p><strong>Track Chairs:</strong> Justin Mclean, Ștefan Stănciulescu</p> <p id="SY001"><strong>Who Pays For FOSS Foundations?</strong><br> Have you ever wondered who actually funds open source? Not just the developers, but the whole ecosystem around major open source projects, either at a FOSS Foundation, independent projects, or an open core project at a company? <br>Most major software projects we all rely on are hosted at Foundations like Apache, Eclipse, Linux, or Software Freedom Conservancy. Those foundations provide a wide variety of support to project communities, including legal and licensing assistance, trademark management, event support, and more. As non-profits, these foundations rely on donors and sponsors for all of their work. So who funds all of this critical support for open source foundations? <br>Come find out what companies are behind the popular open source foundations and major independent projects, and who’s still funding all of the other support work that’s done to keep the servers running, press releases coming, and license compliance work. <br>Surprises are guaranteed in this age of layoffs; I know I was surprised when I realized how many different FOSS projects that Microsoft is an annual sponsor for, what projects a few other companies supported with their cash, and how big one foundation has gotten. <br><br> <strong>Speaker:</strong> Shane Curcuru<br> Shane has been volunteering at the ASF since 1999, serving on multiple projects and roles including as VP, Brand Management, and as a many-term Director, as well as speaking at (and running one!) ApacheCon.<br>Otherwise, Shane is a father, husband and friend. Oh, and we have cats! Find me on socials at ShaneCurcuru.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SY002"><strong>Building a Sustainable Leadership Pipeline in Open Source Communities: Retaining and Fostering Leadership Talent</strong><br> Building a sustainable leadership pipeline in Open Source communities is essential to foster sustainability and growth. This talk emphasizes the value and struggles of retaining leaders, and provides strategies for building a sustainable leadership pipeline. To promote community stability and growth over the long term, Open Source Community leaders need to plan for succession while fostering an environment that is encouraging and welcoming.<br>In this talk, I will share strategies for the succession planning process and pointers for giving both aspiring and established leaders opportunity for advancement, while sharing my personal journey of building sustainable open source communities.<br>Through the development and retention of competent leaders within the open source ecosystem, we can enhance continuity of both the community and the project. <br><br> <strong>Speaker:</strong> Abigail Mesrenyame Dogbe<br> Abigail Mesrenyame Dogbe is an Open Source Programs Manager, Researcher and Community Builder who believes in the power of Open Source Community Building.<br>She dedicates time and effort to promoting collaboration, sustainability, and inclusivity within the Open Source Community through contributions such as research, and organizing local and international community events among others. Her current research is focused on Improving Diversity and Inclusion in Open Source Community Leadership.<br>When she is not contributing to open source, she is inspiring the next generation of Women in STEM at Mesrenyame & FRIENDS – Girls in STEM.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SY003"><strong>Practical Trademark Law AMA</strong><br> Are you trying to build a brand for your community-led project? Is your community struggling to keep vendor marketing teams out of your project’s governance? Do you need a lawyer before you can "trademark" something, or can you do it yourself? (Tip: you can do it yourself!)<br>This AMA is here to help answer basic trademark law questions in practical, everyday terms for FOSS projects and the companies that contribute to them. Legal advice can only come from your own lawyer – but most community questions have practical answers that can get you started without a lawyer. Trademarks are all about the public’s association of a brand with a product – and most of that happens in the real world, not a lawyer’s office.<br>Bring your simple community questions about how trademarks work, and we’ll try to get you some practical advice on what to do. Similarly, corporate questions are welcome – for how you can effectively partner with a Foundation or community-led project without stepping on toes.<br>Key resource links included, to get you started with actionable and practical information for FOSS. <br>Remember: your project’s brand is your most important asset – and the only one you can truly control! <br><br> <strong>Speaker:</strong> Shane Curcuru<br> Shane has been volunteering at the ASF since 1999, serving on multiple projects and roles including as VP, Brand Management, and as a many-term Director, as well as speaking at (and running one!) ApacheCon.<br>Otherwise, Shane is a father, husband and friend. Oh, and we have cats! Find me on socials at ShaneCurcuru.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SY004"><strong>How to Ethically Track the Usage of Your ASF Project</strong><br> One of the major difficulties with open source sustainability is the fact that maintainers are typically working in the dark regarding their software’s usage trends – from growth opportunities to which companies are relying on the project, and beyond. Lacking this data can make it challenging to effectively work proactively, and working reactively can cause maintainer burnout. <br>In this talk, we’ll explore ethical (and ASF-approved) ways that ASF projects can better understand their adoption, usage and community trends, and how this can lead to more sustainable OSS maintenance. This includes tools like Matomo, Scarf, Kibble, and others. <br><br> <strong>Speaker:</strong> Matt Yonkovit<br> Matt Yonkovit is the Head of Open Source Strategy and Growth ( The HOSS!) at Scarf. He is a passionate open source professional with over 20 years of experience, where he has made a significant impact at companies like Percona, MySQL, StreamNative, Mattermost, and now Scarf. As a long-time veteran in the industry, Matt’s passion lies in building sustainable open source businesses and bridging the gap between community and business objectives.<br>With a unique ability to engage both engineers and business professionals, Matt aims to make business topics approachable and appealing to those in the open source space. He wants to make engineers and open source professionals not cringe when thinking or talking about business topics. His focus on linking both technical innovation and business growth has played a crucial role in the success of the organizations he has been part of.<br>Matt has held roles across the technical and leadership spectrum at open source companies including vp of services, chief experience officer, chief customer officer, and now the HOSS. He is the cohost of the Hacking Open Source Business Podcast.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SY005"><strong>Asking for Money Should Not Make you Feel Slimey: The Common Ways People Fund Open Source.</strong><br> GitHub recently posted a blog highlighting how since 2019 they have helped facilitate 33M in funds for open source projects. Over that same time period the top 100 open source startup raised of 1.4B in capital to fund their commercial offerings. It hardly seems fair does it? Are the classic funding models for open source working? or does something new have to be developed?<br>There are many different ways people fund their open source projects. Some are well known, some are obscure, and some elicit cringe-worthy responses. I will go through all the different ways open source projects and how companies fund themselves and make money. We will compare the pros and cons of each of the models. We will also explore the different trends and concerns plaguing the funding landscape. Join us as we discuss. <br><br> <strong>Speaker:</strong> Matt Yonkovit<br> Matt Yonkovit is the Head of Open Source Strategy and Growth ( The HOSS!) at Scarf. He is a passionate open source professional with over 20 years of experience, where he has made a significant impact at companies like Percona, MySQL, StreamNative, Mattermost, and now Scarf. As a long-time veteran in the industry, Matt’s passion lies in building sustainable open source businesses and bridging the gap between community and business objectives.<br>With a unique ability to engage both engineers and business professionals, Matt aims to make business topics approachable and appealing to those in the open source space. He wants to make engineers and open source professionals not cringe when thinking or talking about business topics. His focus on linking both technical innovation and business growth has played a crucial role in the success of the organizations he has been part of.<br>Matt has held roles across the technical and leadership spectrum at open source companies including vp of services, chief experience officer, chief customer officer, and now the HOSS. He is the cohost of the Hacking Open Source Business Podcast.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="SY006"><strong>Money doesn’t help much – Support projects with contributions</strong><br> In recent years I got asked a couple of times how you can support the Apache Cordova project or if you could pay contributors to do development work. Many people don’t know how to get into open source communities or how the development behind their favorite project works. I want to share my perspective as a maintainer of a project that could need more active contributors. In the ever-changing world of software projects need to stay up to date or otherwise will slowly die.<br>Just spending money is not always helping projects. Therefore, I advise everybody to have a critical look if they could spend some of their development resources on contributing to their critical dependencies. If you or some of your employees are enthusiastic about an open source project, your contributions are valuable for your company and the project. You will learn a lot about the project and become less reliant on others to solves issues quickly as well.<br>This talk should empathize that it’s important to invest in your open source dependencies. At the end I will give some practical tips to find and asses the critical projects and connect with open source communities. It’s important for me to encourage people and companies to think what they could give back to the open source community. I think many are willing to support their favorite projects, but struggle to get started. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_sustainability_niklasmerz-niklas-merz.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Niklas Merz<br> Apache Cordova PMC member, full-stack developer & open source enthusiast.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <h3>Tomcat and httpd Track</h3> <p><strong>Track Chairs:</strong> Jean-Frederic Clere, Christopher Schultz</p> <p id="TH001"><strong>Preparing web applications for Loom</strong><br> The initial implementation of the Servlet specification used blocking I/O. Over time, and to increase scalability, containers switched to non-blocking I/O internally and later the Servlet specification introduced the asynchronous API with associated access to non-blocking I/O for applications.<br>The latest development that aims to provide further scalability improvements is Project Loom from the OpenJDK project. Loom aims to deliver features that support, amongst other things, easy-to-use, high-throughput, lightweight concurrency.<br>Using Tomcat as a basis, this session will start with a brief review of the history of the key scalability improvements that have taken place over the life of the Servlet specification before going on to examine what Loom has to offer for web applications built on the Servlet specification. <br>The possibilities for Loom will be examined both at the container level and at the application level. This will be supported with data generated by a range of experiments undertaken using Loom and Tomcat. While benchmarks can only ever provide guides to what you might expect for the performance of a real application, this session will provide you with the basis of what you need to determine what Loom might be able to offer for your applications and where to<br>start with your own performance testing so you can quantify those benefits. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_tomcat_and_httpd_mark_thomas_second-mark-thomas.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Mark Thomas<br> I have been an Tomcat committer since 2003. I initially worked on Tomcat in my free time but since 2008 I have been employed by SpringSource (now part of VMware) to work on Tomcat. I spend most of my time working on Tomcat but I also work on tc Server, VMware’s Servlet & JSP container based on Tomcat.<br>I am the release manager for Tomcat 11.0 where I try to release a new version every month. I am currently focused on Tomcat 11 development which will support Jakarta EE 11. I am a committer for Eclipse Servlet, Server Pages, Expression Language and WebSocket.<br>Elsewhere at the ASF, I am a member of the ASF security and infrastructure teams and I am also on the Commons PMC.<br>I am a member of the ASF and served as a Director from 2016 to 2019. I have held the position of VP, Brand Management since February 2018.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH002"><strong>Tomcat 11 and Jakarta 11 Preview</strong><br> Development of Tomcat 11 is underway and is targetting Jakarta EE 11, which is due in 2024. With updates to Servlet 6.1, Pages 4.0, WebSocket 2.2 and Expression Language 6.0 and a minimum Java version of 21 there are lots of changes both planned and already implemented for Tomcat 11. This session will review the changes in each of the specifications including new features to be introduced, changes to existing features and considerations when upgrading from previous Tomcat / Jakarta EE versions. With a few months to go before the specifications are finalised early in 2024, this is an opportunity to provide your views on which additional changes should be included. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_tomcat_and_httpd_mark_thomas_first-mark-thomas.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Mark Thomas<br> I have been an Tomcat committer since 2003. I initially worked on Tomcat in my free time but since 2008 I have been employed by SpringSource (now part of VMware) to work on Tomcat. I spend most of my time working on Tomcat but I also work on tc Server, VMware’s Servlet & JSP container based on Tomcat.<br>I am the release manager for Tomcat 11.0 where I try to release a new version every month. I am currently focused on Tomcat 11 development which will support Jakarta EE 11. I am a committer for Eclipse Servlet, Server Pages, Expression Language and WebSocket.<br>Elsewhere at the ASF, I am a member of the ASF security and infrastructure teams and I am also on the Commons PMC.<br>I am a member of the ASF and served as a Director from 2016 to 2019. I have held the position of VP, Brand Management since February 2018.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH003"><strong>Why Apache Tomcat Matters for Jakarta EE</strong><br> Almost every developer in the industry has, or is using Apache Tomcat in some capacity, either as a standalone web server or embedded by frameworks such as Spring Boot.<br>Apache Tomcat implements several of the Jakarta EE specifications such as Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations, and Jakarta Authentication. When the Jakarta EE namespace switched from javax.* to jakarta.* in Jakarta EE 9, it became very apparent to the industry mostly because of the wide adoption of Apache Tomcat.<br>Apache TomEE extends Apache Tomcat with all the APIs required for Jakarta EE Web Profile and is one of the Certified Compatible Products of Jakarta EE Web Profile 9.1.<br>In this talk, I will use Apache Tomcat and Apache TomEE as examples of how the establishment of Jakarta EE at Eclipse Foundation opened up the ecosystem and enabled Apache projects once again to be able to certify as compatible implementations. And, of course, there will be code in the form of live demos. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_tomcat_grimstad-ivar-grimstad.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Ivar Grimstad<br> Ivar Grimstad is the Jakarta EE Developer Advocate at Eclipse Foundation. He is a Java Champion and JUG Leader based in Sweden.<br>Besides advocating the Jakarta EE technologies, Ivar is contributing to the Jakarta EE specifications as well as being the PMC Lead for Eclipse Enterprise for Java (EE4J). He is also one of the specification leads for Jakarta MVC and represents Eclipse Foundation on the JCP Executive Committee.<br>Ivar is also involved in a wide range of other open-source projects and communities. He is a frequent speaker at International developer conferences.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH004"><strong>HTTP/3 where are we now? State of the art in our servers.</strong><br> As HTTP/3 looks ready we will look to where we are with it in our servers.<br>The "old" HTTP/2 protocol and the corresponding TLS/SSL are common to Traffic Server, HTTP Server and Tomcat.<br>The presentation will shortly explain the new protocol and look to different implementation of the prtocol.<br>Then the state of HTTP/3 in our 3 servers and how to implement HTTP/3 in them will be presented.<br>A demo configuration of each server supporting HTTP/3 will be run. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_tomcat_http2_http3-jean-frederic-clere.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jean-Frederic Clere<br> Jean-Frederic has spent more than 30 years writing client/server software.<br>His knowledges range from Cobol to Java, BS2000 to Linux and /390 to i386 but with preference to the later ;).<br>He is committer in Httpd and Tomcat and he likes complex projects where different languages and machines are involved.<br>Borne in France, Jean-Frederic lived in Barcelona (Spain) for 14 years.<br>Since May 2006 he lives in Neuchatel (Switzerland) where he works for RedHat on Tomcat, httpd and cloud/cluster related topics.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH005"><strong>Automating Web Application Deployment with Tomcat and Jenkins</strong><br> This session will discuss how to achieve Continuous Integration and Continuous Deployment (CI/CD) for web application using tomcat as a web server. Tomcat is a popular choice for deploying web applications as it is lightweight, easy to configure , and supports a wide range of Java EE technologies. There are many open source tools available for both automatic deployments and tomcat configuration management, including<br>popular options like Jenkins and GitLab.<br>In this presentation, we will be presenting Tomcat web server deployments using Jenkins. The content of this presentation will include but not limited to : <br>– Introduction to Tomcat and Jenkins<br>– What is CI/CD?<br>– benefits of using CI/CD with Tomcat<br>– Tomcat web server configuration <br>– Steps involved in configuring deployment pipeline <br>– Setting up Jenkins pipeline for web app deployment using Tomcat<br>– A walkthrough of a Tomcat deployment pipeline <br>– Best practices for deployment pipelines with Tomcat<br>– Future of CI/CD and tomcat<br>– Conclusion <br>Throught the presentation, We will focus on providing clear and easy to understand explanations rather than including complex and advanced details.<br> <strong>Speaker:</strong> Utsav Akruvala<br> Utsav Akruvala is a software developer and an open<br>source evangelist with expertise in DevOps, AWS,<br>Tomcat, Terraform, Jenkins etc.<br>Having hands-on experience with niche technologies,<br>belives that the challenging production releases<br>activities can be handled easily and effectively. mainly worked on various application software which are<br>developed using variety of open source technologies<br>like Jenkins, CICD integration, server management with<br>ansible, Tomcat etc.<br>Has experience working with large enterprise to<br>maintain their cloud solutions and is also an individual<br>open source contributor who supports other people who<br>are new to the community. <br><br> Nikhatshahin Ansari<br> Nikhatshahin Ansari is a software engineer and a open<br>source contributor.<br>A full stack developer who creates the dynamic<br>responsive webapps and windows application.<br>In addition to that also involved in open source<br>community.<br>Has wide range of experience with Dotnet, Jenkins, Tomcat, GitLab, Azure cloud etc.<br>With the current organization performing key role<br>by effectively working towards solving the bugs and<br>handling the critical situations during project live<br>releases.<br>Also part of open and free code development<br>communities like djangogirls and open source community.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH006"><strong>Panama: A case study with OpenSSL and Tomcat</strong><br> The presentation will focus on the use of the OpenSSL native library with Apache Tomcat.<br>It will show how the Panama API (Still as preview in Java 21) was leveraged to rewrite its integration using only Java code.<br>Panama allows us to retain the performance and capabilities of the existing tomcat-native JNI code without writing C code. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_tomcat_panama-jean-frederic-clere.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Jean-Frederic Clere<br> Jean-Frederic has spent more than 30 years writing client/server software.<br>His knowledges range from Cobol to Java, BS2000 to Linux and /390 to i386 but with preference to the later ;).<br>He is committer in Httpd and Tomcat and he likes complex projects where different languages and machines are involved.<br>Borne in France, Jean-Frederic lived in Barcelona (Spain) for 14 years.<br>Since May 2006 he lives in Neuchatel (Switzerland) where he works for RedHat on Tomcat, httpd and cloud/cluster related topics.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH007"><strong>Let’s encrypt Apache Tomcat</strong><br> The Let’s Encrypt initiative has changed the landscape for online security. The capital cost of cryptographic security for every web site worldwide has been lowered from potentially thousands of dollars per year to zero. One of the trade-offs for the availability of these free certificates is that they are short-lived, making automated deployment of certificates an essential piece of any deployment plan. Let’s Encrypt supports Apache httpd out of the box for single-command renewal and deployment on a single host, while with Tomcat it’s more complicated. We’ll be discussing how Let’s Encrypt handles domain-validated authentication, initial requests, and renewals, and how to automate the deployment process in your Tomcat-based environment with minimal downtime. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sat_webserver_schultz_lets-encrypt-apache-tomcat-christopher-schultz.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Christopher Schultz<br> Christopher Schultz is the CTO of CHADIS, Inc. where he leads a small team of engineers to build server-side healthcare-related software in Java. Chris is an ASF Member active in the Apache Tomcat and Velocity communities as well as a committer on both projects, and Tomcat PMC and security team member. He has attended and spoken at several previous ApacheCon events and helped to organize an Apache BarCamp in the Washington, DC area.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> <p id="TH008"><strong>From Spring Boot 2 to Spring Boot 3 with the Help of Apache Tomcat and More</strong><br> Jakarta EE 9 changed its package namespace from javax.* to jakarta.*. This may sound like a trivial change that mostly affects Jakarta EE. So, why should Spring developers care? As it turns out, the namespace changes ripple throughout the entire Java ecosystem. And Spring is no exception. Spring Framework 6 and Spring Boot 3 raised their baseline to Jakarta EE 9 API level which is supported by Tomcat 10 and Jetty 11 for example.<br> Attending this session will teach you how to make this migration as smooth as possible. A live coding demo will take you through the steps involved, and point out where to pay special attention.<br> We will also briefly examine some of the changes planned for Jakarta EE 11 that will prepare you for what to expect in future versions of Spring. (<a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_extrasesion_grimstad-ivar-grimstad.pdf" target="_blank" rel="noopener">Slides</a>)<br><br> <strong>Speaker:</strong> Ivar Grimstad<br> Ivar Grimstad is the Jakarta EE Developer Advocate at Eclipse Foundation. He is a Java Champion and JUG Leader based in Sweden.<br> Besides advocating the Jakarta EE technologies, Ivar is contributing to the Jakarta EE specifications as well as being the PMC Lead for Eclipse Enterprise for Java (EE4J). He is also one of the specification leads for Jakarta MVC and represents Eclipse Foundation on the JCP Executive Committee.<br> Ivar is also involved in a wide range of other open-source projects and communities. He is a frequent speaker at International developer conferences.<br><a href="/schedule/">Back to Schedule</a></a><hr><br></p> </div> </main> <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"> <div class="wp-block-comments-query-loop"> </div> </div> <footer class="site-footer-container wp-block-template-part"> <div style="height:70px" aria-hidden="true" class="wp-block-spacer"></div> <div class="wp-block-group is-layout-constrained wp-block-group-is-layout-constrained"> <div class="wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow" style="padding-top:80px;padding-bottom:30px"> <hr class="wp-block-separator has-alpha-channel-opacity"/> <p class="has-text-align-center">Community over Code operates under the terms of <a href="http://apache.org/foundation/policies/conduct">The ASF Code of Conduct</a>.</p> <p class="has-text-align-center">Copyright © The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p> <p class="has-text-align-center"><a href="https://www.apache.org/foundation/policies/privacy.html">Privacy policy</a></p> </div> </div> <div style="height:120px" aria-hidden="true" class="wp-block-spacer"></div> </footer> </div> <!-- wpcom_wp_footer --> <script defer id="bilmur" data-customproperties="{"woo_active":"0"}" data-provider="wordpress.com" data-service="atomic" src="https://s0.wp.com/wp-content/js/bilmur.min.js?m=202508"></script> <script id="custom-content-types-data-js-before"> var CUSTOM_CONTENT_TYPE__INITIAL_STATE; typeof CUSTOM_CONTENT_TYPE__INITIAL_STATE === "object" || (CUSTOM_CONTENT_TYPE__INITIAL_STATE = JSON.parse(decodeURIComponent("%7B%22active%22%3Atrue%2C%22over_ride%22%3Afalse%7D"))); </script> <script type='text/javascript' src='https://communityovercode.org/wp-includes/js/comment-reply.min.js?m=1725395770'></script> <script id="wp-block-template-skip-link-js-after"> ( function() { var skipLinkTarget = document.querySelector( 'main' ), sibling, skipLinkTargetID, skipLink; // Early exit if a skip-link target can't be located. if ( ! skipLinkTarget ) { return; } /* * Get the site wrapper. * The skip-link will be injected in the beginning of it. */ sibling = document.querySelector( '.wp-site-blocks' ); // Early exit if the root element was not found. if ( ! sibling ) { return; } // Get the skip-link target's ID, and generate one if it doesn't exist. skipLinkTargetID = skipLinkTarget.id; if ( ! skipLinkTargetID ) { skipLinkTargetID = 'wp--skip-link--target'; skipLinkTarget.id = skipLinkTargetID; } // Create the skip link. skipLink = document.createElement( 'a' ); skipLink.classList.add( 'skip-link', 'screen-reader-text' ); skipLink.href = '#' + skipLinkTargetID; skipLink.innerHTML = 'Skip to content'; // Inject the skip link. sibling.parentElement.insertBefore( skipLink, sibling ); }() ); </script> <script src="https://stats.wp.com/e-202508.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script id="jetpack-stats-js-after"> _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"215734299\",\"post\":\"514\",\"tz\":\"-5\",\"srv\":\"communityovercode.org\",\"hp\":\"atomic\",\"ac\":\"2\",\"amp\":\"0\",\"j\":\"1:14.4-a.5\"}") ]); _stq.push([ "clickTrackerInit", "215734299", "514" ]); </script> </body> </html>