diff --git a/content/ApacheCon/Gemfile b/content/ApacheCon/Gemfile
new file mode 100644
index 0000000..b846263
--- /dev/null
+++ b/content/ApacheCon/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'asciidoctor-revealjs' # latest released version
diff --git a/content/ApacheCon/LICENSE b/content/ApacheCon/LICENSE
new file mode 100644
index 0000000..6d3b26f
--- /dev/null
+++ b/content/ApacheCon/LICENSE
@@ -0,0 +1,236 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+----------------------------------------------
+
+This product includes a modified version of this file:
+./libs/docinfo-hack/document.html.slim
+developed at https://github.com/asciidoctor/asciidoctor-reveal.js
+
+Available under an MIT license:
+
+The MIT License
+Copyright (C) 2012-2019 Olivier Bilodeau, Charles Moulliard, Dan Allen and the Asciidoctor Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Images in src/resources/images are available under a CC0 license and were
+obtained from https://pxhere.com. For the full text of
+the CC0 license please see ./licenses/CC0.txt
\ No newline at end of file
diff --git a/content/ApacheCon/NOTICE b/content/ApacheCon/NOTICE
new file mode 100644
index 0000000..eb1e9ac
--- /dev/null
+++ b/content/ApacheCon/NOTICE
@@ -0,0 +1,5 @@
+ASF and the Apache Way
+Copyright 2019 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/content/ApacheCon/README.md b/content/ApacheCon/README.md
new file mode 100644
index 0000000..d4a3599
--- /dev/null
+++ b/content/ApacheCon/README.md
@@ -0,0 +1,60 @@
+
+# ApacheCon Slides
+
+Slides for ApacheCon
+
+## Technology Used
+
+The slides are generated from [asciidoctor](https://asciidoctor.org) markup and displayed with [reveal.js](https://asciidoctor.org/docs/asciidoctor-revealjs/). This means the content can be kept under version control and exported to a number of formats other than HTML.
+
+## How to Build with Maven (recommended)
+
+To install the needed dependencies on OSX run:
+
+`install-deps.sh`
+
+Then run:
+
+`mvn clean compile`
+
+
+## How to Build with Ruby or Node (minimal support)
+
+It possisble to genrate the slides with other technologies, please see instructions at https://asciidoctor.org/docs/asciidoctor-revealjs/.
+
+For node install the dependacies:
+
+`npm i --save asciidoctor@^2.0 @asciidoctor/reveal.js`
+
+And generate the slides via:
+
+`node convert-slides.js`
+
+Some of the assets will need to be moved and the apachecon.css theme included in the HTML.
+
+## How to View the Slides (Maven)
+
+Once built, the generated slides can be found at:
+
+`target/generated-slides/index_en.html`
+
+Just open the `index_en.html` in a browser to view the slides.
+
+Some features require the slides to be viewed via a http/https url you can do this by running:
+
+`mvn jetty:run-exploded`
+
+And goto `http://127.0.0.1:8080/index_en.html` in a browser to view.
+
+If you add ?print-pdf at the end of the URL, you can then print the slide deck into a PDF document.
+
+## Helpful Key Shortcuts
+
+Some key shortcuts that may help you give a presentation:
+
+- Cursor keys and space can navigate the slides.
+- Press S will show speaker notes and a timer in a separate window.
+- Press F for full screen.
+- Press N for next slide or P for previous slide.
+- Press O (for overview) will show a slide map / overview.
+- Press B will black the screen.
diff --git a/content/ApacheCon/convert-slides.js b/content/ApacheCon/convert-slides.js
new file mode 100644
index 0000000..d3a6e03
--- /dev/null
+++ b/content/ApacheCon/convert-slides.js
@@ -0,0 +1,8 @@
+// Load Asciidoctor.js and the reveal.js converter
+var asciidoctor = require('@asciidoctor/core')()
+var asciidoctorRevealjs = require('@asciidoctor/reveal.js')
+asciidoctorRevealjs.register()
+
+// Convert the document using the reveal.js converter
+var options = { safe: 'safe', backend: 'revealjs' }
+asciidoctor.convertFile('src/main/asciidoc/index_en.adoc', options) 
diff --git a/content/ApacheCon/install-deps.sh b/content/ApacheCon/install-deps.sh
new file mode 100755
index 0000000..c8702c6
--- /dev/null
+++ b/content/ApacheCon/install-deps.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+cd libs
+mkdir third-party
+cd third-party
+
+# Install ERD
+git clone git://github.com/BurntSushi/erd
+cd erd
+stack init
+stack build --system-ghc
+
+# Install Mermaid
+npm install mermaid.cli
+
+# Install PhantomJS
+wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip
+unzip phantomjs-2.1.1-macosx.zip
+
+# SVGBob
+#cargo install svgbob_cli
+
+# Syntrax
+pip install --upgrade syntrax
+pip install pycairo
+brew install pygobject3
+
+# Vega
+npm install vega
+
+# ImageMagic
+#wget https://imagemagick.org/download/binaries/ImageMagick-x86_64-apple-darwin17.7.0.tar.gz
+#tar xvzf ImageMagick-x86_64-apple-darwin17.7.0.tar.gz
diff --git a/content/ApacheCon/libs/docinfo-hack/document.html.slim b/content/ApacheCon/libs/docinfo-hack/document.html.slim
new file mode 100644
index 0000000..ec9e3cf
--- /dev/null
+++ b/content/ApacheCon/libs/docinfo-hack/document.html.slim
@@ -0,0 +1,214 @@
+doctype 5
+html lang=(attr :lang, 'en' unless attr? :nolang)
+  head
+    meta charset="utf-8"
+    - revealjsdir = (attr :revealjsdir, 'reveal.js')
+    - unless (asset_uri_scheme = (attr 'asset-uri-scheme', 'https')).empty?
+      - asset_uri_scheme = %(#{asset_uri_scheme}:)
+    - cdn_base = %(#{asset_uri_scheme}//cdnjs.cloudflare.com/ajax/libs)
+    - [:description, :keywords, :author, :copyright].each do |key|
+      - if attr? key
+        meta name=key content=(attr key)
+    title=(doctitle sanitize: true, use_fallback: true)
+    meta content="yes" name="apple-mobile-web-app-capable"
+    meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"
+    meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"
+    link href="#{revealjsdir}/css/reveal.css" rel="stylesheet"
+    link href="css/c3.min.css" rel="stylesheet"
+    script src="js/d3.min.js" charset="utf-8"
+    script src="js/c3.min.js"
+    / Default theme required even when using custom theme
+    - if attr? :revealjs_customtheme
+      link rel='stylesheet' href=(attr :revealjs_customtheme) id='theme'
+    - else
+      link rel='stylesheet' href='#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css' id='theme'
+    - if attr? :icons, 'font'
+      - if attr? 'iconfont-remote'
+        link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/4.3.0/css/font-awesome.min.css))
+      - else
+        link rel='stylesheet' href=(normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false)
+    - if attr? :stem
+      - eqnums_val = (attr 'eqnums', 'none')
+      - eqnums_val = 'AMS' if eqnums_val == ''
+      - eqnums_opt = %( equationNumbers: { autoNumber: "#{eqnums_val}" } )
+      script type='text/x-mathjax-config'
+        | MathJax.Hub.Config({
+          tex2jax: {
+            inlineMath: [#{Asciidoctor::INLINE_MATH_DELIMITERS[:latexmath].to_s}],
+            displayMath: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:latexmath].to_s}],
+            ignoreClass: "nostem|nolatexmath"
+          },
+          asciimath2jax: {
+            delimiters: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:asciimath].to_s}],
+            ignoreClass: "nostem|noasciimath"
+          },
+          TeX: {#{eqnums_opt}}
+          });
+      script src='#{cdn_base}/mathjax/2.4.0/MathJax.js?config=TeX-MML-AM_HTMLorMML'
+    - case attr 'source-highlighter'
+    - when 'coderay'
+      - if (attr 'coderay-css', 'class') == 'class'
+        - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss)
+          link rel='stylesheet' href=normalize_web_path('asciidoctor-coderay.css', (attr :stylesdir, ''))
+        - else
+          style=Asciidoctor::Stylesheets.instance.coderay_stylesheet_data
+    - when 'pygments'
+      - if (attr 'pygments-css', 'class') == 'class'
+        - if @safe >= Asciidoctor::SafeMode::SECURE || (attr? :linkcss)
+          link rel='stylesheet' href=normalize_web_path('asciidoctor-pygments.css', (attr :stylesdir, ''))
+        - else
+          style=Asciidoctor::Stylesheets.instance.pygments_stylesheet_data(attr 'pygments-style')
+    / For syntax highlighting
+    - if attr? 'highlightjs-theme'
+      link href=(attr 'highlightjs-theme') rel="stylesheet"
+    - else
+      link href="#{revealjsdir}/lib/css/zenburn.css" rel="stylesheet"
+    / If the query includes 'print-pdf', use the PDF print sheet
+    javascript:
+      var link = document.createElement( 'link' );
+      link.rel = 'stylesheet';
+      link.type = 'text/css';
+      link.href = window.location.search.match( /print-pdf/gi ) ? "#{revealjsdir}/css/print/pdf.css" : "#{revealjsdir}/css/print/paper.css";
+      document.getElementsByTagName( 'head' )[0].appendChild( link );
+    /[if lt IE 9]
+      <script src="#{revealjsdir}/lib/js/html5shiv.js"></script>
+    - unless (docinfo_content = docinfo :header, '.html').empty?
+      =docinfo_content
+    - if attr? :customcss
+      link rel='stylesheet' href=((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss)
+  body
+    .header
+      .left
+      .right
+    .reveal
+      / Any section element inside of this container is displayed as a slide
+      .slides
+        - unless notitle || !has_header?
+          - bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil
+          - bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil
+          section.title(class = role
+            data-state='title'
+            data-transition=(attr 'title-slide-transition')
+            data-transition-speed=(attr 'title-slide-transition-speed')
+            data-background=(attr 'title-slide-background')
+            data-background-size=(attr 'title-slide-background-size')
+            data-background-image=bg_image
+            data-background-video=bg_video
+            data-background-video-loop=(attr 'title-slide-background-video-loop')
+            data-background-video-muted=(attr 'title-slide-background-video-muted')
+            data-background-iframe=(attr 'title-slide-background-iframe')
+            data-background-color=(attr 'title-slide-background-color')
+            data-background-repeat=(attr 'title-slide-background-repeat')
+            data-background-position=(attr 'title-slide-background-position')
+            data-background-transition=(attr 'title-slide-background-transition'))
+            - if (_title_obj = doctitle partition: true, use_fallback: true).subtitle?
+              h1=slice_text _title_obj.title, (_slice = header.option? :slice)
+              h2=slice_text _title_obj.subtitle, _slice
+            - else
+              h1=@header.title
+            - preamble = @document.find_by context: :preamble
+            - unless preamble.nil? or preamble.length == 0
+              div.preamble=preamble.pop.content
+            - unless author.nil?
+              p.author: small=author
+        =content
+    .footer
+      .left
+      .right
+    script src="#{revealjsdir}/lib/js/head.min.js"
+    script src="#{revealjsdir}/js/reveal.js"
+    javascript:
+      // See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options
+      Reveal.initialize({
+        // Display controls in the bottom right corner
+        controls: #{to_boolean(attr 'revealjs_controls', true)},
+        // Display a presentation progress bar
+        progress: #{to_boolean(attr 'revealjs_progress', true)},
+        // Set a per-slide timing for speaker notes, null means none
+        defaultTiming: #{attr 'revealjs_defaultTiming', 'null'},
+        // Display the page number of the current slide
+        slideNumber: #{to_boolean(attr 'revealjs_slidenumber', false)},
+        // Push each slide change to the browser history
+        history: #{to_boolean(attr 'revealjs_history', false)},
+        // Enable keyboard shortcuts for navigation
+        keyboard: #{to_boolean(attr 'revealjs_keyboard', true)},
+        // Enable the slide overview mode
+        overview: #{to_boolean(attr 'revealjs_overview', true)},
+        // Vertical centering of slides
+        center: #{to_boolean(attr 'revealjs_center', true)},
+        // Enables touch navigation on devices with touch input
+        touch: #{to_boolean(attr 'revealjs_touch', true)},
+        // Loop the presentation
+        loop: #{to_boolean(attr 'revealjs_loop', false)},
+        // Change the presentation direction to be RTL
+        rtl: #{to_boolean(attr 'revealjs_rtl', false)},
+        // Randomizes the order of slides each time the presentation loads
+        shuffle: #{to_boolean(attr 'revealjs_shuffle', false)},
+        // Turns fragments on and off globally
+        fragments: #{to_boolean(attr 'revealjs_fragments', true)},
+        // Flags if the presentation is running in an embedded mode,
+        // i.e. contained within a limited portion of the screen
+        embedded: #{to_boolean(attr 'revealjs_embedded', false)},
+        // Flags if we should show a help overlay when the questionmark
+        // key is pressed
+        help: #{to_boolean(attr 'revealjs_help', true)},
+        // Flags if speaker notes should be visible to all viewers
+        showNotes: #{to_boolean(attr 'revealjs_showNotes', false)},
+        // Global override for autolaying embedded media (video/audio/iframe)
+        // - null: Media will only autoplay if data-autoplay is present
+        // - true: All media will autoplay, regardless of individual setting
+        // - false: No media will autoplay, regardless of individual setting
+        autoPlayMedia: #{attr 'revealjs_autoPlayMedia', 'null'},
+        // Number of milliseconds between automatically proceeding to the
+        // next slide, disabled when set to 0, this value can be overwritten
+        // by using a data-autoslide attribute on your slides
+        autoSlide: #{attr 'revealjs_autoslide', 0},
+        // Stop auto-sliding after user input
+        autoSlideStoppable: #{to_boolean(attr 'revealjs_autoslidestoppable', true)},
+        // Enable slide navigation via mouse wheel
+        mouseWheel: #{to_boolean(attr 'revealjs_mousewheel', false)},
+        // Hides the address bar on mobile devices
+        hideAddressBar: #{to_boolean(attr 'revealjs_hideaddressbar', true)},
+        // Opens links in an iframe preview overlay
+        previewLinks: #{to_boolean(attr 'revealjs_previewlinks', false)},
+        // Theme (e.g., beige, black, league, night, serif, simple, sky, solarized, white)
+        // NOTE setting the theme in the config no longer works in reveal.js 3.x
+        //theme: Reveal.getQueryHash().theme || '#{attr 'revealjs_theme', 'black'}',
+        // Transition style (e.g., none, fade, slide, convex, concave, zoom)
+        transition: Reveal.getQueryHash().transition || '#{attr 'revealjs_transition', 'slide'}',
+        // Transition speed (e.g., default, fast, slow)
+        transitionSpeed: '#{attr 'revealjs_transitionspeed', 'default'}',
+        // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom)
+        backgroundTransition: '#{attr 'revealjs_backgroundtransition', 'fade'}',
+        // Number of slides away from the current that are visible
+        viewDistance: #{attr 'revealjs_viewdistance', 3},
+        // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'")
+        parallaxBackgroundImage: '#{attr 'revealjs_parallaxbackgroundimage', ''}',
+        // Parallax background size in CSS syntax (e.g., "2100px 900px")
+        parallaxBackgroundSize: '#{attr 'revealjs_parallaxbackgroundsize', ''}',
+
+        // The "normal" size of the presentation, aspect ratio will be preserved
+        // when the presentation is scaled to fit different resolutions. Can be
+        // specified using percentage units.
+        width: #{attr 'revealjs_width', 960},
+        height: #{attr 'revealjs_height', 700},
+
+        // Factor of the display size that should remain empty around the content
+        margin: #{attr 'revealjs_margin', 0.1},
+
+        // Bounds for smallest/largest possible scale to apply to content
+        minScale: #{attr 'revealjs_minscale', 0.2},
+        maxScale: #{attr 'revealjs_maxscale', 1.5},
+
+        // Optional libraries used to extend on reveal.js
+        dependencies: [
+            { src: '#{revealjsdir}/lib/js/classList.js', condition: function() { return !document.body.classList; } },
+            { src: '#{revealjsdir}/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
+            { src: '#{revealjsdir}/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
+            #{(attr? 'source-highlighter', 'highlightjs') ? "{ src: '#{revealjsdir}/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }," : nil}
+            { src: '#{revealjsdir}/plugin/zoom-js/zoom.js', async: true },
+            { src: '#{revealjsdir}/plugin/notes/notes.js', async: true }
+        ]
+      });
+    - unless (docinfo_content = (docinfo :footer, '.html')).empty?
+      =docinfo_content
diff --git a/content/ApacheCon/libs/third-party/erd b/content/ApacheCon/libs/third-party/erd
new file mode 160000
index 0000000..e416dd6
--- /dev/null
+++ b/content/ApacheCon/libs/third-party/erd
@@ -0,0 +1 @@
+Subproject commit e416dd6721b7e9ced0869eaf8197bdac1e10700f
diff --git a/content/ApacheCon/licenses/CC0.txt b/content/ApacheCon/licenses/CC0.txt
new file mode 100644
index 0000000..d83f02f
--- /dev/null
+++ b/content/ApacheCon/licenses/CC0.txt
@@ -0,0 +1,33 @@
+Creative Commons Legal Code
+
+CC0 1.0 Universal
+
+Official translations of this legal tool are available
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
+
+the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
+moral rights retained by the original author(s) and/or performer(s);
+publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
+rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
+rights protecting the extraction, dissemination, use and reuse of data in a Work;
+database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
+other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
+2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
+Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
+Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
+Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
\ No newline at end of file
diff --git a/content/ApacheCon/package.json b/content/ApacheCon/package.json
new file mode 100644
index 0000000..58266ba
--- /dev/null
+++ b/content/ApacheCon/package.json
@@ -0,0 +1,16 @@
+{
+  "name": "ApacheCon",
+  "version": "1.0.0",
+  "description": "Slides for ApacheCon",
+  "main": "reveal.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "@asciidoctor/reveal.js": "^3.1.0",
+    "asciidoctor": "^2.1.0"
+  }
+}
diff --git a/content/ApacheCon/pom.xml b/content/ApacheCon/pom.xml
new file mode 100644
index 0000000..8a68a54
--- /dev/null
+++ b/content/ApacheCon/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+
+   <parent>
+       <groupId>org.apache.training</groupId>
+       <artifactId>content-master-pom</artifactId>
+       <version>1.0.0-SNAPSHOT</version>
+   </parent>
+   
+    <groupId>org.apache.training</groupId>
+    <artifactId>Apache-Con-Slides</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+
+    <name>ApacheCon slides</name>
+    <description>Slides for ApacheCon</description>
+
+    <properties>
+        <project.main.contentfile>index_en</project.main.contentfile>
+        <project.main.theme>apachecon</project.main.theme>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/content/ApacheCon/src/main/asciidoc/index_en.adoc b/content/ApacheCon/src/main/asciidoc/index_en.adoc
new file mode 100644
index 0000000..61e6e7d
--- /dev/null
+++ b/content/ApacheCon/src/main/asciidoc/index_en.adoc
@@ -0,0 +1,203 @@
+////
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+////
+
+:description: description
+:keywords: keywords
+:author: Your name
+:talk: This is where your talk title goes
+:conference: APACHECON @Home
+:conference_eu: APACHECON EU
+:conference_na: APACHECON NA
+:conference_home: APACHECON @Home
+:dates: Spt. 29th - Oct. 1st
+:year: 2020
+
+[%notitle]
+== {talk}
+
+[.leftlogo]
+image:ApacheConAtHome.png[width=50%]
+
+[.righttitle]
+--
+{talk}
+
+{author}
+--
+
+[.conferenceName]
+{conference_home} +
+{dates}
+
+[.year]
+{year}
+
+[%notitle]
+== {talk}
+image::AtHomeSpiceRack.jpg[canvas]
+
+[.centered]
+--
+{talk}
+
+'''
+
+{author}
+--
+
+[.conferenceName]
+{conference_home} +
+{dates}
+
+[.year]
+{year}
+
+[%notitle]
+== {talk}
+image::AtHomeDesktop.jpg[canvas]
+
+[.centered]
+--
+{talk}
+
+'''
+
+{author}
+--
+
+[.conferenceName]
+{conference_home} +
+{dates}
+
+[.year]
+{year}
+
+[%notitle]
+== {talk}
+image::AtHomeDesktopII.jpg[canvas]
+
+[.centered]
+--
+{talk}
+
+'''
+
+{author}
+--
+
+[.conferenceName]
+{conference_home} +
+{dates}
+
+[.year]
+{year}
+
+[%notitle]
+== {talk}
+image::AtHomeOutside.jpg[canvas]
+
+[.centered]
+--
+{talk}
+
+'''
+
+{author}
+--
+
+[.conferenceName]
+{conference_home} +
+{dates}
+
+[.year]
+{year}
+
+== Simple Slide
+* one
+* two
+* three
+
+[.notes]
+--
+Speaker notes go here
+--
+
+== Sub Points
+* one
+** and this
+** and more
+* two
+* three
+
+
+== Styles and Custom Styles
+Text can be **bold**, __italic__, [.big]#big# or [.small]#small#
+
+== Image
+image::ApacheConAtHome.png[]
+
+== Two Columns
+[.twocolumns]
+--
+* one
+* two
+* three
+
+image::ApacheConAtHome.png[]
+--
+
+== Command Line
+monospace text - find and copy all the images! +
+`find . -name "*.jpg" -exec cp {} images \;`
+
+== Java Code
+
+[source,java]
+----
+public class HelloWorld {
+
+    public static void main(String[] args) {
+        System.out.println("Hello, World");
+    }
+}
+----
+
+
+== Optional Slides
+Press down arrow to see the optional slide.
+
+=== Optional Slide
+This is an optional slide.
+
+== Quote
+[quote, Albert Einstein]
+A person who never made a mistake never tried anything new.
+
+== Passthrough
+Anything in a passthrough  is passed to the output unprocessed so you can include raw HTML and Javascript.
+
+++++
+<p>This is a <b>HTML</b> paragraph</p>
+++++
+
+
+== Apache Training Project
+
+These slides are part of the Apache Training project.
+https://training.apache.org
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConAtHome.png b/content/ApacheCon/src/main/resources/images/ApacheConAtHome.png
new file mode 100644
index 0000000..e8d5e41
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConAtHome.png
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConAtHomeLogo.png b/content/ApacheCon/src/main/resources/images/ApacheConAtHomeLogo.png
new file mode 100644
index 0000000..545b1a6
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConAtHomeLogo.png
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConEULogo.png b/content/ApacheCon/src/main/resources/images/ApacheConEULogo.png
new file mode 100644
index 0000000..8d4676a
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConEULogo.png
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConEurope.png b/content/ApacheCon/src/main/resources/images/ApacheConEurope.png
new file mode 100644
index 0000000..5866e33
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConEurope.png
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConNA.jpg b/content/ApacheCon/src/main/resources/images/ApacheConNA.jpg
new file mode 100644
index 0000000..5683cbb
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConNA.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheConNALogo.png b/content/ApacheCon/src/main/resources/images/ApacheConNALogo.png
new file mode 100644
index 0000000..545b1a6
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheConNALogo.png
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/ApacheCon_bg.jpg b/content/ApacheCon/src/main/resources/images/ApacheCon_bg.jpg
new file mode 100644
index 0000000..1d57104
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/ApacheCon_bg.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/AtHomeDesktop.jpg b/content/ApacheCon/src/main/resources/images/AtHomeDesktop.jpg
new file mode 100644
index 0000000..fa3486a
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/AtHomeDesktop.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/AtHomeDesktopII.jpg b/content/ApacheCon/src/main/resources/images/AtHomeDesktopII.jpg
new file mode 100644
index 0000000..3fa6468
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/AtHomeDesktopII.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/AtHomeOutside.jpg b/content/ApacheCon/src/main/resources/images/AtHomeOutside.jpg
new file mode 100644
index 0000000..235de1e
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/AtHomeOutside.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/AtHomeSpiceRack.jpg b/content/ApacheCon/src/main/resources/images/AtHomeSpiceRack.jpg
new file mode 100644
index 0000000..d154698
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/AtHomeSpiceRack.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/NewOrleans.jpg b/content/ApacheCon/src/main/resources/images/NewOrleans.jpg
new file mode 100644
index 0000000..5c3d1bc
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/NewOrleans.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/NewOrleansII.jpg b/content/ApacheCon/src/main/resources/images/NewOrleansII.jpg
new file mode 100644
index 0000000..5a82e47
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/NewOrleansII.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/NewOrleansIII.jpg b/content/ApacheCon/src/main/resources/images/NewOrleansIII.jpg
new file mode 100644
index 0000000..533b5cb
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/NewOrleansIII.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/NewOrleansIV.jpg b/content/ApacheCon/src/main/resources/images/NewOrleansIV.jpg
new file mode 100644
index 0000000..81bf547
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/NewOrleansIV.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/communityovercode.jpg b/content/ApacheCon/src/main/resources/images/communityovercode.jpg
new file mode 100644
index 0000000..183ade3
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/communityovercode.jpg
Binary files differ
diff --git a/content/ApacheCon/src/main/resources/images/favicon.ico b/content/ApacheCon/src/main/resources/images/favicon.ico
new file mode 100644
index 0000000..b6b6c2c
--- /dev/null
+++ b/content/ApacheCon/src/main/resources/images/favicon.ico
Binary files differ
diff --git a/content/ApacheCon/src/main/theme/apachecon.css b/content/ApacheCon/src/main/theme/apachecon.css
new file mode 100644
index 0000000..3dc4326
--- /dev/null
+++ b/content/ApacheCon/src/main/theme/apachecon.css
@@ -0,0 +1,481 @@
+/*
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+*/
+
+section.has-light-background,
+section.has-light-background h1,
+section.has-light-background h2,
+section.has-light-background h3,
+section.has-light-background h4,
+section.has-light-background h5,
+section.has-light-background h6 {
+  color: #FFF;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background-size: cover;
+  background-color: #FFF;
+}
+
+.reveal {
+  font-family: 'Montserrat', sans-serif;
+  font-size: 34px;
+  font-weight: normal;
+  color: #222;
+}
+
+::selection {
+  color: #222;
+  background: #bee4fd;
+  text-shadow: none;
+}
+
+.reveal .slides>section,
+.reveal .slides>section>section {
+  line-height: 1.3;
+  font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #000;
+  font-family: Futura, "Trebuchet MS", Arial, sans-serif;
+  font-weight: 600;
+  line-height: 1.2;
+  letter-spacing: normal;
+  text-shadow: none;
+  word-wrap: break-word;
+}
+
+.reveal h1 {
+  font-size: 2.5em;
+}
+
+.reveal h2 {
+  font-size: 1.6em;
+}
+
+.reveal h3 {
+  font-size: 1.3em;
+}
+
+.reveal h4 {
+  font-size: 1em;
+}
+
+.reveal h1 {
+  text-shadow: none;
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+  margin: 20px 0;
+  line-height: 1.3;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+  max-width: 95%;
+  max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+  font-weight: bold;
+}
+
+.reveal em {
+  font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+  display: inline-block;
+  text-align: left;
+  margin: 0 0 0 1em;
+}
+
+.reveal ol {
+  list-style-type: decimal;
+}
+
+.reveal ul {
+  list-style-type: disc;
+}
+
+.reveal ul ul {
+  list-style-type: square;
+}
+
+.reveal ul ul ul {
+  list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+  display: block;
+  margin-left: 40px;
+}
+
+.reveal dt {
+  font-weight: bold;
+}
+
+.reveal dd {
+  margin-left: 40px;
+}
+
+.reveal q,
+.reveal blockquote {
+  quotes: none;
+}
+
+.reveal blockquote {
+  display: block;
+  position: relative;
+  width: 70%;
+  margin: 20px auto;
+  padding: 5px;
+  font-style: italic;
+  background: rgba(0, 0, 0, 0.05);
+  box-shadow: 0 0 2px rgba(255, 255, 255, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+  display: inline-block;
+}
+
+.reveal q {
+  font-style: italic;
+}
+
+.reveal pre {
+  display: block;
+  position: relative;
+  width: 90%;
+  margin: 20px auto;
+  text-align: left;
+  font-size: 0.55em;
+  font-family: monospace;
+  line-height: 1.2em;
+  word-wrap: break-word;
+  box-shadow: 0 0 6px rgba(255, 255, 255, 0.3);
+}
+
+.reveal code {
+  font-family: monospace;
+}
+
+.reveal pre code {
+  display: block;
+  padding: 5px;
+  overflow: auto;
+  max-height: 400px;
+  word-wrap: normal;
+  background: #3F3F3F;
+  color: #DCDCDC;
+}
+
+.reveal table {
+  margin: auto;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.reveal table th {
+  font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+  text-align: left;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  border-bottom: 1px solid;
+}
+
+.reveal table th[align="center"],
+.reveal table td[align="center"] {
+  text-align: center;
+}
+
+.reveal table th[align="right"],
+.reveal table td[align="right"] {
+  text-align: right;
+}
+
+.reveal table tr:last-child td {
+  border-bottom: none;
+}
+
+.reveal sup {
+  vertical-align: super;
+}
+
+.reveal sub {
+  vertical-align: sub;
+}
+
+.reveal small {
+  display: inline-block;
+  font-size: 0.6em;
+  line-height: 1.2em;
+  vertical-align: top;
+}
+
+.reveal small * {
+  vertical-align: top;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+  color: #42affa;
+  text-decoration: none;
+  -webkit-transition: color 0.15s ease;
+  -moz-transition: color 0.15s ease;
+  transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+  color: #8dcffc;
+  text-shadow: none;
+  border: none;
+}
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #068ee9;
+}
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0;
+}
+
+.reveal a img {
+  -webkit-transition: all 0.15s linear;
+  -moz-transition: all 0.15s linear;
+  transition: all 0.15s linear;
+}
+
+.reveal a:hover img {
+  background: rgba(0, 0, 0, 0.2);
+  border-color: #42affa;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #42affa;
+}
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #42affa;
+}
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #42affa;
+}
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #42affa;
+}
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #8dcffc;
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(255, 255, 255, 0.2);
+}
+
+.reveal .progress span {
+  background: #42affa;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #42affa;
+}
+
+.reveal .red {
+  color: red;
+}
+
+/*********************************************
+ * Footer and Header
+ *********************************************/
+
+.header {
+  position: relative;
+}
+
+.footer {
+  position: relative;
+}
+
+.footer .left {
+  position: absolute;
+  left: 20px;
+  bottom: 5px;
+  height: 40px;
+}
+
+.footer .right {
+  position: absolute;
+  left: 80px;
+  bottom: 20px;
+  text-align: center;
+  width: 100%;
+}
+
+/* custom styles */
+.big {
+  font-size: 150%
+}
+.small {
+  font-size: 75%
+}
+
+.columns {
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  column-count: 2;
+}
+
+/* title slides */
+.fade {
+  position: fixed;
+  height: 100vh;
+  width: 75vw;
+  background: rgba(0, 0, 0, 0.28);
+}
+
+.conferenceName {
+  position: absolute;
+  right: 0;
+  bottom: 30px;
+  background: rgba(218, 112, 214, 0.9);
+  color: rgba(217, 217, 217, 1.0);
+  text-align: left;
+  font-size: 50%;
+  width: 40%;
+  padding: 0px 0px 0px 2em;
+}
+
+.year {
+  position: absolute;
+  right: 0.5em;
+  bottom: 0.2em;
+  color: rgba(217, 217, 217, 1.0);
+  font-size: 180%;
+}
+
+.centered {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  background: rgba(0, 32, 96, 0.9);
+  color: rgba(230, 230, 230, 1.0);
+  padding: 20px;
+}
+
+.leftlogo {
+  position: fixed;
+  left: -200px;
+  top: 40px;
+}
+
+.righttitle {
+  position: fixed;
+  right: 0;
+  bottom: 200px;
+  color: rgba(230, 230, 230, 1.0);
+  padding: 20px;
+  text-align: left;
+}
+
+.title {
+  font-size: 200%;
+}
+
+.present {
+  height: 100%
+}
+
+.big {
+  font-size: 150%
+}
+.small {
+  font-size: 75%
+}
+
+.twocolumns {
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  column-count: 2;
+}
diff --git a/content/ApacheWay/NavigatingASFIncubation/libs/docinfo-hack/document.html.slim b/content/ApacheWay/NavigatingASFIncubation/libs/docinfo-hack/document.html.slim
index 0957c64..ec9e3cf 100644
--- a/content/ApacheWay/NavigatingASFIncubation/libs/docinfo-hack/document.html.slim
+++ b/content/ApacheWay/NavigatingASFIncubation/libs/docinfo-hack/document.html.slim
@@ -114,7 +114,7 @@
         =content
     .footer
       .left
