You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ja...@apache.org on 2016/06/20 22:14:11 UTC

[2/5] incubator-beam-site git commit: Fixed HTML errors; added link and HTML tests via rake

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/2a61d388/content/feed.xml
----------------------------------------------------------------------
diff --git a/content/feed.xml b/content/feed.xml
index fcfa7b2..8dd4a36 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -6,9 +6,9 @@
 </description>
     <link>http://beam.incubator.apache.org/</link>
     <atom:link href="http://beam.incubator.apache.org/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Tue, 14 Jun 2016 18:36:16 -0700</pubDate>
-    <lastBuildDate>Tue, 14 Jun 2016 18:36:16 -0700</lastBuildDate>
-    <generator>Jekyll v2.5.0</generator>
+    <pubDate>Mon, 20 Jun 2016 14:17:33 -0700</pubDate>
+    <lastBuildDate>Mon, 20 Jun 2016 14:17:33 -0700</lastBuildDate>
+    <generator>Jekyll v3.1.6</generator>
     
       <item>
         <title>The first release of Apache Beam!</title>
@@ -59,20 +59,20 @@ to us via &lt;a href=&quot;/mailing_lists/&quot;&gt;user\u2019s mailing list&lt;/a&
 
 &lt;!--more--&gt;
 
-&lt;p&gt;Before we start, though, let\u2019s quickly talk about the execution of Beam programs and how this is relevant to today\u2019s post. A Beam pipeline can contain bounded and unbounded sources. If the pipeline only contains bounded sources it can be executed in a batch fashion, if it contains some unbounded sources it must be executed in a streaming fashion. When executing a Beam pipeline on Flink, you don\u2019t have to choose the execution mode. Internally, the Flink runner either translates the pipeline to a Flink &lt;code&gt;DataSet&lt;/code&gt; program or a &lt;code&gt;DataStream&lt;/code&gt; program, depending on whether unbounded sources are used in the pipeline. In the following, when we say \u201cBatch runner\u201d what we are really talking about is the Flink runner being in batch execution mode.&lt;/p&gt;
+&lt;p&gt;Before we start, though, let\u2019s quickly talk about the execution of Beam programs and how this is relevant to today\u2019s post. A Beam pipeline can contain bounded and unbounded sources. If the pipeline only contains bounded sources it can be executed in a batch fashion, if it contains some unbounded sources it must be executed in a streaming fashion. When executing a Beam pipeline on Flink, you don\u2019t have to choose the execution mode. Internally, the Flink runner either translates the pipeline to a Flink &lt;code class=&quot;highlighter-rouge&quot;&gt;DataSet&lt;/code&gt; program or a &lt;code class=&quot;highlighter-rouge&quot;&gt;DataStream&lt;/code&gt; program, depending on whether unbounded sources are used in the pipeline. In the following, when we say \u201cBatch runner\u201d what we are really talking about is the Flink runner being in batch execution mode.&lt;/p&gt;
 
 &lt;h2 id=&quot;what-does-this-mean-for-users&quot;&gt;What does this mean for users?&lt;/h2&gt;
 
 &lt;p&gt;Support for windowing was the last missing puzzle piece for making the Flink Batch runner compatible with the Beam model. With the latest change to the Batch runner users can now run any pipeline that only contains bounded sources and be certain that the results match those of the original reference-implementation runners that were provided by Google as part of the initial code drop coming from the Google Dataflow SDK.&lt;/p&gt;
 
-&lt;p&gt;The most obvious part of the change is that windows can now be assigned to elements and that the runner respects these windows for the &lt;code&gt;GroupByKey&lt;/code&gt; and &lt;code&gt;Combine&lt;/code&gt; operations. A not-so-obvious change concerns side-inputs. In the Beam model, side inputs respect windows; when a value of the main input is being processed only the side input that corresponds to the correct window is available to the processing function, the &lt;code&gt;DoFn&lt;/code&gt;.&lt;/p&gt;
+&lt;p&gt;The most obvious part of the change is that windows can now be assigned to elements and that the runner respects these windows for the &lt;code class=&quot;highlighter-rouge&quot;&gt;GroupByKey&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;Combine&lt;/code&gt; operations. A not-so-obvious change concerns side-inputs. In the Beam model, side inputs respect windows; when a value of the main input is being processed only the side input that corresponds to the correct window is available to the processing function, the &lt;code class=&quot;highlighter-rouge&quot;&gt;DoFn&lt;/code&gt;.&lt;/p&gt;
 
 &lt;p&gt;Getting side-input semantics right is an important milestone in it\u2019s own because it allows to use a big suite of unit tests for verifying the correctness of a runner implementation. These tests exercise every obscure detail of the Beam programming model and verify that the results produced by a runner match what you would expect from a correct implementation. In the suite, side inputs are used to compare the expected result to the actual result. With these tests being executed regularly we can now be more confident that the implementation produces correct results for user-specified pipelines.&lt;/p&gt;
 
 &lt;h2 id=&quot;under-the-hood&quot;&gt;Under the Hood&lt;/h2&gt;
