You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@edgent.apache.org by wc...@apache.org on 2016/03/24 00:26:48 UTC

[3/3] incubator-quarks-website git commit: from 5a1b2585ac589f15c36e1b3317044c5ba4e337de

from 5a1b2585ac589f15c36e1b3317044c5ba4e337de


Project: http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/commit/f6777c2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/tree/f6777c2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/diff/f6777c2d

Branch: refs/heads/asf-site
Commit: f6777c2d2072267f6fffb2f2f26a437fdd67032c
Parents: 93a69c3
Author: wcmarsha <wc...@us.ibm.com>
Authored: Wed Mar 23 16:26:23 2016 -0700
Committer: wcmarsha <wc...@us.ibm.com>
Committed: Wed Mar 23 16:26:23 2016 -0700

----------------------------------------------------------------------
 content/404.html                                |  20 +-
 content/algolia_search.json                     |  28 +-
 content/docs/committers.html                    |  20 +-
 content/docs/common-quarks-operations.html      |  20 +-
 content/docs/community.html                     |  20 +-
 content/docs/console.html                       |  20 +-
 content/docs/faq.html                           |  20 +-
 content/docs/getinvolved.html                   |  20 +-
 content/docs/home.html                          |  20 +-
 content/docs/overview.html                      |  20 +-
 content/docs/quarks-getting-started.html        |  20 +-
 content/docs/quarks_index.html                  |  20 +-
 content/docs/quickstart.html                    |  20 +-
 content/docs/samples.html                       |  20 +-
 content/docs/search.html                        |  20 +-
 content/docs/tag_collaboration.html             |  24 +-
 content/docs/tag_content_types.html             |  24 +-
 content/docs/tag_formatting.html                |  24 +-
 content/docs/tag_getting_started.html           |  24 +-
 content/docs/tag_mobile.html                    |  24 +-
 content/docs/tag_navigation.html                |  24 +-
 content/docs/tag_publishing.html                |  24 +-
 content/docs/tag_single_sourcing.html           |  24 +-
 content/docs/tag_special_layouts.html           |  24 +-
 content/prince-file-list.txt                    |  10 +
 ...processing_against_stream_topology_graph.jpg | Bin 0 -> 92294 bytes
 ...ipe_different_processing_against_stream.html | 749 +++++++++++++++++++
 content/recipes/recipe_hello_quarks.html        |  22 +-
 content/recipes/recipe_source_function.html     |  20 +-
 content/recipes/recipe_value_out_of_range.html  | 744 ++++++++++++++++++
 content/search.json                             |  22 +
 content/title-checker.html                      | 214 ++++++
 content/titlepage.html                          |  22 +-
 content/tocpage.html                            |  32 +-
 content/urls_mydoc.txt                          |  14 +
 35 files changed, 2343 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/404.html