-      .right Licensed under the Apache License, Version 2.0.<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+      .right
     script src="#{revealjsdir}/lib/js/head.min.js"
     script src="#{revealjsdir}/js/reveal.js"
     javascript:
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/index.adoc b/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/index.adoc
index 2c818a3..5236d46 100644
--- a/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/index.adoc
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/index.adoc
@@ -18,17 +18,36 @@
 ////
 
 
-== Navigating the ASF Incubator Process
+== !
 :description: 45 minute talk on the Apache Way and navigating a project through the incubator
 :keywords: Apache Way,Incubator
-:author: Your Name
-:email: Your email
-:position: Your Job title
-{author} +
-{position} +
-{email} +
+:author: Justin Mclean
+:email: justin@classsoftware.com
+:position: V.P Incubator
+:talk: Navigating the ASF Incubator Process
+:conference: APACHECON EUROPE
+:dates: Oct. 22nd - 24th
+:year: 2019
 
-image::ApacheLogo.png[]
+image::apachecon_eu.jpg[canvas,size=contain]
+
+[.leftlogo]
+image:ApacheConEULogo.png[width=50%]
+
+[.righttitle]
+--
+{talk}
+
+{author}
+--
+
+
+[.conferenceName]
+{conference} +
+{dates}
+
+[.year]
+{year}
 
 == Who am I?
 include::aboutme.adoc[]
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/projectstats.adoc b/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/projectstats.adoc
index fbde0f7..c8880e7 100644
--- a/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/projectstats.adoc
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/asciidoc/projectstats.adoc
@@ -18,9 +18,9 @@
 
 ////
 