-&lt;p&gt;The basis for the changes is the introduction of &lt;code&gt;WindowedValue&lt;/code&gt; in the generated Flink transformations. Before, a Beam &lt;code&gt;PCollection&amp;lt;T&amp;gt;&lt;/code&gt; would be transformed to a &lt;code&gt;DataSet&amp;lt;T&amp;gt;&lt;/code&gt;. Now, we instead create a &lt;code&gt;DataSet&amp;lt;WindowedValue&amp;lt;T&amp;gt;&amp;gt;&lt;/code&gt;. The &lt;code&gt;WindowedValue&amp;lt;T&amp;gt;&lt;/code&gt; stores meta data about the value, such as the timestamp and the windows to which it was assigned.&lt;/p&gt;
+&lt;p&gt;The basis for the changes is the introduction of &lt;code class=&quot;highlighter-rouge&quot;&gt;WindowedValue&lt;/code&gt; in the generated Flink transformations. Before, a Beam &lt;code class=&quot;highlighter-rouge&quot;&gt;PCollection&amp;lt;T&amp;gt;&lt;/code&gt; would be transformed to a &lt;code class=&quot;highlighter-rouge&quot;&gt;DataSet&amp;lt;T&amp;gt;&lt;/code&gt;. Now, we instead create a &lt;code class=&quot;highlighter-rouge&quot;&gt;DataSet&amp;lt;WindowedValue&amp;lt;T&amp;gt;&amp;gt;&lt;/code&gt;. The &lt;code class=&quot;highlighter-rouge&quot;&gt;WindowedValue&amp;lt;T&amp;gt;&lt;/code&gt; stores meta data about the value, such as the timestamp and the windows to which it was assigned.&lt;/p&gt;
 
-&lt;p&gt;With this basic change out of the way we just had to make sure that windows were respected for side inputs and that &lt;code&gt;Combine&lt;/code&gt; and &lt;code&gt;GroupByKey&lt;/code&gt; correctly handled windows. The tricky part there is the handling of merging windows such as session windows. For these we essentially emulate the behavior of a merging &lt;code&gt;WindowFn&lt;/code&gt; in our own code.&lt;/p&gt;
+&lt;p&gt;With this basic change out of the way we just had to make sure that windows were respected for side inputs and that &lt;code class=&quot;highlighter-rouge&quot;&gt;Combine&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;GroupByKey&lt;/code&gt; correctly handled windows. The tricky part there is the handling of merging windows such as session windows. For these we essentially emulate the behavior of a merging &lt;code class=&quot;highlighter-rouge&quot;&gt;WindowFn&lt;/code&gt; in our own code.&lt;/p&gt;
 
 &lt;p&gt;After we got side inputs working we could enable the aforementioned suite of tests to check how well the runner behaves with respect to the Beam model. As can be expected there were quite some discrepancies but we managed to resolve them all. In the process, we also slimmed down the runner implementation. For example, we removed all custom translations for sources and sinks and are now relying only on Beam code for these, thereby greatly reducing the maintenance overhead.&lt;/p&gt;
 
@@ -89,14 +89,14 @@ to us via &lt;a href=&quot;/mailing_lists/&quot;&gt;user\u2019s mailing list&lt;/a&
       </item>
     
       <item>
-        <title>Where's my PCollection.map()?</title>
+        <title>Where&#39;s my PCollection.map()?</title>
         <description>&lt;p&gt;Have you ever wondered why Beam has PTransforms for everything instead of having methods on PCollection? Take a look at the history that led to this (and other) design decisions.&lt;/p&gt;
 
 &lt;!--more--&gt;
 
 &lt;p&gt;Though Beam is relatively new, its design draws heavily on many years of experience with real-world pipelines. One of the primary inspirations is &lt;a href=&quot;http://research.google.com/pubs/pub35650.html&quot;&gt;FlumeJava&lt;/a&gt;, which is Google\u2019s internal successor to MapReduce first introduced in 2009.&lt;/p&gt;
 
-&lt;p&gt;The original FlumeJava API has methods like &lt;code&gt;count&lt;/code&gt; and &lt;code&gt;parallelDo&lt;/code&gt; on the PCollections. Though slightly more succinct, this approach has many disadvantages to extensibility. Every new user to FlumeJava wanted to add transforms, and adding them as methods to PCollection simply doesn\u2019t scale well. In contrast, a PCollection in Beam has a single &lt;code&gt;apply&lt;/code&gt; method which takes any PTransform as an argument.&lt;/p&gt;
+&lt;p&gt;The original FlumeJava API has methods like &lt;code class=&quot;highlighter-rouge&quot;&gt;count&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;parallelDo&lt;/code&gt; on the PCollections. Though slightly more succinct, this approach has many disadvantages to extensibility. Every new user to FlumeJava wanted to add transforms, and adding them as methods to PCollection simply doesn\u2019t scale well. In contrast, a PCollection in Beam has a single &lt;code class=&quot;highlighter-rouge&quot;&gt;apply&lt;/code&gt; method which takes any PTransform as an argument.&lt;/p&gt;
 
 &lt;table class=&quot;table&quot;&gt;
   &lt;tr&gt;
