beam-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From taki...@apache.org
Subject [1/2] incubator-beam-site git commit: Blog page "read more" links + README.md for the site.
Date Mon, 21 Mar 2016 18:54:49 GMT
Repository: incubator-beam-site
Updated Branches:
  refs/heads/asf-site 2f7336f0e -> d5dfeb6d2


Blog page "read more" links + README.md for the site.


Project: http://git-wip-us.apache.org/repos/asf/incubator-beam-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam-site/commit/a29ec78b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam-site/tree/a29ec78b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam-site/diff/a29ec78b

Branch: refs/heads/asf-site
Commit: a29ec78bf146611408085865805eee1168a01d35
Parents: 2f7336f
Author: James Malone <jamalone@gmail.com>
Authored: Fri Mar 18 12:40:58 2016 -0700
Committer: Tyler Akidau <takidau@apache.org>
Committed: Mon Mar 21 11:26:16 2016 -0700

----------------------------------------------------------------------
 README.md                                       |  73 ++
 _pages/blog.md                                  |  15 +
 _posts/2016-03-17-capability-matrix.md          |   2 +
 .../2016/03/17/capability-matrix.html           |   2 +
 content/blog/index.html                         | 801 +------------------
 5 files changed, 115 insertions(+), 778 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/a29ec78b/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4aa43a1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,73 @@