-:pmcs: 202
-:ipmcs: 300
+:pmcs: 204
+:ipmcs: 306
 :ipmc_chair: Justin Mclean
-:podlings: 50
-:members: 766
-:committers: 6901
+:podlings: 48
+:members: 765
+:committers: 7126
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEULogo.png b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEULogo.png
new file mode 100644
index 0000000..809a323
--- /dev/null
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEULogo.png
Binary files differ
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEurope.png b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEurope.png
new file mode 100644
index 0000000..5866e33
--- /dev/null
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/ApacheConEurope.png
Binary files differ
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/apachecon_eu.jpg b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/apachecon_eu.jpg
new file mode 100644
index 0000000..1d57104
--- /dev/null
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/resources/images/apachecon_eu.jpg
Binary files differ
diff --git a/content/ApacheWay/NavigatingASFIncubation/src/main/theme/apache.css b/content/ApacheWay/NavigatingASFIncubation/src/main/theme/apache.css
index 9f7df10..2c74089 100644
--- a/content/ApacheWay/NavigatingASFIncubation/src/main/theme/apache.css
+++ b/content/ApacheWay/NavigatingASFIncubation/src/main/theme/apache.css
@@ -36,7 +36,7 @@
 }
 
 .reveal {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-family: 'Montserrat', sans-serif;
   font-size: 34px;
   font-weight: normal;
   color: #222;
@@ -381,9 +381,9 @@
   position: absolute;
   left: 20px;
   bottom: 5px;
-  width: 40px;
-  height: 80px;
-  background-image: url(../../../images/small-feather.png);
+  width: 129px;
+  height: 40px;
+  background-image: url(../../../images/ApacheConEurope.png);
   background-repeat: no-repeat;
   background-size: contain;
 }