@@ -120,7 +120,7 @@ PCollection&amp;lt;O&amp;gt; output = input.apply(Count.perElement())
 &lt;p&gt;This is a more scalable approach for several reasons.&lt;/p&gt;
 
 &lt;h2 id=&quot;where-to-draw-the-line&quot;&gt;Where to draw the line?&lt;/h2&gt;
-&lt;p&gt;Adding methods to PCollection forces a line to be drawn between operations that are \u201cuseful\u201d enough to merit this special treatment and those that are not. It is easy to make the case for flat map, group by key, and combine per key. But what about filter? Count? Approximate count? Approximate quantiles? Most frequent? WriteToMyFavoriteSource? Going too far down this path leads to a single enormous class that contains nearly everything one could want to do. (FlumeJava\u2019s PCollection class is over 5000 lines long with around 70 distinct operations, and it could have been &lt;em&gt;much&lt;/em&gt; larger had we accepted every proposal.) Furthermore, since Java doesn\u2019t allow adding methods to a class, there is a sharp syntactic divide between those operations that are added to PCollection and those that aren\u2019t. A traditional way to share code is with a library of functions, but functions (in traditional languages like Java at least) are written prefix-style, which does
 n\u2019t mix well with the fluent builder style (e.g. &lt;code&gt;input.operation1().operation2().operation3()&lt;/code&gt; vs. &lt;code&gt;operation3(operation1(input).operation2())&lt;/code&gt;).&lt;/p&gt;
+&lt;p&gt;Adding methods to PCollection forces a line to be drawn between operations that are \u201cuseful\u201d enough to merit this special treatment and those that are not. It is easy to make the case for flat map, group by key, and combine per key. But what about filter? Count? Approximate count? Approximate quantiles? Most frequent? WriteToMyFavoriteSource? Going too far down this path leads to a single enormous class that contains nearly everything one could want to do. (FlumeJava\u2019s PCollection class is over 5000 lines long with around 70 distinct operations, and it could have been &lt;em&gt;much&lt;/em&gt; larger had we accepted every proposal.) Furthermore, since Java doesn\u2019t allow adding methods to a class, there is a sharp syntactic divide between those operations that are added to PCollection and those that aren\u2019t. A traditional way to share code is with a library of functions, but functions (in traditional languages like Java at least) are written prefix-style, which does
 n\u2019t mix well with the fluent builder style (e.g. &lt;code class=&quot;highlighter-rouge&quot;&gt;input.operation1().operation2().operation3()&lt;/code&gt; vs. &lt;code class=&quot;highlighter-rouge&quot;&gt;operation3(operation1(input).operation2())&lt;/code&gt;).&lt;/p&gt;
 
 &lt;p&gt;Instead in Beam we\u2019ve chosen a style that places all transforms\u2013whether they be primitive operations, composite operations bundled in the SDK, or part of an external library\u2013on equal footing. This also facilitates alternative implementations (which may even take different options) that are easily interchangeable.&lt;/p&gt;
 
@@ -148,14 +148,14 @@ PCollection&amp;lt;O&amp;gt; output = input
 &lt;/table&gt;
 
 &lt;h2 id=&quot;configurability&quot;&gt;Configurability&lt;/h2&gt;
-&lt;p&gt;It makes for a fluent style to let values (PCollections) be the objects passed around and manipulated (i.e. the handles to the deferred execution graph), but it is the operations themselves that need to be composable, configurable, and extendable. Using PCollection methods for the operations doesn\u2019t scale well here, especially in a language without default or keyword arguments. For example, a ParDo operation can have any number of side inputs and side outputs, or a write operation may have configurations dealing with encoding and compression. One option is to separate these out into multiple overloads or even methods, but that exacerbates the problems above. (FlumeJava evolved over a dozen overloads of the &lt;code&gt;parallelDo&lt;/code&gt; method!) Another option is to pass each method a configuration object that can be built up using more fluent idioms like the builder pattern, but at that point one might as well make the configuration object the operation itself, whic
 h is what Beam does.&lt;/p&gt;
+&lt;p&gt;It makes for a fluent style to let values (PCollections) be the objects passed around and manipulated (i.e. the handles to the deferred execution graph), but it is the operations themselves that need to be composable, configurable, and extendable. Using PCollection methods for the operations doesn\u2019t scale well here, especially in a language without default or keyword arguments. For example, a ParDo operation can have any number of side inputs and side outputs, or a write operation may have configurations dealing with encoding and compression. One option is to separate these out into multiple overloads or even methods, but that exacerbates the problems above. (FlumeJava evolved over a dozen overloads of the &lt;code class=&quot;highlighter-rouge&quot;&gt;parallelDo&lt;/code&gt; method!) Another option is to pass each method a configuration object that can be built up using more fluent idioms like the builder pattern, but at that point one might as well make the configurati
 on object the operation itself, which is what Beam does.&lt;/p&gt;
 
 &lt;h2 id=&quot;type-safety&quot;&gt;Type Safety&lt;/h2&gt;