----------------------------------------------------------------------
diff --git a/content/404.html b/content/404.html
index 7e6c3a0..ef28520 100644
--- a/content/404.html
+++ b/content/404.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -519,7 +537,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/algolia_search.json
----------------------------------------------------------------------
diff --git a/content/algolia_search.json b/content/algolia_search.json
index af26bee..713af33 100644
--- a/content/algolia_search.json
+++ b/content/algolia_search.json
@@ -167,12 +167,25 @@
 
 
 {
+"title": "Recipe 4. Applying Different Processing Against a Single Stream",
+"tags": "",
+"keywords": "",
+"url": "../recipes/recipe_different_processing_against_stream",
+"summary": "",
+"body": "In the previous [recipe](recipe_value_out_of_range), we learned how to filter a stream to obtain the interesting sensor readings and ignore the mundane data. Typically, a user scenario is more involved, where data is processed using different stream operations. Consider the following scenario, for example.Suppose a package delivery company would like to monitor the gas mileage of their delivery trucks using embedded sensors. They would like to apply different analytics to the sensor data that can be used to make more informed business decisions. For instance, if a truck is reporting consistently poor mileage readings, the company might want to consider replacing that truck to save on gas costs. Perhaps the company also wants to convert the sensor readings to JSON format in order to easily display the data on a web page. It may also be interested in determining the expected gallons of gas used based on the current mileage.In this instance, we can take the stream of mileage s
 ensor readings and apply multiple types of processing against it so that we end up with streams that serve different purposes.## Setting up the applicationWe assume that the environment has been set up following the steps outlined in the [Getting Started Guide](../docs/quarks-getting-started). Let's begin by creating a `DirectProvider` and `Topology`. We choose a `DevelopmentProvider` so that we can view the topology graph using the console URL (refer to the [Application Console](../docs/console) page for a more detailed explanation of this provider). The initial mileage value and the number of miles in a typical delivery route have also been defined.```java    import java.text.DecimalFormat;    import java.util.Random;    import java.util.concurrent.TimeUnit;    import com.google.gson.JsonObject;    import quarks.console.server.HttpServer;    import quarks.providers.development.DevelopmentProvider;    import quarks.providers.direct.DirectProvider;    import quarks.topology.TStream;
     import quarks.topology.Topology;    public class ApplyDifferentProcessingAgainstStream {        /**         * Hypothetical values for the initial gas mileage and the         * number of miles in a typical delivery route         */        static double currentMileage = 10.5;        static double ROUTE_MILES = 80;        public static void main(String[] args) throws Exception {            DirectProvider dp = new DevelopmentProvider();            System.out.println(dp.getServices().getService(HttpServer.class).getConsoleUrl());            Topology top = dp.newTopology(\"TruckSensor\");            // The rest of the code pieces belong here        }    }```## Generating mileage sensor readingsThe next step is to simulate a stream of gas mileage readings. In our `main()`, we use the `poll()` method to generate a flow of tuples (readings), where each tuple arrives every second. We ensure that the generated reading is between 7.0 mpg and 14.0 mpg.```java    // Generate a stream of milea
 ge sensor readings    DecimalFormat df = new DecimalFormat(\"#.#\");    Random r = new Random();    TStream mileage = top.poll(() -> {        // Change current mileage by some random amount between -0.4 and 0.4        while (true) {            double newMileage = -0.4 + (0.4 + 0.4) * r.nextDouble() + currentMileage;            // Ensure that new temperature is within [7.0, 14.0]            if (newMileage >= 7.0 && newMileage  poorMileage = mileage            .filter(mpg -> mpg  json = mileage            .map(mpg -> {                JsonObject jObj = new JsonObject();                jObj.addProperty(\"mileage\", mpg);                return jObj;            }).tag(\"mapped\");```In addition, we can calculate the estimated gallons of gas used based on the current mileage using `modify`.```java    // Modify mileage stream to obtain a stream containing the estimated gallons of gas used    TStream gallonsUsed = mileage            .modify(mpg -> Double.valueOf(df.format(ROUTE_MILES / mpg))
 ).tag(\"modified\");```The three examples demonstrated here are a small subset of the many other possibilities of stream processing.With each of these resulting streams, the company can perform further analytics, but at this point, we terminate the streams by printing out the tuples on each stream.```java    // Terminate the streams    poorMileage.sink(mpg -> System.out.println(\"Poor mileage! \" + mpg + \" mpg\"));    json.sink(mpg -> System.out.println(\"JSON: \" + mpg));    gallonsUsed.sink(gas -> System.out.println(\"Gallons of gas: \" + gas + \"\\n\"));```We end our application by submitting the `Topology`.## Observing the outputWhen the final application is run, the output looks something like the following:```    JSON: {\"mileage\":9.5}    Gallons of gas: 8.4    JSON: {\"mileage\":9.2}    Gallons of gas: 8.7    Poor mileage! 9.0 mpg    JSON: {\"mileage\":9.0}    Gallons of gas: 8.9    Poor mileage! 8.8 mpg    JSON: {\"mileage\":8.8}    Gallons of gas: 9.1```## A look at the t
 opology graphLet's see what the topology graph looks like. We can view it using the console URL that was printed to standard output at the start of the application. We see that original stream is fanned out to three separate streams, and the `filter`, `map`, and `modify` operations are applied.## The final application```java    import java.text.DecimalFormat;    import java.util.Random;    import java.util.concurrent.TimeUnit;    import com.google.gson.JsonObject;    import quarks.console.server.HttpServer;    import quarks.providers.development.DevelopmentProvider;    import quarks.providers.direct.DirectProvider;    import quarks.topology.TStream;    import quarks.topology.Topology;    /**     * Fan out stream and perform different analytics on the resulting streams.     */    public class ApplyDifferentProcessingAgainstStream {        /**         * Hypothetical values for the initial gas mileage and the         * number of miles in a typical delivery route         */        stati
 c double currentMileage = 10.5;        static double ROUTE_MILES = 80;        /**         * Polls a simulated delivery truck sensor to periodically obtain         * mileage readings (in miles/gallon). Feed the stream of sensor         * readings to different functions (filter, map, and modify).         */        public static void main(String[] args) throws Exception {            DirectProvider dp = new DevelopmentProvider();            System.out.println(dp.getServices().getService(HttpServer.class).getConsoleUrl());            Topology top = dp.newTopology(\"TruckSensor\");            // Generate a stream of mileage sensor readings            DecimalFormat df = new DecimalFormat(\"#.#\");            Random r = new Random();            TStream mileage = top.poll(() -> {                // Change current mileage by some random amount between -0.4 and 0.4                while (true) {                    double newMileage = -0.4 + (0.4 + 0.4) * r.nextDouble() + currentMileage;         
            // Ensure that new temperature is within [7.0, 14.0]                    if (newMileage >= 7.0 && newMileage  poorMileage = mileage                    .filter(mpg -> mpg  json = mileage                    .map(mpg -> {                        JsonObject jObj = new JsonObject();                        jObj.addProperty(\"mileage\", mpg);                        return jObj;                    }).tag(\"mapped\");            // Modify mileage stream to obtain a stream containing the estimated gallons of gas used            TStream gallonsUsed = mileage                    .modify(mpg -> Double.valueOf(df.format(ROUTE_MILES / mpg))).tag(\"modified\");            // Terminate the streams            poorMileage.sink(mpg -> System.out.println(\"Poor mileage! \" + mpg + \" mpg\"));            json.sink(mpg -> System.out.println(\"JSON: \" + mpg));            gallonsUsed.sink(gas -> System.out.println(\"Gallons of gas: \" + gas + \"\\n\"));            dp.submit(top);        }    }```"
+
+},
+
+
+
+
+{
 "title": "Recipe 1. Hello Quarks!",
 "tags": "",
 "keywords": "",
 "url": "../recipes/recipe_hello_quarks",
 "summary": "",
-"body": "Quarks' pure Java implementation is a powerful feature which allows it to be run on the majority of JVM-compatible systems. It also has the added benefit of enabling the developer to develop applications entirely within the Eclipse and Intellij ecosystems. For the purposes of this recipe, it will be assumed that the developer is using Eclipse. To begin the Hello World recipe, create a new project and import the necessary libraries as outlined in the [getting started guide](quarks-getting-started). Next, write the following template application:``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();    }```The *DirectProvider* is an object which allows the user to submit and run the final application. It also creates the *Topology* object, which gives the developer the ability to define a stream of strings.## Using Topology.stringsThe primary abstraction in Quarks is the `TStream`. A *TStre
 am* represents the flow of data in a Quarks application; for example, the periodic floating point readings from a temperature sensor. The data items which are sent through a `TStream` are Java objects -- in the \"Hello Quarks!\" example, we are sending a single java.lang.String. There are a number of ways to create a `TStream`, and `Topology.strings` is the simplest. The user specifies a number of strings which will be used as the stream's data items.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");    }```The `helloStream` stream is created, and the \"Hello Quarks!\" string will be sent as its single data item.## Printing to Output`TStream.print` can be used to print the data items of a stream to standard output by invoking the `toString` method of each data item. In this case the data items are already strings, but in principle `T
 Stream.print` can be called on any stream, regardless of the datatype carried by the stream.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");        helloStream.print();    }```## Submitting the ApplicationThe only remaining step is to submit the application, which is performed by the `DirectProvider`. Submitting a Quarks application initializes the threads which execute the `Topology`, and begins processing its data sources.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");        helloStream.print();        dp.submit(top);    }```After running the application, the output is \"Hello Quarks!\":```Hello Quarks!```"
+"body": "Quarks' pure Java implementation is a powerful feature which allows it to be run on the majority of JVM-compatible systems. It also has the added benefit of enabling the developer to develop applications entirely within the Eclipse and Intellij ecosystems. For the purposes of this recipe, it will be assumed that the developer is using Eclipse. To begin the Hello World recipe, create a new project and import the necessary libraries as outlined in the [Getting Started Guide](../docs/quarks-getting-started). Next, write the following template application:``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();    }```The *DirectProvider* is an object which allows the user to submit and run the final application. It also creates the *Topology* object, which gives the developer the ability to define a stream of strings.## Using Topology.stringsThe primary abstraction in Quarks is the `TStream`. 
 A *TStream* represents the flow of data in a Quarks application; for example, the periodic floating point readings from a temperature sensor. The data items which are sent through a `TStream` are Java objects -- in the \"Hello Quarks!\" example, we are sending a single java.lang.String. There are a number of ways to create a `TStream`, and `Topology.strings` is the simplest. The user specifies a number of strings which will be used as the stream's data items.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");    }```The `helloStream` stream is created, and the \"Hello Quarks!\" string will be sent as its single data item.## Printing to Output`TStream.print` can be used to print the data items of a stream to standard output by invoking the `toString` method of each data item. In this case the data items are already strings, but in prin
 ciple `TStream.print` can be called on any stream, regardless of the datatype carried by the stream.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");        helloStream.print();    }```## Submitting the ApplicationThe only remaining step is to submit the application, which is performed by the `DirectProvider`. Submitting a Quarks application initializes the threads which execute the `Topology`, and begins processing its data sources.``` java    public static void main(String[] args) {        DirectProvider dp = new DirectProvider();        Topology top = dp.newTopology();        TStream helloStream = top.strings(\"Hello Quarks!\");        helloStream.print();        dp.submit(top);    }```After running the application, the output is \"Hello Quarks!\":```Hello Quarks!```"
 
 },
 
@@ -193,6 +206,19 @@
 
 
 {
+"title": "Recipe 3. Detecting a Sensor Value Out of Expected Range",
+"tags": "",
+"keywords": "",
+"url": "../recipes/recipe_value_out_of_range",
+"summary": "",
+"body": "Oftentimes, a user expects a sensor value to fall within a particular range. If a reading is outside the accepted limits, the user may want to determine what caused the anomaly and/or take action to reduce the impact. For instance, consider the following scenario.Suppose a corn grower in the Midwestern United States would like to monitor the average temperature in his corn field using a sensor to improve his crop yield. The optimal temperatures for corn growth during daylight hours range between 77°F and 91°F. When the grower is alerted of a temperature value that is not in the optimal range, he may want to assess what can be done to mitigate the effect.In this instance, we can use a filter to detect out-of-range temperature values.## Setting up the applicationWe assume that the environment has been set up following the steps outlined in the [Getting Started Guide](../docs/quarks-getting-started). Let's begin by creating a `DirectProvider` and `Topology`. We also define t
 he optimal temperature range and the initial temperature.```java    import static quarks.function.Functions.identity;    import java.text.DecimalFormat;    import java.util.Random;    import java.util.concurrent.TimeUnit;    import quarks.analytics.sensors.Filters;    import quarks.providers.direct.DirectProvider;    import quarks.topology.TStream;    import quarks.topology.Topology;    public class DetectValueOutOfRange {        /**         * Optimal temperatures (in Fahrenheit)         */        static double TEMP_LOW = 77.0;        static double TEMP_HIGH = 91.0;        static double currentTemp = 80.0;        public static void main(String[] args) throws Exception {            DirectProvider dp = new DirectProvider();            Topology top = dp.newTopology(\"TemperatureSensor\");            // The rest of the code pieces belong here        }    }```## Generating temperature sensor readingsThe next step is to simulate a stream of temperature readings. In our `main()`, we use th
 e `poll()` method to generate a flow of tuples, where a new tuple (temperature reading) arrives every second. We ensure that the generated reading is between 28°F and 112°F.```java    // Generate a stream of temperature sensor readings    DecimalFormat df = new DecimalFormat(\"#.#\");    Random r = new Random();    TStream temp = top.poll(() -> {        // Change current temp by some random amount between -1 and 1        while (true) {            double newTemp = -1 + (1 + 1) * r.nextDouble() + currentTemp;            // Ensure that new temperature is within [28, 112]            if (newTemp >= 28 && newTemp  simpleFiltered = temp.filter(tuple ->            tuple  TEMP_HIGH);    simpleFiltered.sink(tuple -> System.out.println(\"Temperature is out of range! \"            + \"It is \" + tuple + \"\\u00b0F!\"));```## Deadband filterAlternatively, a deadband filter can be used to glean more information about temperature changes, such as extracting the in-range temperature immediately a
 fter a reported out-of-range temperature. For example, large temperature fluctuations could be investigated more thoroughly. The `deadband` filter is a part of the `quarks.analytics` package focused on handling sensor data. Let's look more closely at the method declaration below.```java    deadband(TStream stream, Function value, Predicate inBand)```The first parameter is the stream to the filtered, which is `temp` in our scenario. The second parameter is the value to examine. Here, we use the `identity()` method to return a tuple on the stream. The last parameter is the predicate that defines the optimal range, that is, between 77°F and 91°F. it is important to note that this differs from the `TStream` version of `filter` in which one must explicitly specify the values that are out of range. The code snippet below demonstrates how the method call is pieced together. The `deadbandFiltered` stream contains temperature readings that follow the rules as described in the [Javadoc](htt
 p://quarks-edge.github.io/quarks/docs/javadoc/quarks/analytics/sensors/Filters.html#deadband-quarks.topology.TStream-quarks.function.Function-quarks.function.Predicate-):- the value is outside of the optimal range (deadband)- the first value inside the optimal range after a period being outside it- the first tupleAs with the simple filter, the stream is terminated by printing out the warnings.```java    TStream deadbandFiltered = Filters.deadband(temp,            identity(), tuple -> tuple >= TEMP_LOW && tuple  System.out.println(\"Temperature may not be \"            + \"optimal! It is \" + tuple + \"\\u00b0F!\"));```We end our application by submitting the `Topology`.## Observing the outputTo see what the temperatures look like, we can print the stream to standard out.```java    temp.print();```When the final application is run, the output looks something like the following:```    Temperature may not be optimal! It is 79.1°F!    79.1    79.4    79.0    78.8    78.0    78.3    77.
 4    Temperature is out of range! It is 76.5°F!    Temperature may not be optimal! It is 76.5°F!    76.5    Temperature may not be optimal! It is 77.5°F!    77.5    77.1    ...```Note that the deadband filter outputs a warning message for the very first temperature reading of 79.1°F. When the temperature falls to 76.5°F (which is outside the optimal range), both the simple filter and deadband filter print out a warning message. However, when the temperature returns to normal at 77.5°F, only the deadband filter prints out a message as it is the first value inside the optimal range after a period of being outside it.## The final application```java    import static quarks.function.Functions.identity;    import java.text.DecimalFormat;    import java.util.Random;    import java.util.concurrent.TimeUnit;    import quarks.analytics.sensors.Filters;    import quarks.providers.direct.DirectProvider;    import quarks.topology.TStream;    import quarks.topology.Topology;    /**     * De
 tect a sensor value out of expected range.     */    public class DetectValueOutOfRange {        /**         * Optimal temperatures (in Fahrenheit)         */        static double TEMP_LOW = 77.0;        static double TEMP_HIGH = 91.0;        static double currentTemp = 80.0;        /**         * Polls a simulated temperature sensor to periodically obtain         * temperature readings (in Fahrenheit). Use a simple filter         * and a deadband filter to determine when the temperature         * is out of the optimal range.         */        public static void main(String[] args) throws Exception {            DirectProvider dp = new DirectProvider();            Topology top = dp.newTopology(\"TemperatureSensor\");            // Generate a stream of temperature sensor readings            DecimalFormat df = new DecimalFormat(\"#.#\");            Random r = new Random();            TStream temp = top.poll(() -> {                // Change current temp by some random amount between -1 a
 nd 1                while (true) {                    double newTemp = -1 + (1 + 1) * r.nextDouble() + currentTemp;                    // Ensure that new temperature is within [28, 112]                    if (newTemp >= 28 && newTemp  simpleFiltered = temp.filter(tuple ->                    tuple  TEMP_HIGH);            simpleFiltered.sink(tuple -> System.out.println(\"Temperature is out of range! \"                    + \"It is \" + tuple + \"\\u00b0F!\"));            // Deadband filter: Perform analytics on sensor readings to            // output the first temperature, and to generate warnings            // when the temperature is out of the optimal range and            // when it returns to normal            TStream deadbandFiltered = Filters.deadband(temp,                    identity(), tuple -> tuple >= TEMP_LOW && tuple  System.out.println(\"Temperature may not be \"                    + \"optimal! It is \" + tuple + \"\\u00b0F!\"));            // See what the temperatures loo
 k like            temp.print();            dp.submit(top);        }    }```"
+
+},
+
+
+
+
+{
 "title": "Sample Programs",
 "tags": "",
 "keywords": "",

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/committers.html
----------------------------------------------------------------------
diff --git a/content/docs/committers.html b/content/docs/committers.html
index 594379b..d7dc860 100644
--- a/content/docs/committers.html
+++ b/content/docs/committers.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -531,7 +549,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/common-quarks-operations.html
----------------------------------------------------------------------
diff --git a/content/docs/common-quarks-operations.html b/content/docs/common-quarks-operations.html
index 07c8a4d..d9789f3 100644
--- a/content/docs/common-quarks-operations.html
+++ b/content/docs/common-quarks-operations.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -572,7 +590,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/community.html
----------------------------------------------------------------------
diff --git a/content/docs/community.html b/content/docs/community.html
index 8872a4c..9adaf78 100644
--- a/content/docs/community.html
+++ b/content/docs/community.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -575,7 +593,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/console.html
----------------------------------------------------------------------
diff --git a/content/docs/console.html b/content/docs/console.html
index f655311..bcefcc8 100644
--- a/content/docs/console.html
+++ b/content/docs/console.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -994,7 +1012,7 @@ The bars that are the tallest and therefore have the highest tuple count are OP_
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/faq.html
----------------------------------------------------------------------
diff --git a/content/docs/faq.html b/content/docs/faq.html
index f0ae152..cbe7784 100644
--- a/content/docs/faq.html
+++ b/content/docs/faq.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -602,7 +620,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/getinvolved.html
----------------------------------------------------------------------
diff --git a/content/docs/getinvolved.html b/content/docs/getinvolved.html
index de96d68..93347e9 100644
--- a/content/docs/getinvolved.html
+++ b/content/docs/getinvolved.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -544,7 +562,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/home.html
----------------------------------------------------------------------
diff --git a/content/docs/home.html b/content/docs/home.html
index 42e4f0f..bd949f1 100644
--- a/content/docs/home.html
+++ b/content/docs/home.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -607,7 +625,7 @@ medical device.</li>
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/overview.html
----------------------------------------------------------------------
diff --git a/content/docs/overview.html b/content/docs/overview.html
index 40c9b82..70e6f11 100644
--- a/content/docs/overview.html
+++ b/content/docs/overview.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -591,7 +609,7 @@ medical device.</li>
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/quarks-getting-started.html
----------------------------------------------------------------------
diff --git a/content/docs/quarks-getting-started.html b/content/docs/quarks-getting-started.html
index 5dda50e..56ab6fd 100644
--- a/content/docs/quarks-getting-started.html
+++ b/content/docs/quarks-getting-started.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -693,7 +711,7 @@ Your environment is set up! You can start writing your first Quarks application.
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/quarks_index.html
----------------------------------------------------------------------
diff --git a/content/docs/quarks_index.html b/content/docs/quarks_index.html
index 2c82a76..7b0975f 100644
--- a/content/docs/quarks_index.html
+++ b/content/docs/quarks_index.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -549,7 +567,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/quickstart.html
----------------------------------------------------------------------
diff --git a/content/docs/quickstart.html b/content/docs/quickstart.html
index 5ef1f3a..e5908c7 100644
--- a/content/docs/quickstart.html
+++ b/content/docs/quickstart.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -568,7 +586,7 @@ Here we map a stream of random numbers into JSON as the payload for a device eve
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/samples.html
----------------------------------------------------------------------
diff --git a/content/docs/samples.html b/content/docs/samples.html
index f0d9bc0..7a1e894 100644
--- a/content/docs/samples.html
+++ b/content/docs/samples.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -587,7 +605,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/search.html
----------------------------------------------------------------------
diff --git a/content/docs/search.html b/content/docs/search.html
index 3ac15bb..4f59e92 100644
--- a/content/docs/search.html
+++ b/content/docs/search.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -509,7 +527,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_collaboration.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_collaboration.html b/content/docs/tag_collaboration.html
index 6f8c678..d034385 100644
--- a/content/docs/tag_collaboration.html
+++ b/content/docs/tag_collaboration.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_content_types.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_content_types.html b/content/docs/tag_content_types.html
index 9629d0d..df0d91c 100644
--- a/content/docs/tag_content_types.html
+++ b/content/docs/tag_content_types.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_formatting.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_formatting.html b/content/docs/tag_formatting.html
index 0d5cc13..7160703 100644
--- a/content/docs/tag_formatting.html
+++ b/content/docs/tag_formatting.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_getting_started.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_getting_started.html b/content/docs/tag_getting_started.html
index 99e2e56..bfe7424 100644
--- a/content/docs/tag_getting_started.html
+++ b/content/docs/tag_getting_started.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -564,6 +582,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -597,7 +619,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_mobile.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_mobile.html b/content/docs/tag_mobile.html
index 8b64d79..553018d 100644
--- a/content/docs/tag_mobile.html
+++ b/content/docs/tag_mobile.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_navigation.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_navigation.html b/content/docs/tag_navigation.html
index 7473b64..7b18f16 100644
--- a/content/docs/tag_navigation.html
+++ b/content/docs/tag_navigation.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_publishing.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_publishing.html b/content/docs/tag_publishing.html
index 2655388..ac7e7d8 100644
--- a/content/docs/tag_publishing.html
+++ b/content/docs/tag_publishing.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_single_sourcing.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_single_sourcing.html b/content/docs/tag_single_sourcing.html
index aae5fb3..1312ba5 100644
--- a/content/docs/tag_single_sourcing.html
+++ b/content/docs/tag_single_sourcing.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/docs/tag_special_layouts.html
----------------------------------------------------------------------
diff --git a/content/docs/tag_special_layouts.html b/content/docs/tag_special_layouts.html
index 0b703e1..7305ef8 100644
--- a/content/docs/tag_special_layouts.html
+++ b/content/docs/tag_special_layouts.html
@@ -335,6 +335,24 @@ window.location.href = uri;
 
                     
                     
+                    
+                    
+                    <li><a href="../recipes/recipe_value_out_of_range.html">Recipe 3. Detecting a Sensor Value Out of Expected Range</a></li>
+                    
+
+                    
+
+                    
+                    
+                    
+                    
+                    <li><a href="../recipes/recipe_different_processing_against_stream.html">Recipe 4. Applying Different Processing Against a Single Stream</a></li>
+                    
+
+                    
+
+                    
+                    
                 </ul>
                 
                 
@@ -559,6 +577,10 @@ $('#toc').on('click', 'a', function() {
     
    
     
+   
+    
+   
+    
     
 </tbody>
 </table>
@@ -592,7 +614,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                
- Site last generated: Mar 22, 2016 <br />
+ Site last generated: Mar 23, 2016 <br />
 
                 </div>
             </div>

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/prince-file-list.txt
----------------------------------------------------------------------
diff --git a/content/prince-file-list.txt b/content/prince-file-list.txt
index 0d0172a..687c8c2 100644
--- a/content/prince-file-list.txt
+++ b/content/prince-file-list.txt
@@ -64,6 +64,16 @@
                                   
                         
                      
+                         
+                            http://quarks.incubator.apache.org/recipes/recipe_value_out_of_range.html
+                                  
+                        
+                     
+                         
+                            http://quarks.incubator.apache.org/recipes/recipe_different_processing_against_stream.html
+                                  
+                        
+                     
               
           
               

http://git-wip-us.apache.org/repos/asf/incubator-quarks-website/blob/f6777c2d/content/recipes/images/different_processing_against_stream_topology_graph.jpg
----------------------------------------------------------------------
diff --git a/content/recipes/images/different_processing_against_stream_topology_graph.jpg b/content/recipes/images/different_processing_against_stream_topology_graph.jpg
new file mode 100644
index 0000000..32fc2ea
Binary files /dev/null and b/content/recipes/images/different_processing_against_stream_topology_graph.jpg differ