@@ -394,4 +394,79 @@
   bottom: 20px;
   text-align: center;
   width: 100%;
-}
\ No newline at end of file
+}
+
+/* custom styles */
+.big {
+  font-size: 150%
+}
+.small {
+  font-size: 75%
+}
+
+.columns {
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  column-count: 2;
+}
+
+/* title slides */
+.fade {
+  position: fixed;
+  height: 100vh;
+  width: 75vw;
+  background: rgba(0, 0, 0, 0.28);
+}
+
+.conferenceName {
+  position: absolute;
+  right: 0;
+  bottom: 30px;
+  background: rgba(218, 112, 214, 0.69);
+  color: rgba(217, 217, 217, 0.86);
+  text-align: left;
+  font-size: 50%;
+  width: 40%;
+  padding: 0px 0px 0px 2em;
+}
+
+.year {
+  position: absolute;
+  right: 0.5em;
+  bottom: 0.1em;
+  color: rgba(217, 217, 217, 0.86);
+  font-size: 200%;
+}
+
+.centered {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  background: rgba(0, 32, 96, 1.0);
+  color: rgba(230, 230, 230, 1.0);
+  padding: 20px;
+}
+
+.leftlogo {
+  position: fixed;
+  left: -200px;
+  top: 40px;
+}
+
+.righttitle {
+  position: fixed;
+  right: 0;
+  bottom: 200px;
+  color: rgba(230, 230, 230, 1.0);
+  padding: 20px;
+  text-align: left;
+}
+
+.title {
+  font-size: 200%;
+}
+
+.present {
+  height: 100%
+}