-&lt;p&gt;Many operations can only be applied to collections whose elements are of a specific type. For example, the GroupByKey operation should only be applied to &lt;code&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt;s. In Java at least, it\u2019s not possible to restrict methods based on the element type parameter alone. In FlumeJava, this led us to add a &lt;code&gt;PTable&amp;lt;K, V&amp;gt;&lt;/code&gt; subclassing &lt;code&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt; to contain all the operations specific to PCollections of key-value pairs. This leads to the same question of which element types are special enough to merit being captured by PCollection subclasses. It is not very extensible for third parties and often requires manual downcasts/conversions (which can\u2019t be safely chained in Java) and special operations that produce these PCollection specializations.&lt;/p&gt;
+&lt;p&gt;Many operations can only be applied to collections whose elements are of a specific type. For example, the GroupByKey operation should only be applied to &lt;code class=&quot;highlighter-rouge&quot;&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt;s. In Java at least, it\u2019s not possible to restrict methods based on the element type parameter alone. In FlumeJava, this led us to add a &lt;code class=&quot;highlighter-rouge&quot;&gt;PTable&amp;lt;K, V&amp;gt;&lt;/code&gt; subclassing &lt;code class=&quot;highlighter-rouge&quot;&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt; to contain all the operations specific to PCollections of key-value pairs. This leads to the same question of which element types are special enough to merit being captured by PCollection subclasses. It is not very extensible for third parties and often requires manual downcasts/conversions (which can\u2019t be safely chained in Java) and special operations that produce thes
 e PCollection specializations.&lt;/p&gt;
 
 &lt;p&gt;This is particularly inconvenient for transforms that produce outputs whose element types are the same as (or related to) their input\u2019s element types, requiring extra support to generate the right subclasses (e.g. a filter on a PTable should produce another PTable rather than just a raw PCollection of key-value pairs).&lt;/p&gt;
 
-&lt;p&gt;Using PTransforms allows us to sidestep this entire issue. We can place arbitrary constraints on the context in which a transform may be used based on the type of its inputs; for instance GroupByKey is statically typed to only apply to a &lt;code&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt;. The way this happens is generalizable to arbitrary shapes, without needing to introduce specialized types like PTable.&lt;/p&gt;
+&lt;p&gt;Using PTransforms allows us to sidestep this entire issue. We can place arbitrary constraints on the context in which a transform may be used based on the type of its inputs; for instance GroupByKey is statically typed to only apply to a &lt;code class=&quot;highlighter-rouge&quot;&gt;PCollection&amp;lt;KV&amp;lt;K, V&amp;gt;&amp;gt;&lt;/code&gt;. The way this happens is generalizable to arbitrary shapes, without needing to introduce specialized types like PTable.&lt;/p&gt;
 
 &lt;h2 id=&quot;reusability-and-structure&quot;&gt;Reusability and Structure&lt;/h2&gt;
 &lt;p&gt;Though PTransforms are generally constructed at the site at which they\u2019re used, by pulling them out as separate objects one is able to store them and pass them around.&lt;/p&gt;
@@ -165,7 +165,7 @@ PCollection&amp;lt;O&amp;gt; output = input
 &lt;p&gt;&lt;img class=&quot;center-block&quot; src=&quot;/images/blog/simple-wordcount-pipeline.png&quot; alt=&quot;Three different visualizations of a simple WordCount pipeline&quot; width=&quot;500&quot; /&gt;&lt;/p&gt;
 
 &lt;div class=&quot;text-center&quot;&gt;
-&lt;i&gt;Three different visualizations of a simple WordCount pipeline which computes the number of occurrences of every word in a set of text files. The flat view gives the full DAG of all operations performed. The execution view groups operations according to how they're executed, e.g. after performing runner-specific optimizations like function composition. The structured view nests operations according to their grouping in PTransforms.&lt;/i&gt;
+&lt;i&gt;Three different visualizations of a simple WordCount pipeline which computes the number of occurrences of every word in a set of text files. The flat view gives the full DAG of all operations performed. The execution view groups operations according to how they&#39;re executed, e.g. after performing runner-specific optimizations like function composition. The structured view nests operations according to their grouping in PTransforms.&lt;/i&gt;
 &lt;/div&gt;
 
 &lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
@@ -188,7 +188,7 @@ PCollection&amp;lt;O&amp;gt; output = input
 
 &lt;p&gt;In a large batch processing job with many tasks executing in parallel, some of the tasks \u2013 the stragglers \u2013 can take a much longer time to complete than others, perhaps due to imperfect splitting of the work into parallel chunks when issuing the job. Typically, waiting for stragglers means that the overall job completes later than it should, and may also reserve too many machines that may be underutilized at the end. Cloud Dataflow\u2019s dynamic work rebalancing can mitigate stragglers in most cases.&lt;/p&gt;
 