+# Apache Beam (incubating) website
+
+This is the website for [Apache Beam](http://beam.incubator.apache.org)
+(incubating).
+
+### About this site
+The Beam website is built using [Jekyll](http://jekyllrb.com/). Additionally,
+for additional formatting capabilities, this website uses
+[Twitter Bootstrap](http://getbootstrap.com/).
+
+This website is hosted at:
+
+    http://beam.incubator.apache.org
+
+It is important to note there are two sets of "website code"  with respect to
+the Apache Beam website.
+
+1. The **Jekyll code** which contains all of the resources for building,
+testing, styling, and tinkering with the website. Think of it as a website SDK.
+1. The **static website** content which contains the content for the
+website. This is the static content is what is actually hosted on the Apache 
+Beam website.
+
+### Development setup
+Before working with the Jekyll code, you will need to install Jekyll:
+
+    $ gem install jekyll
+
+*If you are on a Mac, you may need to install
+[Ruby Gems](https://rubygems.org/pages/download).*
+
+### Live development
+While you are working with the website, you can test and develop live. Run the
+following command in the root folder of the website:
+
+    $ jekyll serve
+
+Jekyll will start a webserver on port `4000`. As you make changes to the
+content, Jekyll will rebuild it automatically. This is helpful if you want to see
+how your changes will render in realtime.
+
+### Generating the static website
+Once you are done with your changes, you need to compile the static
+content for the website. This is what is actually hosted 
+on the Apache Beam website.
+
+You can build the static content by running the following command in the root
+website directory:
+
+    $ jekyll build
+
+Once built, it will be placed in the folder `content` inside of the root directory. 
+This directory will include images, HTML, CSS, and so on. In a typical Jekyll install
+this content would live in `_site` - it has been changed for the Apache Beam website
+to work with the ASF Incubator publishing system.
+
+### Apache License
+---
+Except as otherwise noted this software is licensed under the
+[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
+
+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.
+

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/a29ec78b/_pages/blog.md
----------------------------------------------------------------------
diff --git a/_pages/blog.md b/_pages/blog.md
index 5cf3b8e..00f5185 100644
--- a/_pages/blog.md
+++ b/_pages/blog.md
@@ -15,5 +15,20 @@ for the project.
 
 {{ post.excerpt }}
 
+<!-- Render a "read more" button if the post is longer than the excerpt -->
+{% capture content_words %}
+  {{ post.content | number_of_words }}
+{% endcapture %}
+{% capture excerpt_words %}
+  {{ post.excerpt | number_of_words }}
+{% endcapture %}
+{% if excerpt_words != content_words %}
+<p>
+<a class="btn btn-default btn-sm" href="{{ post.url }}/#read-more" role="button">
+Read more&nbsp;<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>
+</a>
+</p>
+{% endif %}
+
 <hr>
 {% endfor %}

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/a29ec78b/_posts/2016-03-17-capability-matrix.md
----------------------------------------------------------------------
diff --git a/_posts/2016-03-17-capability-matrix.md b/_posts/2016-03-17-capability-matrix.md
index 9ede7d9..5d3b216 100644
--- a/_posts/2016-03-17-capability-matrix.md
+++ b/_posts/2016-03-17-capability-matrix.md
@@ -575,6 +575,8 @@ capability-matrix-snapshot:
 
 With initial code drops complete ([Dataflow SDK and Runner](https://github.com/apache/incubator-beam/pull/1),
[Flink Runner](https://github.com/apache/incubator-beam/pull/12), [Spark Runner](https://github.com/apache/incubator-beam/pull/42))
and expressed interest in runner implementations for [Storm](https://issues.apache.org/jira/browse/BEAM-9),
[Hadoop](https://issues.apache.org/jira/browse/BEAM-19), and [Gearpump](https://issues.apache.org/jira/browse/BEAM-79)
(amongst others), we wanted to start addressing a big question in the Apache Beam (incubating)
community: what capabilities will each runner be able to support?
 
+<!--more-->
+
 While we’d love to have a world where all runners support the full suite of semantics included
in the Beam Model (formerly referred to as the [Dataflow Model](http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf)),
practically speaking, there will always be certain features that some runners can’t provide.
For example, a Hadoop-based runner would be inherently batch-based and may be unable to (easily)
implement support for unbounded collections. However, that doesn’t prevent it from being
extremely useful for a large set of uses. In other cases, the implementations provided by
one runner may have slightly different semantics that those provided by another (e.g. even
though the current suite of runners all support exactly-once delivery guarantees, an [Apache
Samza](http://samza.apache.org/) runner, which would be a welcome addition, would currently
only support at-least-once).
 
 To help clarify things, we’ve been working on enumerating the key features of the Beam
model in a [capability matrix]({{ site.baseurl }}/capability-matrix/) for all existing runners,
categorized around the four key questions addressed by the model: <span class="wwwh-what-dark">What</span>
/ <span class="wwwh-where-dark">Where</span> / <span class="wwwh-when-dark">When</span>
/ <span class="wwwh-how-dark">How</span> (if you’re not familiar with those
questions, you might want to read through [Streaming 102](http://oreilly.com/ideas/the-world-beyond-batch-streaming-102)
for an overview). This table will be maintained over time as the model evolves, our understanding
grows, and runners are created or features added.

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/a29ec78b/content/beam/capability/2016/03/17/capability-matrix.html
----------------------------------------------------------------------
diff --git a/content/beam/capability/2016/03/17/capability-matrix.html b/content/beam/capability/2016/03/17/capability-matrix.html
index fdefa53..91d220f 100644
--- a/content/beam/capability/2016/03/17/capability-matrix.html
+++ b/content/beam/capability/2016/03/17/capability-matrix.html
@@ -89,6 +89,8 @@
   <div class="post-content" itemprop="articleBody">
     <p>With initial code drops complete (<a href="https://github.com/apache/incubator-beam/pull/1">Dataflow
SDK and Runner</a>, <a href="https://github.com/apache/incubator-beam/pull/12">Flink
Runner</a>, <a href="https://github.com/apache/incubator-beam/pull/42">Spark Runner</a>)
and expressed interest in runner implementations for <a href="https://issues.apache.org/jira/browse/BEAM-9">Storm</a>,
<a href="https://issues.apache.org/jira/browse/BEAM-19">Hadoop</a>, and <a
href="https://issues.apache.org/jira/browse/BEAM-79">Gearpump</a> (amongst others),
we wanted to start addressing a big question in the Apache Beam (incubating) community: what
capabilities will each runner be able to support?</p>
 
+<!--more-->
+
 <p>While we’d love to have a world where all runners support the full suite of semantics
included in the Beam Model (formerly referred to as the <a href="http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf">Dataflow
Model</a>), practically speaking, there will always be certain features that some runners
can’t provide. For example, a Hadoop-based runner would be inherently batch-based and may
be unable to (easily) implement support for unbounded collections. However, that doesn’t
prevent it from being extremely useful for a large set of uses. In other cases, the implementations
provided by one runner may have slightly different semantics that those provided by another
(e.g. even though the current suite of runners all support exactly-once delivery guarantees,
an <a href="http://samza.apache.org/">Apache Samza</a> runner, which would be
a welcome addition, would currently only support at-least-once).</p>
 
 <p>To help clarify things, we’ve been working on enumerating the key features of
the Beam model in a <a href="/capability-matrix/">capability matrix</a> for all
existing runners, categorized around the four key questions addressed by the model: <span
class="wwwh-what-dark">What</span> / <span class="wwwh-where-dark">Where</span>
/ <span class="wwwh-when-dark">When</span> / <span class="wwwh-how-dark">How</span>
(if you’re not familiar with those questions, you might want to read through <a href="http://oreilly.com/ideas/the-world-beyond-batch-streaming-102">Streaming
102</a> for an overview). This table will be maintained over time as the model evolves,
our understanding grows, and runners are created or features added.</p>

http://git-wip-us.apache.org/repos/asf/incubator-beam-site/blob/a29ec78b/content/blog/index.html
----------------------------------------------------------------------
diff --git a/content/blog/index.html b/content/blog/index.html
index bab6e9b..e9d0a51 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -93,784 +93,13 @@ for the project.</p>
 
 <p>With initial code drops complete (<a href="https://github.com/apache/incubator-beam/pull/1">Dataflow
SDK and Runner</a>, <a href="https://github.com/apache/incubator-beam/pull/12">Flink
Runner</a>, <a href="https://github.com/apache/incubator-beam/pull/42">Spark Runner</a>)
and expressed interest in runner implementations for <a href="https://issues.apache.org/jira/browse/BEAM-9">Storm</a>,
<a href="https://issues.apache.org/jira/browse/BEAM-19">Hadoop</a>, and <a
href="https://issues.apache.org/jira/browse/BEAM-79">Gearpump</a> (amongst others),
we wanted to start addressing a big question in the Apache Beam (incubating) community: what
capabilities will each runner be able to support?</p>
 
-<p>While we’d love to have a world where all runners support the full suite of semantics
included in the Beam Model (formerly referred to as the <a href="http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf">Dataflow
Model</a>), practically speaking, there will always be certain features that some runners
can’t provide. For example, a Hadoop-based runner would be inherently batch-based and may
be unable to (easily) implement support for unbounded collections. However, that doesn’t
prevent it from being extremely useful for a large set of uses. In other cases, the implementations
provided by one runner may have slightly different semantics that those provided by another
(e.g. even though the current suite of runners all support exactly-once delivery guarantees,
an <a href="http://samza.apache.org/">Apache Samza</a> runner, which would be
a welcome addition, would currently only support at-least-once).</p>
-
-<p>To help clarify things, we’ve been working on enumerating the key features of
the Beam model in a <a href="/capability-matrix/">capability matrix</a> for all
existing runners, categorized around the four key questions addressed by the model: <span
class="wwwh-what-dark">What</span> / <span class="wwwh-where-dark">Where</span>
/ <span class="wwwh-when-dark">When</span> / <span class="wwwh-how-dark">How</span>
(if you’re not familiar with those questions, you might want to read through <a href="http://oreilly.com/ideas/the-world-beyond-batch-streaming-102">Streaming
102</a> for an overview). This table will be maintained over time as the model evolves,
our understanding grows, and runners are created or features added.</p>
-
-<p>Included below is a summary snapshot of our current understanding of the capabilities
of the existing runners (see the <a href="/capability-matrix/">live version</a>
for full details, descriptions, and Jira links); since integration is still under way, the
system as whole isn’t yet in a completely stable, usable state. But that should be changing
in the near future, and we’ll be updating loud and clear on this blog when the first supported
Beam 1.0 release happens.</p>
-
-<p>In the meantime, these tables should help clarify where we expect to be in the very
near term, and help guide expectations about what existing runners are capable of, and what
features runner implementers will be tackling next.</p>
-
-<script type="text/javascript">
-  function ToggleTables(showDetails, anchor) {
-    document.getElementById("cap-summary").style.display = showDetails ? "none" : "block";
-    document.getElementById("cap-full").style.display = showDetails ? "block" : "none";
-    location.hash = anchor;
-  }
-</script>
-
-<!-- Summary table -->
-
-<div id="cap-blog" style="display:block">
-<table class="cap-summary">
-  
-  <tr class="cap-summary" id="cap-blog-what">
-    <th class="cap-summary color-metadata format-category" colspan="5" style="color:#ca1">What
is being computed?</th>
-  </tr>
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability"></th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#ec3">Beam
Model</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#ec3">Google
Cloud Dataflow</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#ec3">Apache
Flink</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#ec3">Apache
Spark</th>
-  
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">ParDo</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">GroupByKey</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Flatten</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Combine</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Composite
Transforms</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Side
Inputs</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Source
API</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ec3;border-color:#ca1"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Aggregators</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#fe5;border-color:#ca1"><b><center>~</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#ec3">Keyed
State</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#ca1"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#ca1"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#ca1"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#ca1"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <td class="cap-summary color-blank cap-blank" colspan="5"></td>
-  </tr>
-  
-  <tr class="cap-summary" id="cap-blog-where">
-    <th class="cap-summary color-metadata format-category" colspan="5" style="color:#37d">Where
in event time?</th>
-  </tr>
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability"></th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#59f">Beam
Model</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#59f">Google
Cloud Dataflow</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#59f">Apache
Flink</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#59f">Apache
Spark</th>
-  
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Global
windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Fixed
windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8cf;border-color:#37d"><b><center>~</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Sliding
windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#37d"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Session
windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#37d"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Custom
windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#37d"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Custom
merging windows</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#37d"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#59f">Timestamp
control</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#59f;border-color:#37d"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#37d"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <td class="cap-summary color-blank cap-blank" colspan="5"></td>
-  </tr>
-  
-  <tr class="cap-summary" id="cap-blog-when">
-    <th class="cap-summary color-metadata format-category" colspan="5" style="color:#6a4">When
in processing time?</th>
-  </tr>
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability"></th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#8c6">Beam
Model</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#8c6">Google
Cloud Dataflow</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#8c6">Apache
Flink</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#8c6">Apache
Spark</th>
-  
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Configurable
triggering</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Event-time
triggers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Processing-time
triggers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Count
triggers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">[Meta]data
driven triggers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Composite
triggers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Allowed
lateness</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#8c6;border-color:#6a4"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#8c6">Timers</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#6a4"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <td class="cap-summary color-blank cap-blank" colspan="5"></td>
-  </tr>
-  
-  <tr class="cap-summary" id="cap-blog-how">
-    <th class="cap-summary color-metadata format-category" colspan="5" style="color:#b55">How
do refinements relate?</th>
-  </tr>
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability"></th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#d77">Beam
Model</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#d77">Google
Cloud Dataflow</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#d77">Apache
Flink</th>
-  
-    <th class="cap-summary color-platform format-platform" style="color:#d77">Apache
Spark</th>
-  
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#d77">Discarding</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#d77">Accumulating</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#d77;border-color:#b55"><b><center>&#x2713;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#b55"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <th class="cap-summary color-capability format-capability" style="color:#d77">Accumulating
&amp; Retracting</th>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#b55"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#b55"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#b55"><b><center>&#x2715;</center></b>
-</td>
-    
-    
-
-    <td width="25%" class="cap-summary" style="background-color:#ddd;border-color:#b55"><b><center>&#x2715;</center></b>
-</td>
-    
-  </tr>
-  
-  <tr class="cap-summary">
-    <td class="cap-summary color-blank cap-blank" colspan="5"></td>
-  </tr>
-  
-</table>
-</div>
+<!-- Render a "read more" button if the post is longer than the excerpt -->
+
+<p>
+<a class="btn btn-default btn-sm" href="/beam/capability/2016/03/17/capability-matrix.html/#read-more"
role="button">
+Read more&nbsp;<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>
+</a>
+</p>
 
 <hr />
 
@@ -881,6 +110,14 @@ for the project.</p>
 <p>When the Apache Beam project proposed entry into the <a href="http://wiki.apache.org/incubator/BeamProposal">Apache
Incubator</a> the proposal
 included the <a href="https://github.com/GoogleCloudPlatform/DataflowJavaSDK">Dataflow
Java SDK</a>. In the long term, however, Apache Beam aims to support SDKs implemented
in multiple languages, such as Python.</p>
 
+<!-- Render a "read more" button if the post is longer than the excerpt -->
+
+<p>
+<a class="btn btn-default btn-sm" href="/beam/python/sdk/2016/02/25/beam-has-a-logo0.html/#read-more"
role="button">
+Read more&nbsp;<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>
+</a>
+</p>
+
 <hr />
 
 <h3 id="a-classpost-link-hrefbeamupdatewebsite20160222beam-has-a-logohtmlapache-beam-has-a-logoa"><a
class="post-link" href="/beam/update/website/2016/02/22/beam-has-a-logo.html">Apache Beam
has a logo!</a></h3>
@@ -894,6 +131,14 @@ is so important, the name Beam itself comes from the union of <strong>B</strong>
 <p>When the project started, we wanted a logo which was both appealing and visually
 represented this unification.</p>
 
+<!-- Render a "read more" button if the post is longer than the excerpt -->
+
+<p>
+<a class="btn btn-default btn-sm" href="/beam/update/website/2016/02/22/beam-has-a-logo.html/#read-more"
role="button">
+Read more&nbsp;<span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span>
+</a>
+</p>
+
 <hr />
 
 



Mime
View raw message