-&lt;p&gt;What I\u2019d like to highlight for the Apache Beam (incubating) community is that Cloud Dataflow\u2019s dynamic work rebalancing is implemented using &lt;em&gt;runner-specific&lt;/em&gt; control logic on top of Beam\u2019s &lt;em&gt;runner-independent&lt;/em&gt; &lt;a href=&quot;https://github.com/apache/incubator-beam/blob/9fa97fb2491bc784df53fb0f044409dbbc2af3d7/sdks/java/core/src/main/java/org/apache/beam/sdk/io/BoundedSource.java&quot;&gt;&lt;code&gt;BoundedSource API&lt;/code&gt;&lt;/a&gt;. Specifically, to steal work from a straggler, a runner need only call the reader\u2019s &lt;a href=&quot;https://github.com/apache/incubator-beam/blob/3edae9b8b4d7afefb5c803c19bb0a1c21ebba89d/sdks/java/core/src/main/java/org/apache/beam/sdk/io/BoundedSource.java#L266&quot;&gt;&lt;code&gt;splitAtFraction method&lt;/code&gt;&lt;/a&gt;. This will generate a new source containing leftover work, and then the runner can pass that source off to another idle worker. As Beam matures, I hope that other 
 runners are interested in figuring out whether these APIs can help them improve performance, implementing dynamic work rebalancing, and collaborating on API changes that will help solve other pain points.&lt;/p&gt;
+&lt;p&gt;What I\u2019d like to highlight for the Apache Beam (incubating) community is that Cloud Dataflow\u2019s dynamic work rebalancing is implemented using &lt;em&gt;runner-specific&lt;/em&gt; control logic on top of Beam\u2019s &lt;em&gt;runner-independent&lt;/em&gt; &lt;a href=&quot;https://github.com/apache/incubator-beam/blob/9fa97fb2491bc784df53fb0f044409dbbc2af3d7/sdks/java/core/src/main/java/org/apache/beam/sdk/io/BoundedSource.java&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;BoundedSource API&lt;/code&gt;&lt;/a&gt;. Specifically, to steal work from a straggler, a runner need only call the reader\u2019s &lt;a href=&quot;https://github.com/apache/incubator-beam/blob/3edae9b8b4d7afefb5c803c19bb0a1c21ebba89d/sdks/java/core/src/main/java/org/apache/beam/sdk/io/BoundedSource.java#L266&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;splitAtFraction method&lt;/code&gt;&lt;/a&gt;. This will generate a new source containing leftover work, and then the runner can pass tha
 t source off to another idle worker. As Beam matures, I hope that other runners are interested in figuring out whether these APIs can help them improve performance, implementing dynamic work rebalancing, and collaborating on API changes that will help solve other pain points.&lt;/p&gt;
 </description>
         <pubDate>Wed, 18 May 2016 11:00:00 -0700</pubDate>
         <link>http://beam.incubator.apache.org/blog/2016/05/18/splitAtFraction-method.html</link>
@@ -221,7 +221,7 @@ PCollection&amp;lt;O&amp;gt; output = input
   &lt;/li&gt;
 &lt;/ul&gt;
 
-&lt;p&gt;As Apache Beam grows, so will this repository of presentation materials. We are excited to add new materials as the Apache Beam ecosystem grows with new runners, SDKs, and so on. If you are interested in contributing content or have a request, please see the &lt;a href=&quot;/presentation-materials/&quot;&gt;Apache Beam presentation materials&lt;/a&gt; page or email the &lt;a href=&quot;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#116;&amp;#111;:&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#064;&amp;#098;&amp;#101;&amp;#097;&amp;#109;&amp;#046;&amp;#105;&amp;#110;&amp;#099;&amp;#117;&amp;#098;&amp;#097;&amp;#116;&amp;#111;&amp;#114;&amp;#046;&amp;#097;&amp;#112;&amp;#097;&amp;#099;&amp;#104;&amp;#101;&amp;#046;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&lt;code&gt;user@beam.incubator.apache.org&lt;/code&gt;&lt;/a&gt; mailing list with your ideas or questions.&lt;/p&gt;
+&lt;p&gt;As Apache Beam grows, so will this repository of presentation materials. We are excited to add new materials as the Apache Beam ecosystem grows with new runners, SDKs, and so on. If you are interested in contributing content or have a request, please see the &lt;a href=&quot;/presentation-materials/&quot;&gt;Apache Beam presentation materials&lt;/a&gt; page or email the &lt;a href=&quot;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#116;&amp;#111;:&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#064;&amp;#098;&amp;#101;&amp;#097;&amp;#109;&amp;#046;&amp;#105;&amp;#110;&amp;#099;&amp;#117;&amp;#098;&amp;#097;&amp;#116;&amp;#111;&amp;#114;&amp;#046;&amp;#097;&amp;#112;&amp;#097;&amp;#099;&amp;#104;&amp;#101;&amp;#046;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;user@beam.incubator.apache.org&lt;/code&gt;&lt;/a&gt; mailing list with your ideas or questions.&lt;/p&gt;
 </description>
         <pubDate>Sun, 03 Apr 2016 11:00:00 -0700</pubDate>
         <link>http://beam.incubator.apache.org/beam/capability/2016/04/03/presentation-materials.html</link>
@@ -282,19 +282,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -303,19 +307,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -324,19 +332,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -345,19 +357,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -366,19 +382,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -387,19 +407,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -408,19 +432,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ec3;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -429,19 +457,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#fe5;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -450,19 +482,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#ca1&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -491,19 +527,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -512,19 +552,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8cf;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8cf;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;~&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -533,19 +577,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -554,19 +602,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -575,19 +627,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -596,19 +652,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -617,19 +677,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#59f;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#37d&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -658,19 +722,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -679,19 +747,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -700,19 +772,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -721,19 +797,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -742,19 +822,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -763,19 +847,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -784,19 +872,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#8c6;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -805,19 +897,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#6a4&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -846,19 +942,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -867,19 +967,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#d77;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2713;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -888,19 +992,23 @@ PCollection&amp;lt;O&amp;gt; output = input
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
     
 
-    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;/td&gt;
+    &lt;td width=&quot;25%&quot; class=&quot;cap-summary&quot; style=&quot;background-color:#ddd;border-color:#b55&quot;&gt;&lt;center&gt;&lt;b&gt;&amp;#x2715;&lt;/b&gt;&lt;/center&gt;
+&lt;/td&gt;
     
   &lt;/tr&gt;
   
@@ -963,13 +1071,13 @@ now has a logo.&lt;/p&gt;
 
 &lt;p&gt;&lt;em&gt;drum roll&lt;/em&gt; - &lt;strong&gt;Presenting, the Apache Beam Logo!&lt;/strong&gt;&lt;/p&gt;
 
-&lt;p&gt;&lt;img src=&quot;/images/beam_logo_s.png&quot; /&gt;&lt;/p&gt;
+&lt;p&gt;&lt;img src=&quot;/images/beam_logo_s.png&quot; alt=&quot;Apache Beam Logo&quot; /&gt;&lt;/p&gt;
 
 &lt;p&gt;We are excited about this logo because it is &lt;strong&gt;simple&lt;/strong&gt;, &lt;strong&gt;bright&lt;/strong&gt;, and shows the
 unification of bath and streaming, as beams of light, within the \u2018B\u2019. We will base
 our future website and documentation design around this logo and its coloring. We
 will also make various permutations and resolutions of this logo available in the
-coming weeks. For any questions or comments, send an email to the &lt;code&gt;dev@&lt;/code&gt; email list
+coming weeks. For any questions or comments, send an email to the &lt;code class=&quot;highlighter-rouge&quot;&gt;dev@&lt;/code&gt; email list
 for Apache Beam.&lt;/p&gt;
 </description>
         <pubDate>Mon, 22 Feb 2016 10:21:48 -0800</pubDate>

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/2a61d388/content/index.html
----------------------------------------------------------------------
diff --git a/content/index.html b/content/index.html
index 6d1254d..08b8923 100644
--- a/content/index.html
+++ b/content/index.html
@@ -98,13 +98,11 @@
     <div class="container" role="main">
 
       <div class="container">
-        <p>
-  <div class="alert alert-info alert-dismissible" role="alert">
-  <span class="glyphicon glyphicon-flag" aria-hidden="true"></span>
-  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
-  The Apache Beam project is in the process of bootstrapping. This includes the creation of project resources, the refactoring of the initial code submission, and the formulation of project documentation, planning, and design documents. For more information about Beam see the <a href="/getting_started/">getting started page</a>.
-  </div>
-</p>
+        <div class="alert alert-info alert-dismissible" role="alert">
+<span class="glyphicon glyphicon-flag" aria-hidden="true"></span>
+<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+The Apache Beam project is in the process of bootstrapping. This includes the creation of project resources, the refactoring of the initial code submission, and the formulation of project documentation, planning, and design documents. For more information about Beam see the <a href="/getting_started/">getting started page</a>.
+</div>
 
 <h1 id="apache-beam-incubating">Apache Beam (incubating)</h1>
 
@@ -210,7 +208,6 @@
 <p>Apache Beam is an <a href="http://www.apache.org">Apache Software Foundation project</a>,
 available under the Apache v2 license.</p>
 
-
       </div>
 
 

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/2a61d388/content/material/index.html
----------------------------------------------------------------------
diff --git a/content/material/index.html b/content/material/index.html
index 59e8596..1b71efb 100644
--- a/content/material/index.html
+++ b/content/material/index.html
@@ -123,19 +123,19 @@ download it.</p>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" /></a>
+<a href="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" alt="beam-logo-full-color-nameless.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" /></a>
+<a href="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" alt="beam-logo-full-color-name-bottom.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" /></a>
+<a href="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" alt="beam-logo-full-color-name-right.svg" /></a>
 </div><br />
 </div>
 
@@ -148,19 +148,19 @@ download it.</p>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" /></a>
+<a href="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" alt="beam-logo-3-color-nameless.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" /></a>
+<a href="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" alt="beam-logo-3-color-name-bottom.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" /></a>
+<a href="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" alt="beam-logo-3-color-name-right.svg" /></a>
 </div><br />
 </div>
 
@@ -173,19 +173,19 @@ download it.</p>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" /></a>
+<a href="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" role="button"><img style="height: 60px" src="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" alt="beam-logo-bw-nameless.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" /></a>
+<a href="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" role="button"><img style="height: 60px" src="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" alt="beam-logo-bw-name-bottom.svg" /></a>
 </div><br />
 </div>
 
 <div class="col-md-2">
 <div class="row">
-<a href="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" /></a>
+<a href="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" role="button"><img style="height: 60px" src="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" alt="beam-logo-bw-name-right.svg" /></a>
 </div><br />
 </div>
 
@@ -202,7 +202,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" />
+<img style="height: 60px" src="/images/logos/full-color/nameless/beam-logo-full-color-nameless.svg" alt="beam-logo-full-color-nameless" />
 </div><br />
 <div class="row">
 
@@ -223,7 +223,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" />
+<img style="height: 60px" src="/images/logos/full-color/name-bottom/beam-logo-full-color-name-bottom.svg" alt="beam-logo-full-color-name-bottom" />
 </div><br />
 <div class="row">
 
@@ -244,7 +244,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" />
+<img style="height: 60px" src="/images/logos/full-color/name-right/beam-logo-full-color-name-right.svg" alt="beam-logo-full-color-name-right" />
 </div><br />
 <div class="row">
 
@@ -272,7 +272,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" />
+<img style="height: 60px" src="/images/logos/3-color/nameless/beam-logo-3-color-nameless.svg" alt="beam-logo-3-color-nameless" />
 </div><br />
 <div class="row">
 
@@ -293,7 +293,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" />
+<img style="height: 60px" src="/images/logos/3-color/name-bottom/beam-logo-3-color-name-bottom.svg" alt="beam-logo-3-color-name-bottom" />
 </div><br />
 <div class="row">
 
@@ -314,7 +314,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" />
+<img style="height: 60px" src="/images/logos/3-color/name-right/beam-logo-3-color-name-right.svg" alt="beam-logo-3-color-name-right" />
 </div><br />
 <div class="row">
 
@@ -342,7 +342,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" />
+<img style="height: 60px" src="/images/logos/bw/nameless/beam-logo-bw-nameless.svg" alt="beam-logo-bw-nameless" />
 </div><br />
 <div class="row">
 
@@ -363,7 +363,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" />
+<img style="height: 60px" src="/images/logos/bw/name-bottom/beam-logo-bw-name-bottom.svg" alt="beam-logo-bw-name-bottom" />
 </div><br />
 <div class="row">
 
@@ -384,7 +384,7 @@ available in a number of fixed sizes and are optimized for web use.</p>
 
 <div class="col-md-2">
 <div class="row">
-<img style="height: 60px" src="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" />
+<img style="height: 60px" src="/images/logos/bw/name-right/beam-logo-bw-name-right.svg" alt="beam-logo-bw-name-right" />
 </div><br />
 <div class="row">
 

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/2a61d388/content/presentation-materials/index.html
----------------------------------------------------------------------
diff --git a/content/presentation-materials/index.html b/content/presentation-materials/index.html
index 29c484e..dbc54ff 100644
--- a/content/presentation-materials/index.html
+++ b/content/presentation-materials/index.html
@@ -114,19 +114,19 @@
 </div>
 
 <h2 id="using-these-materials">Using these materials</h2>
-<p>These materials can be used by anyone. If you do use these materials, please remember to give credit to the authors cited in each presentation. These materials include speaker notes and you can view them by clicking <strong><code>View</code></strong> and selecting <strong><code>Show speaker notes</code></strong>. Some presentations have <code>[Long]</code> or <code>[Short]</code> in their name, such as the <em>Apache Beam Model</em>, which means there are two different presentations (a long and short version) depending on your needs and time constraints.</p>
+<p>These materials can be used by anyone. If you do use these materials, please remember to give credit to the authors cited in each presentation. These materials include speaker notes and you can view them by clicking <strong><code class="highlighter-rouge">View</code></strong> and selecting <strong><code class="highlighter-rouge">Show speaker notes</code></strong>. Some presentations have <code class="highlighter-rouge">[Long]</code> or <code class="highlighter-rouge">[Short]</code> in their name, such as the <em>Apache Beam Model</em>, which means there are two different presentations (a long and short version) depending on your needs and time constraints.</p>
 
-<p>If you have any questions about the these materials, please ask on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code>user@beam.incubator.apache.org</code></a> mailing list.</p>
+<p>If you have any questions about the these materials, please ask on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code class="highlighter-rouge">user@beam.incubator.apache.org</code></a> mailing list.</p>
 
-<p>The Apache Beam community is looking for feedback on these materials to improve them over time. If you deliver a presentation based on these materials, we\u2019d love to hear from you on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code>user@beam.incubator.apache.org</code></a> mailing list. Please share your thoughts, questions you were asked, and (if available and appropriate) a link to the recording of your talk so the rest of the Apache Beam community can benefit from it.</p>
+<p>The Apache Beam community is looking for feedback on these materials to improve them over time. If you deliver a presentation based on these materials, we\u2019d love to hear from you on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code class="highlighter-rouge">user@beam.incubator.apache.org</code></a> mailing list. Please share your thoughts, questions you were asked, and (if available and appropriate) a link to the recording of your talk so the rest of the Apache Beam community can benefit from it.</p>
 
 <h2 id="contributing-new-content">Contributing new content</h2>
 <p>The Apache Beam community is always looking for new core content and contributions!</p>
 
-<p>If you are interested in contributing new content, we recommend you first search the <a href="https://issues.apache.org/jira/browse/BEAM">Apache Beam JIRA</a> to see if your idea currently has an open JIRA item. If it does not, send an email to the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code>user@beam.incubator.apache.org</code></a> mailing list or open a new issue in the <a href="https://issues.apache.org/jira/browse/BEAM">Apache Beam JIRA</a> using the <a href="https://issues.apache.org/jira/browse/BEAM/component/12328906/?selectedTab=com.atlassian.jira.jira-projects-plugin:component-summary-panel">website</a> component. Based on community submissions or contributions, the Beam community collaboratively reviews or creates new content and then adds it to this shared space for everyone to use.
 </p>
+<p>If you are interested in contributing new content, we recommend you first search the <a href="https://issues.apache.org/jira/browse/BEAM">Apache Beam JIRA</a> to see if your idea currently has an open JIRA item. If it does not, send an email to the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code class="highlighter-rouge">user@beam.incubator.apache.org</code></a> mailing list or open a new issue in the <a href="https://issues.apache.org/jira/browse/BEAM">Apache Beam JIRA</a> using the <a href="https://issues.apache.org/jira/browse/BEAM/component/12328906/?selectedTab=com.atlassian.jira.jira-projects-plugin:component-summary-panel">website</a> component. Based on community submissions or contributions, the Beam community collaboratively reviews or creates new content and then adds it to this shared 
 space for everyone to use.</p>
 
 <h2 id="corrections-and-updates">Corrections and updates</h2>
-<p>If you encounter missing, incorrect, or out of date material, please make a comment in the presentation or send an email to the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code>user@beam.incubator.apache.org</code></a> mailing list.</p>
+<p>If you encounter missing, incorrect, or out of date material, please make a comment in the presentation or send an email to the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;"><code class="highlighter-rouge">user@beam.incubator.apache.org</code></a> mailing list.</p>
 
   </div>
 

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/2a61d388/content/public-meetings/index.html
----------------------------------------------------------------------
diff --git a/content/public-meetings/index.html b/content/public-meetings/index.html
index be9eee6..7516845 100644
--- a/content/public-meetings/index.html
+++ b/content/public-meetings/index.html
@@ -159,7 +159,7 @@
 <h2 id="i-want-to-give-a-public-talk-about-apache-beam">I want to give a public talk about Apache Beam</h2>
 <p>To get started, we recommend you review the Apache Beam <a href="/presentation-materials/">presentation materials</a> page to review the content the Apache Beam community has already created. These materials will possibly save you time and energy as you create content for your event.</p>
 
-<p>Once you have scheduled your event, we welcome you to announce it on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a> mailing list. Additionally, please open a <a href="https://issues.apache.org/jira/browse/BEAM">JIRA item</a> using the <code>website</code> component with details so we can update this page.</p>
+<p>Once you have scheduled your event, we welcome you to announce it on the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#117;&#115;&#101;&#114;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a> mailing list. Additionally, please open a <a href="https://issues.apache.org/jira/browse/BEAM">JIRA item</a> using the <code class="highlighter-rouge">website</code> component with details so we can update this page.</p>
 
 <p>If you have any questions as you prepare for your event, we recommend you reach out to the Apache Beam community through the <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a> mailing list. The Beam community can help provide feedback on your materials and promote your event.</p>
 
@@ -172,7 +172,7 @@
 <p>Public meetings include scheduled Apache Beam Dev/PPMC meetings, Meetup events, conference talks, and other events where the public meets to discuss Beam.</p>
 
 <h3 id="how-do-i-learn-about-new-meetings">How do I learn about new meetings?</h3>
-<p>The Apache Beam community announces upcoming public meetings on the  <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a> mailing list. If you want to learn about new events, we recommend you <a href="dev-subscribe@beam.incubator.apache.org">subscribe</a> to that list.  If you are holding a public event, please send an email to the dev@ list.</p>
+<p>The Apache Beam community announces upcoming public meetings on the  <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">&#100;&#101;&#118;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;</a> mailing list. If you want to learn about new events, we recommend you <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#100;&#101;&#118;&#045;&#115;&#117;&#098;&#115;&#099;&#114;&#105;&#098;&#101;&#064;&#098;&#101;&#097;&#109;&#046;&#105;&#110;&#099;&#117;&#098;&#097;&#116;&#111;&#114;&#046;&#097;&#112;&#097;&#099;&#104;&#101;&#046;&#111;&#114;&#103;">subscribe</a> to that list.  If you are holding a public event, please send an email to the dev@ list.</p>
 
   </div>