You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/08/23 22:37:43 UTC

[GitHub] rabbah closed pull request #324: Add validation and link checking via Travis CI

rabbah closed pull request #324: Add validation and link checking via Travis CI
URL: https://github.com/apache/incubator-openwhisk-website/pull/324
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..5ca59ca
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,23 @@
+language: ruby
+rvm:
+  - 2.4.1
+
+script: ./bin/test
+
+# branches:
+#   only:
+#   - asf-site     # test the asf-site branch
+#   - /pages-(.*)/ # test every branch which starts with "pages-"
+
+env:
+  global:
+  - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer
+  - DISABLE_EXTERNAL_SITE_CHECK=true # speeds up installation of html-proofer
+
+sudo: false # route your build to the container-based infrastructure for a faster build
+
+cache: bundler # caching bundler gem packages will speed up build
+
+# Optional: disable email notifications about the outcome of your builds
+notifications:
+  email: false
diff --git a/Gemfile b/Gemfile
index 360d215..5e761e8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -22,3 +22,6 @@ gem "jekyll", "3.3.0"
 group :jekyll_plugins do
    gem "jekyll-feed", "~> 0.6"
 end
+
+# used to check html on build
+gem 'html-proofer'
diff --git a/README.md b/README.md
index 08fdc23..15ca970 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@
 
 # Apache OpenWhisk Website
 
-[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
+[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0) [![Build Status](https://travis-ci.org/apache/incubator-openwhisk-website.svg?branch=master)](https://travis-ci.org/apache/incubator-openwhisk-website)
 
 Apache OpenWhisk is a cloud-first distributed event-based programming service. It provides a programming model to upload event handlers to a cloud service, and register the handlers to respond to various events.
 
@@ -27,10 +27,10 @@ Apache OpenWhisk is a cloud-first distributed event-based programming service. I
 
 ### Install Prerequisites
 
-* Download and install Node.js: see [https://nodejs.org/](https://nodejs.org/)
-* Download and install Ruby: see [https://www.ruby-lang.org/en/documentation/installation/](https://www.ruby-lang.org/en/documentation/installation/)
+- Download and install Node.js: see [https://nodejs.org/](https://nodejs.org/)
+- Download and install Ruby: see [https://www.ruby-lang.org/en/documentation/installation/](https://www.ruby-lang.org/en/documentation/installation/)
 
-``` sh
+```sh
 # Verify Node and Node Package Manager are installed
 node -v
 npm -v
@@ -44,7 +44,7 @@ gem install jekyll bundler
 
 ### Clone and start development server
 
-``` sh
+```sh
 # Clone the repository (and correct branch).
 git clone https://github.com/apache/incubator-openwhisk-website.git
 
@@ -58,11 +58,22 @@ bundle install
 bin/develop
 ```
 
+### Validate HTML, links and more
+
+To make sure nothing is broken on the website we use [html-proofer](https://github.com/gjtorikian/html-proofer),
+it checks to see if any of the links 404s, if the HTML is valid, images have alt tags and more.
+
+Run the following command to run html-proofer:
+
+```sh
+bin/test
+```
+
 ## How to Build Jekyll to Output Static Files
 
 If you need to generate static files, run the following:
 
-``` sh
+```sh
 # NOTE: Make sure you have already cloned the repository and moved into the directory.
 
 # Build the site.
@@ -74,7 +85,8 @@ This will build static files to a directory called `_site/` in the project root.
 ## Troubleshooting
 
 If you get an error 'bundle: command not found' attempting to build the site, you may need to manually install the 'bundler' package:
-``` sh
+
+```sh
  gem install bundler
 ```
 
@@ -90,7 +102,7 @@ https://builds.apache.org/job/OpenWhisk-website/
 
 Report bugs, ask questions and request features [here on GitHub](../../issues).
 
-You can also join our slack channel and chat with developers.   To get access to our slack channel, please see the instructions [here](https://github.com/apache/incubator-openwhisk/wiki).
+You can also join our slack channel and chat with developers. To get access to our slack channel, please see the instructions [here](https://github.com/apache/incubator-openwhisk/wiki).
 
 ### License
 
diff --git a/_config.yml b/_config.yml
index 3889f78..18c81c9 100644
--- a/_config.yml
+++ b/_config.yml
@@ -47,5 +47,6 @@ exclude:
   - Gemfile
   - Gemfile.lock
   - src/
+  - vendor/
 
 iis_slider_array: []
diff --git a/_includes/partial/site-footer.html b/_includes/partial/site-footer.html
index 0d84c75..ba1bd31 100644
--- a/_includes/partial/site-footer.html
+++ b/_includes/partial/site-footer.html
@@ -40,7 +40,7 @@
       All other marks mentioned may be trademarks or registered trademarks
       of their respective owners.
     </div>
-  </main class="footer-row">
+  </main>
   <main class="footer-row">
       <div>
           Apache OpenWhisk is an effort undergoing incubation at The Apache
diff --git a/_includes/partial/site-header.html b/_includes/partial/site-header.html
index f6ad7f2..8b75163 100644
--- a/_includes/partial/site-header.html
+++ b/_includes/partial/site-header.html
@@ -12,25 +12,25 @@
     <div class="header-section-social-icons">
         <div class="header-row-social-icons">
             <a class="header-button-icon" style="order: 7;" href="https://github.com/apache?q=openwhisk" title="Apache OpenWhisk project repositories on GitHub">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-github-white.svg">
+                <img class="header-icon-image" alt="Github" src="{{ site.github.url }}/images/icons/icon-github-white.svg">
             </a>
             <a class="header-button-icon" style="order: 6;" href="slack.html" title="Apache OpenWhisk on Slack">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-slack-white.svg">
+                <img class="header-icon-image" alt="Slack" src="{{ site.github.url }}/images/icons/icon-slack-white.svg">
             </a>
             <a class="header-button-icon" style="order: 5;" href="https://twitter.com/search?q=openwhisk" title="Apache OpenWhisk on Twitter">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-twitter-white.svg">
+                <img class="header-icon-image" alt="Twitter" src="{{ site.github.url }}/images/icons/icon-twitter-white.svg">
             </a>
             <a class="header-button-icon" style="order: 4;" href="https://medium.com/openwhisk" title="Apache OpenWhisk on Medium">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-medium-white.svg">
+                <img class="header-icon-image" alt="Medium" src="{{ site.github.url }}/images/icons/icon-medium-white.svg">
             </a>
             <a class="header-button-icon" style="order: 3;" href="https://www.youtube.com/channel/UCbzgShnQk8F43NKsvEYA1SA" title="Apache OpenWhisk on YouTube">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-youtube-white.svg">
+                <img class="header-icon-image" alt="YouTube" src="{{ site.github.url }}/images/icons/icon-youtube-white.svg">
             </a>
             <a class="header-button-icon" style="order: 2;" href="http://stackoverflow.com/questions/tagged/openwhisk" title="Apache OpenWhisk on Stack Overflow">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-stack-overflow-white.svg">
+                <img class="header-icon-image" alt="Overflow" src="{{ site.github.url }}/images/icons/icon-stack-overflow-white.svg">
             </a>
             <a class="header-button-icon" style="order: 1;" href="http://www.slideshare.net/OpenWhisk" title="Apache OpenWhisk on SlideShare">
-                <img class="header-icon-image" src="{{ site.github.url }}/images/icons/icon-slideshare-white.svg">
+                <img class="header-icon-image" alt="SlideShare" src="{{ site.github.url }}/images/icons/icon-slideshare-white.svg">
             </a>
         </div>
     </div>
diff --git a/_layouts/community.html b/_layouts/community.html
index 72c7b62..a6fb6ed 100644
--- a/_layouts/community.html
+++ b/_layouts/community.html
@@ -40,7 +40,7 @@
   </div>
 
   <section id="whiskNodes">
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="community"></a>
               <h2>Community</h2>
@@ -49,7 +49,7 @@ <h2>Community</h2>
               </div>
           </div>
       </main>
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="social"></a>
               <h4>Media</h4>
@@ -74,7 +74,7 @@ <h4>Media</h4>
               <p>If you wish to engage our community's Contributors and Committers around project architecture, design and source code, please subscribe to and participate in our developer mailing list as described below.</p>
           </div>
       </main>
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="mailing-lists"></a>
               <h4>Mailing Lists</h4>
@@ -92,7 +92,7 @@ <h5>How to join the Apache OpenWhisk mailing list<h5>
               <p>To see existing messages, <a href="https://lists.apache.org/list.html?dev@openwhisk.apache.org">https://lists.apache.org/list.html?dev@openwhisk.apache.org</a>.</p>
           </div>
       </main>
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="wiki"></a>
               <h4>Project Wiki</h4>
@@ -110,7 +110,7 @@ <h4>Project Wiki</h4>
           </div>
       </main>
 
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="events"></a>
               <h4>Events</h4>
@@ -132,7 +132,7 @@ <h5>Apache events</h5>
           </div>
        </main>
 
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="supporters"></a>
               <h4>Supporters</h4>
@@ -222,13 +222,14 @@ <h4>Supporters</h4>
                          alt="Naver supports Apache OpenWhisk">
                       </a>
                   </div>
-                  <div class="flow-item-container">
+                  <!-- TODO: remove if still offline -->
+                  <!-- <div class="flow-item-container">
                       <a href="http://www.nepente.io/en/" target="_blank">
                       <img class="flow-item-image"
                          src="{{ site.github.url }}/images/supporter/nepente.png"
                          alt="Nepente supports Apache OpenWhisk">
                       </a>
-                  </div>
+                  </div> -->
                   <div class="flow-item-container">
                       <a href="https://www.neuroapplied.com/" target="_blank">
                       <img class="flow-item-image"
diff --git a/_layouts/documentation.html b/_layouts/documentation.html
index d35e849..22607f7 100644
--- a/_layouts/documentation.html
+++ b/_layouts/documentation.html
@@ -107,7 +107,7 @@
     </div>
 
     <section id="whiskNodes">
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="documentation"></a>
                 <h2>Documentation</h2>
@@ -117,7 +117,7 @@ <h2>Documentation</h2>
             </div>
         </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="project-structure"></a>
             <h2>Project Structure</h2>
@@ -468,7 +468,7 @@ <h4>Others</h4>
         </div>
     </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <h5>OpenWhisk documentation is organized by the following roles:</h5>
             <ul>
@@ -482,7 +482,7 @@ <h5>OpenWhisk documentation is organized by the following roles:</h5>
     </main>
 
     <!-- Operators Section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="operators"></a>
             <h2>Operators</h2>
@@ -490,7 +490,7 @@ <h2>Operators</h2>
     </main>
 
     <!-- Deployment section under Operator -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="openwhisk_deployment"></a>
             <h3>OpenWhisk Deployment</h3>
@@ -568,7 +568,7 @@ <h4>Vagrant</h4>
     </main>
 
     <!-- Operators Administrative Operations -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="deployment_admin"></a>
             <h3>Administrative Operations</h3>
@@ -582,7 +582,7 @@ <h3>Administrative Operations</h3>
     </main>
 
     <!-- Operators resources -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="operators_resources"></a>
             <h3>Operators Resources</h3>
@@ -598,7 +598,7 @@ <h3>Operators Resources</h3>
     </main>
 
     <!-- Developers Section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="developers"></a>
             <h2>Developers</h2>
@@ -610,7 +610,7 @@ <h2>Developers</h2>
     </main>
 
     <!-- Developers Pre Requisites section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="pre-requisites"></a>
             <h4>Pre-requisites</h4>
@@ -622,7 +622,7 @@ <h4>Pre-requisites</h4>
     </main>
 
     <!-- Using OpenWhisk section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="using-openwhisk"></a>
             <h4>Using OpenWhisk</h4>
@@ -739,7 +739,7 @@ <h5>OpenWhisk Clients</h5>
     </main>
 
         <!-- actions section -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="actions"></a>
                 <h4>Actions</h4>
@@ -808,7 +808,7 @@ <h4>Actions</h4>
         </main>
 
         <!-- Here we are starting with writing actions in NodeJS -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="nodejs"></a>
                 <h4>NodeJs</h4>
@@ -908,7 +908,7 @@ <h5>Additional Resources</h5>
         </main>
 
         <!-- Here we are starting with writing actions in python -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="python"></a>
                 <h4>Python</h4>
@@ -997,7 +997,7 @@ <h5>Additional Resources</h5>
         </main>
 
         <!-- Here we are starting with writing actions in python -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="go"></a>
                 <h4>Go</h4>
@@ -1102,7 +1102,7 @@ <h5>Additional Resources</h5>
         </main>
 
         <!-- Here we are starting with writing actions in Java -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="java"></a>
                 <h4>Java</h4>
@@ -1175,7 +1175,7 @@ <h5>Additional Resources</h5>
             </div>
         </main>
 
-        <!--main id="doc">
+        <!--main class="doc">
             <div class="content">
                 <h4 id="docker">Docker</h4>
                 <p></p>
@@ -1201,10 +1201,10 @@ <h5 id="docker-other-resources">Other Resources</h5>
             </div>
         </main-->
 
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="php"></a>
-                <h4 id="php">PHP</h4>
+                <h4>PHP</h4>
                 <p></p>
                 <a class="indexable" id="php-actions"></a>
                 <h5>Creating and Invoking PHP actions</h5>
@@ -1295,7 +1295,7 @@ <h5>Additional Resources</h5>
             </div>
         </main>
 
-        <!--main id="doc">
+        <!--main class="doc">
             <div class="content">
                 <a class="indexable" id="swift"></a>
                 <h4>Swift</h4>
@@ -1319,7 +1319,7 @@ <h5>Additional Resources</h5>
         </main-->
 
         <!-- Managing Actions with OpenWhisk Packages -->
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="managing_actions_with_openwhisk_packages"></a>
                 <h4>Managing Actions with OpenWhisk Packages</h4>
@@ -1435,7 +1435,7 @@ <h4>Managing Actions with OpenWhisk Packages</h4>
                 </p>
         </div>
     </main>
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="connecting_actions_to_event_sources"></a>
             <h4>Connecting Actions to Event Sources</h4>
@@ -1444,7 +1444,7 @@ <h4>Connecting Actions to Event Sources</h4>
                 OpenWhisk is based on event-driven architecture in which actions/functions should be connected
                 to external/internal event sources such as message queues, database changes, webhooks, etc. When these
                 events happen, functions/actions are automatically invoked without explicitly invoking them
-                unlike we saw before in <a href="#creating-and-invoking-actions">Creating And Invoking Actions</a>.
+                unlike we saw before in <a href="#actions">Creating And Invoking Actions</a>.
                 Now, events from these internal/external event sources are channeled through a trigger.
             </p>
             <p>
@@ -1565,7 +1565,7 @@ <h4>Connecting Actions to Event Sources</h4>
         </div>
     </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="using_openwhisk_enabled_services"></a>
             <h4>Using OpenWhisk Enabled Services</h4>
@@ -1633,7 +1633,7 @@ <h4>Using OpenWhisk Enabled Services</h4>
         </div>
     </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="sample_openwhisk_applications"></a>
             <h4>Sample OpenWhisk Applications</h4>
@@ -1664,7 +1664,7 @@ <h5>openwhisk-slackinvite:</h5>
         </div>
     </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="tutorial_and_workshop"></a>
             <h4>Tutorial and Workshop</h4>
@@ -1683,7 +1683,7 @@ <h5>OpenWhisk Workshop</h5>
         </div>
     </main>
 
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="development_tools"></a>
             <h4>Development Tools</h4>
@@ -1698,7 +1698,7 @@ <h5>The OpenWhisk Debugger</h5>
     </main>
 
     <!-- Contributors Section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="contributors"></a>
             <h2>Contributors</h2>
@@ -1717,7 +1717,7 @@ <h2>Contributors</h2>
     </main>
 
     <!-- Other Resources Section -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="other-resources"></a>
             <h2>Other Resources</h2>
@@ -1730,7 +1730,7 @@ <h2>Other Resources</h2>
     </main>
 
     <!-- Frequently Asked Questions -->
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <a class="indexable" id="faq"></a>
             <h2>Frequently Asked Questions</h2>
diff --git a/_layouts/downloads.html b/_layouts/downloads.html
index 198ba45..5b2b0b4 100644
--- a/_layouts/downloads.html
+++ b/_layouts/downloads.html
@@ -26,7 +26,7 @@
     </div>
 
     <section id="whiskNodes">
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="downloads"></a>
                 <h2>Downloads</h2>
@@ -36,7 +36,7 @@ <h2>Downloads</h2>
             </div>
         </main>
 
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="versioning"></a>
                 <h3>Versioning</h3>
@@ -50,7 +50,7 @@ <h3>Versioning</h3>
             </div>
         </main>
 
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="releases"></a>
                 <h3>Releases</h3>
diff --git a/_layouts/events.html b/_layouts/events.html
index 6908b7b..1816564 100644
--- a/_layouts/events.html
+++ b/_layouts/events.html
@@ -9,7 +9,7 @@
 </section>
 
 <section id="whiskNodes">
-  <main id="doc">
+  <main class="doc">
     <div class="content">
       <h2>{{ page.title }}</h2>
       <p>
@@ -17,8 +17,8 @@ <h2>{{ page.title }}</h2>
       </p>
     </div>
   </main>
-  
-  <main id="doc">
+
+  <main class="doc">
     <div class="content">
       {{ content }}
     </div>
diff --git a/_layouts/home.html b/_layouts/home.html
index 50e537b..127000e 100644
--- a/_layouts/home.html
+++ b/_layouts/home.html
@@ -58,7 +58,7 @@ <h4>Write functions in any language</h4>
                 <b><a href="https://github.com/apache/incubator-openwhisk-runtime-php">PHP</a></b>.
             </p>
             <p>
-                If you need languages or libraries the current "out-of-the-box" runtimes do not support, you can create and customize your own executables as Zip Actions which run on the <b><a href="https://github.com/apache/incubator-openwhisk-runtime-docker/blob/master/README.md">Docker</a></b> runtime by using the <a href="https://github.com/apache/incubator-openwhisk-runtime-docker/blob/master/sdk/docker/README.md">Docker SDK</a></b>.  Some examples of how to support other languages using Docker Actions include <b><a href="https://medium.com/openwhisk/openwhisk-and-rust-lang-24025734a834">Rust</a></b>, and <b><a href="https://github.com/rainbyte/openwhisk-wrapper">Haskell</a></b>.
+                If you need languages or libraries the current "out-of-the-box" runtimes do not support, you can create and customize your own executables as Zip Actions which run on the <b><a href="https://github.com/apache/incubator-openwhisk-runtime-docker/blob/master/README.md">Docker</a></b> runtime by using the <b><a href="https://github.com/apache/incubator-openwhisk-runtime-docker/blob/master/sdk/docker/README.md">Docker SDK</a></b>.  Some examples of how to support other languages using Docker Actions include <b><a href="https://medium.com/openwhisk/openwhisk-and-rust-lang-24025734a834">Rust</a></b>, and <b><a href="https://github.com/rainbyte/openwhisk-wrapper">Haskell</a></b>.
             </p>
             <p>
                 Once you have your function written, use the
diff --git a/_layouts/slack.html b/_layouts/slack.html
index fabb3ac..38831e6 100644
--- a/_layouts/slack.html
+++ b/_layouts/slack.html
@@ -19,7 +19,7 @@
 </section>
 
 <section id="whiskNodes">
-    <main id="doc">
+    <main class="doc">
         <div class="content">
             <h3>Already a Team member?</h3>
             <p>click here: <a href="https://openwhisk-team.slack.com/"><b>openwhisk-team.slack.com</b></a></p>
diff --git a/_scss/_base.scss b/_scss/_base.scss
index 61eda09..501d50d 100644
--- a/_scss/_base.scss
+++ b/_scss/_base.scss
@@ -140,13 +140,12 @@ footer {
       height: $image-wrapper-height;
       max-width: $image-wrapper-max-width;
       align-self: center;
-      margin: auto;  // allows centering in all layouts
+      margin: auto; // allows centering in all layouts
     }
   }
 }
 
-// TODO look to remove this ID
-#doc {
+.doc {
   position: relative;
   overflow: hidden;
   text-align: left;
diff --git a/bin/test b/bin/test
new file mode 100755
index 0000000..699a933
--- /dev/null
+++ b/bin/test
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+set -e # halt script on error
+
+# Make sure we have the required dependencies.
+echo "$ npm install"
+npm install
+
+# Create the JavaScript bundle.
+echo "$ npm run build:js"
+npm run build:js
+
+# build site with jekyll
+echo "$ bundle exec jekyll build"
+bundle exec jekyll build
+
+if [[ $DISABLE_EXTERNAL_SITE_CHECK = "true" ]]; then
+  # run htmlproofer to test the site
+  echo "$ bundle exec htmlproofer ./_site --check-html --disable-external"
+  bundle exec htmlproofer ./_site --check-html --disable-external true
+else
+  # run htmlproofer to test the site
+  echo "$ bundle exec htmlproofer ./_site --check-html"
+  bundle exec htmlproofer ./_site --check-html
+fi
diff --git a/events.md b/events.md
index bb04e8d..c740008 100644
--- a/events.md
+++ b/events.md
@@ -3,6 +3,7 @@ layout: events
 title: OpenWhisk Events Archive
 lede: This is the list of historic events
 ---
+
 <!--
 # Licensed to the Apache Software Foundation (ASF) under one or more contributor
 # license agreements; and to You under the Apache License, Version 2.0.
@@ -13,7 +14,6 @@ lede: This is the list of historic events
 - [**IBM Think**](https://www.ibm.com/events/think/), March 19th–22rd, Las Vegas, USA<br/>Several talks on OpenWhisk and IBM Cloud Functions.
 - [**Voxxed Days Bristol**](https://voxxeddays.com/bristol/), March 15th, Bristol, UK<br/>James Thomas gave a talk about "Microservices Without Servers."
 
-
 ### February 2018
 
 - [**ServerlessConf Boston Meetup**](https://www.meetup.com/Serverless-Boston/events/245915761/), February 7th, Boston, US<br/>Paul Castro presented on Apache OpenWhisk.
@@ -22,19 +22,16 @@ lede: This is the list of historic events
 - [**JeffConf Hamburg**](https://hamburg.jeffconf.com/), February 15th-16th, Hamburg, Germany<br/>Several OpenWhisk members in attendance.
 - [**DevNexus Atlanta**](https://devnexus.com/speakers/), February 21st-23rd, Atlanta, US<br/>Raymond Camden provided "A general introduction to serverless with Apache OpenWhisk."
 
-
 ### January 2018
 
 - [**CodeMash**](https://akrabat.com/talks/serverless-apis-codemash/), January 9th-12th, Sandusky, US<br/>Rob Allen spoke about how to "Build a Delightful API with Serverless Technology."
 
-
 ### November 2017
 
 - [**µCon London**](https://skillsmatter.com/conferences/8549-con-2017-the-microservices-conference), November 6th-7th 2017, London, UK<br/>Rob Allen will give a talk on building serverless APIs in Swift
 - [**Devoxx Morocco**](https://devoxx.ma/), November 14th-16th 2017, Casablanca, Morocco<br/>James Thomas gave a talk on building serverless applications with OpenWhisk
 - [**UA Mobile**](http://uamobile.org/topics/serverless-swift-apache-openwhisk), November 25th 2017, Kiev, Ukraine<br/>James Thomas gave a talk on building mobile APIs with Swift on OpenWhisk
 
-
 ### October 2017
 
 - [**TopConf Duesseldorf**](https://www.topconf.com/conference//duesseldorf-2017/talk/microservices-without-servers/), October 4th-6th 2017, Cologne, Germany<br/>James Thomas gave a talk on building serverless applications using OpenWhisk
@@ -45,211 +42,201 @@ lede: This is the list of historic events
 - [**Going Serverless**](http://certifiedfreshevents.com/events/going-serverless/), October 20th 2017, Online Webinar<br/>James Thomas gave a talk on building multi-provider serverless applications with The Serverless Framework and OpenWhisk
 - [**BristolJS October**](https://www.meetup.com/BristolJS/events/242690371/), October 25th 2017, Bristol, England<br/>James Thomas gave a talk on serverless Node.js applications with OpenWhisk
 
-
 ### September 2017
 
 - [**APIDays Zurich**](http://www.apidays.io/events/zurich-2017), September 26th-27th 2017, Zurich, Switzerland<br/>Rob Allen gave a talk on building serverless APIs in Swift
 - [**Pixels Camp**](https://pixels.camp/jthomas), September 28th-30th 2017, Lisbon, Portugal<br/>James Thomas gave a talk on building serverless applications using OpenWhisk
 - [**SwiftConf Europe**](https://swiftconf.com/), September 6th-7th 2017, Cologne, Germany<br/>James Thomas gave a talk on Serverless Swift APIs using OpenWhisk
 
-
 ### June 2017
 
 - <a name="2017-06-21" href="#2017-06-21">**OpenWhisk Meetup Austin, TX**</a>, June 21st 2017, Austin, TX<br>[Carlos Santana](https://twitter.com/csantanapr) gave a talk, with demos, and discussion of latest features.
 - [**Acadiana Software Group**](https://www.facebook.com/events/1920692501553535/), June 14th 2017, Lafayette, USA<br/>Raymond Camden gave a talk on OpenWhisk
 
-
 ### May 2017
 
-- [**Meetup Serverless Amsterdam**](https://serverless.amsterdam/workshop-going-serverless-with-openwhisk.html), May 29th 2017, Amsterdam, Netherlands<br/>Andreas Nauerz and Markus Thömmes gave a talk with a hands-on workshop on OpenWhisk
+- [**Meetup Serverless Amsterdam**](https://www.meetup.com/ServerlessAmsterdam/events/239833030/), May 29th 2017, Amsterdam, Netherlands<br/>Andreas Nauerz and Markus Thömmes gave a talk with a hands-on workshop on OpenWhisk
 - [**Meetup Triangle CocoaHeads**](https://www.meetup.com/nscoderrtp/events/239925683/), May 25th 2017, Raleigh, USA<br>[Carlos Santana](https://twitter.com/csantanapr) gave a talk on OpenWhisk and Swift at the Triangle Cocoa - Mac and iOS Development Meetup
-- [**ApacheCon North America**](http://events.linuxfoundation.org/events/apachecon-north-america), May 16th-18th 2017, Miami, USA<br/>Carlos Santana and Matt Rutkowski gave talks on Apache OpenWhisk
+- [**ApacheCon North America**](http://events17.linuxfoundation.org/events/apachecon-north-america), May 16th-18th 2017, Miami, USA<br/>Carlos Santana and Matt Rutkowski gave talks on Apache OpenWhisk
 - [**Codemotion Amsterdam**](http://amsterdam2017.codemotionworld.com/), May 16th-17th 2017, Amsterdam, Netherlands<br/>James Thomas gave a talk on building serverless applications using OpenWhisk
-- [**Meetup Triangle Bluemix**](https://www.meetup.com/rtpbluemix/events/238926973/), May 11th 2017, NCSU Centennial Campus, Raleigh, NC USA<br/>IBM Development team contributing to OpenWhisk provided an overview and live demos using Bluemix.
+- [**Meetup Triangle Bluemix**](https://web.archive.org/web/20170720100346/https://www.meetup.com/rtpbluemix/), May 11th 2017, NCSU Centennial Campus, Raleigh, NC USA<br/>IBM Development team contributing to OpenWhisk provided an overview and live demos using Bluemix.
 - [**Meetup Serverless Berlin**](https://www.meetup.com/eBay-Europe-Technology/events/239295491/), May 4th 2017, Berlin, Germany<br/>Andreas Nauerz and Jeremias Werner gave a talk and ran a hands-on workshop on OpenWhisk
 
-
 ### April 2017
 
 - [**ServerlessConf Austin**](http://austin.serverlessconf.io/), April 27th-28th 2017, Austin, USA<br/>OpenWhisk team attended
 - [**ServerlessConf Austin**](https://medium.com/openwhisk/openwhisk-workshop-at-the-serverless-conference-in-austin-sign-up-now-c2b88f5bac9d#.73xz9bl16), April 26th 2017, Austin, USA<br/>Andreas Nauerz et al ran a hands-on workshop on OpenWhisk
 - [**Into the Box**](https://www.intothebox.org/), April 26th-28th 2017, The Woodlands, USA<br/>Raymond Camden gave a talk on OpenWhisk
-- [**Meetup TRI REST**](https://www.meetup.com/TRI-REST/events/238345148/?from=ref), April 26th 2017, Raleigh, USA<br/>Carlos Santana gave a talk on OpenWhisk
+- [**Meetup TRI REST**](https://web.archive.org/web/20161012050122/http://www.meetup.com:80/TRI-REST/), April 26th 2017, Raleigh, USA<br/>Carlos Santana gave a talk on OpenWhisk
 - [**Meetup Serverless Hamburg**](https://www.meetup.com/Serverless-Hamburg/events/238520956/), April 10th 2017, Hamburg, Germany<br/>Andreas Nauerz and Xin Cai gave a talk and run a hands-on workshop on OpenWhisk
 - [**Meetup Serverless Boston**](https://www.meetup.com/Serverless-Boston/events/237480548/), April 5th 2017, Boston, USA<br/>Paul Castro and Perry Cheng gave a talk on OpenWhisk
-- [**O'Reilly Software Architecture Conference**](https://conferences.oreilly.com/software-architecture/sa-ny/public/schedule/grid/public/2017-04-05), April 5th 2017, New York, USA<br/>Daniel Krook gave a keynote with other talks on OpenWhisk by Ioana Baldini and Rodric Rabbah
-
+- [**O'Reilly Software Architecture Conference**](https://conferences.oreilly.com/software-architecture/sa-ny-2017), April 5th 2017, New York, USA<br/>Daniel Krook gave a keynote with other talks on OpenWhisk by Ioana Baldini and Rodric Rabbah
 
 ### March 2017
 
 - [**Meetup Serverless Vienna**](https://www.meetup.com/Serverless-Vienna/events/238392790/), March 28th 2017, Vienna, Austria<br/>Coding on various Serverless systems, incl OpenWhisk.
-- [**CloudNativeCon and KubeCon Europe**](http://events.linuxfoundation.org/events/cloudnativecon-and-kubecon-europe), March 29th–30th 2017, Berlin, Germany<br/>Daniel Krook gave an OpenWhisk demo at the IBM booth and was available for questions
-- [**Devoxx US**](https://devoxx.us/), March 21st–23rd 2017, Las Vegas, USA<br/>OpenWhisk team attended
+- [**CloudNativeCon and KubeCon Europe**](https://events17.linuxfoundation.org/events/cloudnativecon-and-kubecon-europe), March 29th–30th 2017, Berlin, Germany<br/>Daniel Krook gave an OpenWhisk demo at the IBM booth and was available for questions
+- [**Devoxx US**](https://devoxx.com/), March 21st–23rd 2017, Las Vegas, USA<br/>OpenWhisk team attended
 - [**IBM InterConnect**](http://www.ibm.com/cloud-computing/us/en/interconnect/), March 19th–23rd 2017, Las Vegas, USA<br/>OpenWhisk team attended
-<details><summary><strong>Ask Me Anything</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7291A" target="_blank">7291A: Bluemix OpenWhisk: Ask Me Anything Expert Station</a><br/>
-Tuesday, 1:00 PM-2:45 PM; DevZone Ask Me Anything # 6; Carlos Santana (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7237A" target="_blank">7237A: Drones, Watson and Bluemix</a><br/>
-Tuesday, 3:00 PM-5:00 PM; DevZone Ask Me Anything # 1; Andrew Trice (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7077A" target="_blank">7077A: Ask Me Anything on Using OpenWhisk for Your Next Cloud-Native Project</a><br/>
-Wednesday, 10:00 AM-11:45 AM; DevZone Ask Me Anything # 6, Daniel Krook (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Breakout Sessions</strong></summary>
-<ul>
-<li><strong>1427A: Serverless: Where We are Now and Where We're Heading</strong><br/>
-Sunday, 09:30 AM-10:30 AM; Mandalay Bay South, Level 2 Reef A; Michael Behrendt (IBM), Andreas Nauerz (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7377A" target="_blank">7377A: API Lifecycle Innovations</a><br/>
-Sunday, 10:40 AM-11:00 AM; South Pacific F; Jim Laredo (IBM), Erik Wittern (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7402A" target="_blank">7402A: The Serverless Revolution Continues: OpenWhisk</a><br/>
-Sunday, 11:00 AM-11:30 AM; South Pacific F; Ioana Baldini (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7380A" target="_blank">7380A: Data, Data Everywhere, and Lots of Drops to Drink (Demos)</a><br/>
-Sunday, 1:00 PM-1:30 P; South Pacific G; Paula Ta-Shma (IBM), Dalit Naor (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7367A" target="_blank">7367A: The Serverless Revolution Continues: The Latest from OpenWhisk</a><br/>
-Sunday, 02:00 PM-02:30 PM; South Pacific H; Stephen Fink (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7392A" target="_blank">7329A: API Economy Demonstrations</a><br/>
-Sunday, 2:00 PM-2:30 P; South Pacific G; Jim Laredo (IBM), Erik Wittern (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3351A" target="_blank">3351A: MediaSpirit: A Bluemix and OpenWhisk Love Story</a><br/>
-Monday, 2:00 PM-2:45 PM; South Pacific G; Andreas Nauerz (IBM), Barry Nijenhuis (SiteSpirit)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2724A" target="_blank">2724A: Create Event-Driven iOS Apps Using IBM Mobile Foundation, OpenWhisk Runtime and Server-Side Swift</a><br/>
-Monday, 3:15 PM-4:00 PM; South Pacific D; Srinivasan Nanduri (IBM), Girish Dhanakshirur (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4467A" target="_blank">4467A: Containerize, PaaS or Go Serverless?: A Case Study in Application Deployment Models</a><br/>
-Tuesday, 11:30 AM-12:15 PM; Islander G; Phil Estes (IBM), Lin Sun (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5496A" target="_blank">5496A: Cloud Native Applications and Microservices Made Easy!</a><br/>
-Tuesday, 2:30 PM-3:15 PM; Islander F; Erin Schnabel (IBM), Chris Vignola (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5513A" target="_blank">5513A: Serverless Architectures in Banking: OpenWhisk on IBM Bluemix at Santander</a><br/>
-Tuesday, 3:45 PM-4:30 PM; South Pacific J; Daniel Krook (IBM), Luis Enriquez (Banco Santander)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6229A" target="_blank">6229A: What's New in IBM API Connect</a><br/>
-Tuesday, 3:45 PM-4:30 PM; Lagoon H; Pramodh Ramesh (IBM), Amit P. Acharya (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5064A" target="_blank">5064A: OpenWhisk, Adobe, and developerWorks Open for High-Powered Applications</a><br/>
-Wednesday, 8:00 AM-8:45 AM; South Pacific J; Tony Ffrench (IBM), Felix Meschberger (Adobe)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5421A" target="_blank">5421A: How to Build Homogeneously from One Source Repository to Mobile and Microservices Targets</a><br/>
-Wednesday, 9:00 AM-9:45 AM; South Pacific J; Roland Barcia (IBM), John Pearson (Wakefern)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6336A" target="_blank">6336A: Use IBM Bluemix to Build Cognitive Mobile Apps that Learn and Act Proactively</a><br/>
-Wednesday, 9:00 AM-9:45 AM; South Pacific D; Anton Aleksandrov (IBM), Matthew Perrins (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1117A" target="_blank">1117A: Introduction to LoopBack</a><br/>
-Wednesday, 11:15 AM-12:00 PM; Islander F; Matt Roberts (IBM); Raymond Camden (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3044A" target="_blank">3044A: Retail Customer Feedback: Case Study with OpenWhisk, Watson and Mobile Services on IBM Bluemix</a><br/>
-Wednesday, 1:00 PM-1:45 PM; Lagoon F; Thejaswini Ramachandra (IBM), Srinivasan Nanduri (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1596A" target="_blank">1596A: Computation in Real-time on the Network</a><br/>
-Wednesday, 2:00 PM-2:45 PM; South Pacific B; Dan Zeitman, PubNub (IBM Business Partner)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3248A" target="_blank">3248A: Integrating New Tools into IBM Bluemix Continuous Delivery Toolchains</a><br/>
-Wednesday, 2:00 PM-2:45 PM; Mandalay Bay Ballroom D; Chris Brealey (IBM), Simon Kaegi (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4073A" target="_blank">4073A: Serverless, Event-Driven Architectures and Bluemix OpenWhisk: Overview and IBM's Technical Strategy</a><br/>
-Wednesday, 2:00 PM-2:45 PM; South Pacific H; Michael Behrendt (IBM), Andreas Nauerz (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4460A" target="_blank">4460A: Combining OpenWhisk (Serverless), OpenAPI (Swagger) and IBM API Connect to Build Powerful APIs</a><br/>
-Wednesday, 4:15 PM-5:00 PM; Breakers C; Joe Sepi (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1081A" target="_blank">1081A: What’s New with the IBM Bluemix Core Platform?</a><br/>
-Thursday, 9:30 AM-10:15 AM; South Pacific E; Simon Daniel Moser (IBM), Michael Behrendt (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6324A" target="_blank">6324A: How to Secure and Control API, Microservices and Serverless Workloads</a><br/>
-Thursday, 10:30 AM-11:15 AM; Lagoon H; Shiu-Fun Poon (IBM), Matt Roberts (IBM), Krithika Prakash (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Customer Feedback Round Tables</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6637A" target="_blank">6637A: Shaping the Future of IBM DataPower and API Gateways</a><br/>
-Monday, 11:15 AM-12:00 PM; Coral A; Tony Ffrench (IBM), Ozair Sheikh (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6671A" target="_blank">6671A: Shaping the Future of Serverless APIs and Microservices in IBM Bluemix</a><br/>
-Monday, 1:00 PM-1:45 PM; Coral A; Carlos Santana (IBM), Sajan Sankaran (IBM), Andrew Hoyt (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6671B" target="_blank">6671B: Shaping the Future of Serverless APIs and Microservices in IBM Bluemix</a><br/>
-Wednesday, 8:00 AM-8:45 AM; Coral A; Carlos Santana (IBM), Sajan Sankaran (IBM), Andrew Hoyt (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Engagement Theater Sessions</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7111A" target="_blank">7111A: Discovering the Fun World of Serverless with IBM Bluemix and OpenWhisk</a><br/>
-Tuesday, 1:30 PM-1:50 PM; Engagement Theater Booth # 319; Chanakya Lokam (Miracle Software Systems, Inc.), Jyotsna Duvvuri (Miracle Software Systems, Inc.)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7432A" target="_blank">7432A: Create Secure Cloud Foundry and OpenWhisk Powered APIs in IBM Bluemix</a><br/>
-Wednesday, 11:15 AM-11:35 AM; Engagement Theater Booth # 649; Sajan Sankaran (IBM), Rob Thelen (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6522A" target="_blank">6522A: Build a Cloud Native App with Apache OpenWhisk</a><br/>
-Wednesday, 11:45 AM-12:05 PM; Engagement Theater Booth # 649; Daniel Krook (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1515A" target="_blank">1515A: Discover Dark Data behind Videos with OpenWhisk and IBM Watson</a><br/>
-Wednesday, 1:30 PM-1:50 PM; Engagement Theater Booth # 649; Ramratan Vennam (IBM), Frederic Lavigne (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1515B" target="_blank">1515B: Discover Dark Data behind Videos with OpenWhisk and IBM Watson</a><br/>
-Wednesday, 4:45 PM-5:05 PM; Engagement Theater Booth # 649; Ramratan Vennam (IBM), Frederic Lavigne (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Hands-on Labs</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3163A" target="_blank">3163A: Serverless Bots: Create Efficient Inexpensive, Event-Driven Bots with Node.js and OpenWhisk</a><br/>
-Monday, 3:15 PM-5:00 PM; South Seas B; Erin McKean (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2450B" target="_blank">2450B: Working with IBM OpenWhisk in Bluemix</a><br/>
-Monday, 4:15 PM-5:00 PM; South Seas I1; Budi Darmawan (IBM), Pam Geiger (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3397A" target="_blank">3397A: Event-Driven and Serverless Computing with IBM Bluemix OpenWhisk</a><br/>
-Tuesday, 1:30 PM-5:30 PM; South Seas I1; Andreas Nauerz (IBM), Carlos Santana (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5130A" target="_blank">5130A: A Deep-Dive into Serverless Computing and Watson Service Chaining Via OpenWhisk</a><br/>
-Wednesday, 2:00 PM-2:45 PM; South Seas G; Vidyasagar Machupalli (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2256A" target="_blank">2256A: Build Your First Cognitive Chatbot Using OpenWhisk</a><br/>
-Wednesday, 3:15 PM-5:00 PM; South Seas B; Carlos Santana (IBM), Andreas Nauerz (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Hello World Labs</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7252A" target="_blank">7252A: Create Quick Twitterbots with OpenWhisk!</a><br/>
-Tuesday, 11:00 AM-1:45 PM; DevZone Hello World Lab # 4; Erin McKean (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7078A" target="_blank">7078A: Get Started with Apache OpenWhisk on IBM Bluemix</a><br/>
-Tuesday, 2:15 PM-5:00 PM; DevZone Hello World Lab # 4; Andy Smith (IBM)</li>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7070A" target="_blank">7070A: Event-Driven and Serverless Computing with IBM Bluemix OpenWhisk: Learn the Basics Hands-On Now!</a><br/>
-Wednesday, 9:00 AM-12:45 PM; DevZone Hello World Lab # 4; Andreas Nauerz (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Meet the Expert Sessions</strong></summary>
-<ul>
-<li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7122A" target="_blank">7122A: Creating Serverless IoT Applications Using OpenWhisk, Docker and Node-RED</a><br/>
-Wednesday, 9:00 AM-9:45 AM; Meet the Experts Forum # 1; Kalonji Bankole (IBM)</li>
-</ul>
-</details>
-<details><summary><strong>Open Labs</strong></summary>
-<ul>
-<li><strong>9002: Event-driven and Serverless Computing with IBM Bluemix OpenWhisk: Learn the basics now!</strong><br/>
-Monday-Thursday drop-in; Mandalay Bay North, South Seas E&F; Andreas Nauerz (IBM)</li>
-</ul>
-</details>
+
+  <details><summary><strong>Ask Me Anything</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7291A" target="_blank">7291A: Bluemix OpenWhisk: Ask Me Anything Expert Station</a><br/>
+  Tuesday, 1:00 PM-2:45 PM; DevZone Ask Me Anything # 6; Carlos Santana (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7237A" target="_blank">7237A: Drones, Watson and Bluemix</a><br/>
+  Tuesday, 3:00 PM-5:00 PM; DevZone Ask Me Anything # 1; Andrew Trice (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7077A" target="_blank">7077A: Ask Me Anything on Using OpenWhisk for Your Next Cloud-Native Project</a><br/>
+  Wednesday, 10:00 AM-11:45 AM; DevZone Ask Me Anything # 6, Daniel Krook (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Breakout Sessions</strong></summary>
+  <ul>
+  <li><strong>1427A: Serverless: Where We are Now and Where We're Heading</strong><br/>
+  Sunday, 09:30 AM-10:30 AM; Mandalay Bay South, Level 2 Reef A; Michael Behrendt (IBM), Andreas Nauerz (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7377A" target="_blank">7377A: API Lifecycle Innovations</a><br/>
+  Sunday, 10:40 AM-11:00 AM; South Pacific F; Jim Laredo (IBM), Erik Wittern (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7402A" target="_blank">7402A: The Serverless Revolution Continues: OpenWhisk</a><br/>
+  Sunday, 11:00 AM-11:30 AM; South Pacific F; Ioana Baldini (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7380A" target="_blank">7380A: Data, Data Everywhere, and Lots of Drops to Drink (Demos)</a><br/>
+  Sunday, 1:00 PM-1:30 P; South Pacific G; Paula Ta-Shma (IBM), Dalit Naor (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7367A" target="_blank">7367A: The Serverless Revolution Continues: The Latest from OpenWhisk</a><br/>
+  Sunday, 02:00 PM-02:30 PM; South Pacific H; Stephen Fink (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7392A" target="_blank">7329A: API Economy Demonstrations</a><br/>
+  Sunday, 2:00 PM-2:30 P; South Pacific G; Jim Laredo (IBM), Erik Wittern (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3351A" target="_blank">3351A: MediaSpirit: A Bluemix and OpenWhisk Love Story</a><br/>
+  Monday, 2:00 PM-2:45 PM; South Pacific G; Andreas Nauerz (IBM), Barry Nijenhuis (SiteSpirit)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2724A" target="_blank">2724A: Create Event-Driven iOS Apps Using IBM Mobile Foundation, OpenWhisk Runtime and Server-Side Swift</a><br/>
+  Monday, 3:15 PM-4:00 PM; South Pacific D; Srinivasan Nanduri (IBM), Girish Dhanakshirur (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4467A" target="_blank">4467A: Containerize, PaaS or Go Serverless?: A Case Study in Application Deployment Models</a><br/>
+  Tuesday, 11:30 AM-12:15 PM; Islander G; Phil Estes (IBM), Lin Sun (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5496A" target="_blank">5496A: Cloud Native Applications and Microservices Made Easy!</a><br/>
+  Tuesday, 2:30 PM-3:15 PM; Islander F; Erin Schnabel (IBM), Chris Vignola (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5513A" target="_blank">5513A: Serverless Architectures in Banking: OpenWhisk on IBM Bluemix at Santander</a><br/>
+  Tuesday, 3:45 PM-4:30 PM; South Pacific J; Daniel Krook (IBM), Luis Enriquez (Banco Santander)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6229A" target="_blank">6229A: What's New in IBM API Connect</a><br/>
+  Tuesday, 3:45 PM-4:30 PM; Lagoon H; Pramodh Ramesh (IBM), Amit P. Acharya (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5064A" target="_blank">5064A: OpenWhisk, Adobe, and developerWorks Open for High-Powered Applications</a><br/>
+  Wednesday, 8:00 AM-8:45 AM; South Pacific J; Tony Ffrench (IBM), Felix Meschberger (Adobe)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5421A" target="_blank">5421A: How to Build Homogeneously from One Source Repository to Mobile and Microservices Targets</a><br/>
+  Wednesday, 9:00 AM-9:45 AM; South Pacific J; Roland Barcia (IBM), John Pearson (Wakefern)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6336A" target="_blank">6336A: Use IBM Bluemix to Build Cognitive Mobile Apps that Learn and Act Proactively</a><br/>
+  Wednesday, 9:00 AM-9:45 AM; South Pacific D; Anton Aleksandrov (IBM), Matthew Perrins (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1117A" target="_blank">1117A: Introduction to LoopBack</a><br/>
+  Wednesday, 11:15 AM-12:00 PM; Islander F; Matt Roberts (IBM); Raymond Camden (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3044A" target="_blank">3044A: Retail Customer Feedback: Case Study with OpenWhisk, Watson and Mobile Services on IBM Bluemix</a><br/>
+  Wednesday, 1:00 PM-1:45 PM; Lagoon F; Thejaswini Ramachandra (IBM), Srinivasan Nanduri (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1596A" target="_blank">1596A: Computation in Real-time on the Network</a><br/>
+  Wednesday, 2:00 PM-2:45 PM; South Pacific B; Dan Zeitman, PubNub (IBM Business Partner)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3248A" target="_blank">3248A: Integrating New Tools into IBM Bluemix Continuous Delivery Toolchains</a><br/>
+  Wednesday, 2:00 PM-2:45 PM; Mandalay Bay Ballroom D; Chris Brealey (IBM), Simon Kaegi (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4073A" target="_blank">4073A: Serverless, Event-Driven Architectures and Bluemix OpenWhisk: Overview and IBM's Technical Strategy</a><br/>
+  Wednesday, 2:00 PM-2:45 PM; South Pacific H; Michael Behrendt (IBM), Andreas Nauerz (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/4460A" target="_blank">4460A: Combining OpenWhisk (Serverless), OpenAPI (Swagger) and IBM API Connect to Build Powerful APIs</a><br/>
+  Wednesday, 4:15 PM-5:00 PM; Breakers C; Joe Sepi (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1081A" target="_blank">1081A: What’s New with the IBM Bluemix Core Platform?</a><br/>
+  Thursday, 9:30 AM-10:15 AM; South Pacific E; Simon Daniel Moser (IBM), Michael Behrendt (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6324A" target="_blank">6324A: How to Secure and Control API, Microservices and Serverless Workloads</a><br/>
+  Thursday, 10:30 AM-11:15 AM; Lagoon H; Shiu-Fun Poon (IBM), Matt Roberts (IBM), Krithika Prakash (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Customer Feedback Round Tables</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6637A" target="_blank">6637A: Shaping the Future of IBM DataPower and API Gateways</a><br/>
+  Monday, 11:15 AM-12:00 PM; Coral A; Tony Ffrench (IBM), Ozair Sheikh (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6671A" target="_blank">6671A: Shaping the Future of Serverless APIs and Microservices in IBM Bluemix</a><br/>
+  Monday, 1:00 PM-1:45 PM; Coral A; Carlos Santana (IBM), Sajan Sankaran (IBM), Andrew Hoyt (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6671B" target="_blank">6671B: Shaping the Future of Serverless APIs and Microservices in IBM Bluemix</a><br/>
+  Wednesday, 8:00 AM-8:45 AM; Coral A; Carlos Santana (IBM), Sajan Sankaran (IBM), Andrew Hoyt (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Engagement Theater Sessions</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7111A" target="_blank">7111A: Discovering the Fun World of Serverless with IBM Bluemix and OpenWhisk</a><br/>
+  Tuesday, 1:30 PM-1:50 PM; Engagement Theater Booth # 319; Chanakya Lokam (Miracle Software Systems, Inc.), Jyotsna Duvvuri (Miracle Software Systems, Inc.)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7432A" target="_blank">7432A: Create Secure Cloud Foundry and OpenWhisk Powered APIs in IBM Bluemix</a><br/>
+  Wednesday, 11:15 AM-11:35 AM; Engagement Theater Booth # 649; Sajan Sankaran (IBM), Rob Thelen (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/6522A" target="_blank">6522A: Build a Cloud Native App with Apache OpenWhisk</a><br/>
+  Wednesday, 11:45 AM-12:05 PM; Engagement Theater Booth # 649; Daniel Krook (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1515A" target="_blank">1515A: Discover Dark Data behind Videos with OpenWhisk and IBM Watson</a><br/>
+  Wednesday, 1:30 PM-1:50 PM; Engagement Theater Booth # 649; Ramratan Vennam (IBM), Frederic Lavigne (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/1515B" target="_blank">1515B: Discover Dark Data behind Videos with OpenWhisk and IBM Watson</a><br/>
+  Wednesday, 4:45 PM-5:05 PM; Engagement Theater Booth # 649; Ramratan Vennam (IBM), Frederic Lavigne (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Hands-on Labs</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3163A" target="_blank">3163A: Serverless Bots: Create Efficient Inexpensive, Event-Driven Bots with Node.js and OpenWhisk</a><br/>
+  Monday, 3:15 PM-5:00 PM; South Seas B; Erin McKean (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2450B" target="_blank">2450B: Working with IBM OpenWhisk in Bluemix</a><br/>
+  Monday, 4:15 PM-5:00 PM; South Seas I1; Budi Darmawan (IBM), Pam Geiger (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/3397A" target="_blank">3397A: Event-Driven and Serverless Computing with IBM Bluemix OpenWhisk</a><br/>
+  Tuesday, 1:30 PM-5:30 PM; South Seas I1; Andreas Nauerz (IBM), Carlos Santana (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/5130A" target="_blank">5130A: A Deep-Dive into Serverless Computing and Watson Service Chaining Via OpenWhisk</a><br/>
+  Wednesday, 2:00 PM-2:45 PM; South Seas G; Vidyasagar Machupalli (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/2256A" target="_blank">2256A: Build Your First Cognitive Chatbot Using OpenWhisk</a><br/>
+  Wednesday, 3:15 PM-5:00 PM; South Seas B; Carlos Santana (IBM), Andreas Nauerz (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Hello World Labs</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7252A" target="_blank">7252A: Create Quick Twitterbots with OpenWhisk!</a><br/>
+  Tuesday, 11:00 AM-1:45 PM; DevZone Hello World Lab # 4; Erin McKean (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7078A" target="_blank">7078A: Get Started with Apache OpenWhisk on IBM Bluemix</a><br/>
+  Tuesday, 2:15 PM-5:00 PM; DevZone Hello World Lab # 4; Andy Smith (IBM)</li>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7070A" target="_blank">7070A: Event-Driven and Serverless Computing with IBM Bluemix OpenWhisk: Learn the Basics Hands-On Now!</a><br/>
+  Wednesday, 9:00 AM-12:45 PM; DevZone Hello World Lab # 4; Andreas Nauerz (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Meet the Expert Sessions</strong></summary>
+  <ul>
+  <li><a href="https://myibm.ibm.com/events/interconnect/all-sessions/session/7122A" target="_blank">7122A: Creating Serverless IoT Applications Using OpenWhisk, Docker and Node-RED</a><br/>
+  Wednesday, 9:00 AM-9:45 AM; Meet the Experts Forum # 1; Kalonji Bankole (IBM)</li>
+  </ul>
+  </details>
+  <details><summary><strong>Open Labs</strong></summary>
+  <ul>
+  <li><strong>9002: Event-driven and Serverless Computing with IBM Bluemix OpenWhisk: Learn the basics now!</strong><br/>
+  Monday-Thursday drop-in; Mandalay Bay North, South Seas E&F; Andreas Nauerz (IBM)</li>
+  </ul>
+  </details>
 
 - [**JS Remote Conf**](https://devchat.tv/conferences/js-remote-conf-2017), March 15th-16th 2017, Virtual<br/>James Thomas gave a talk on OpenWhisk and Serverless
 - [**ForwardJS**](https://forwardjs.com/), March 1st 2017, San Francisco, USA<br/>Raymond Camden will give a talk on OpenWhisk
 
-
 ### February 2017
 
 - [**TopConf Linz**](http://topconf.com/linz-2017/), February 28th-March 2nd 2017, Linz, Austria<br/>James Thomas gave a talk on building serverless applications using OpenWhisk
 - [**London Serverless**](https://www.twitch.tv/videos/119142073), February 1st 2017, London, UK<br/>James Thomas gave a talk on building OpenWhisk apps with The Serverless Framework
 
-
 ### December 2016
 
 - [**Build a cloud native app with OpenWhisk**](https://developer.ibm.com/tv/build-a-cloud-native-app-with-openwhisk-event-registration/), December 14th 2016, Virtual<br/>Daniel Krook presented an overview of serverless architectures and dive into the OpenWhisk programming model
 
-
 ### November 2016
 
 - [**GOTO Berlin**](https://gotocon.com/berlin-2016/), November 14th-15th 2016, Berlin, Germany<br/>Andreas Nauerz & Simon Moser gave a talk on OpenWhisk
 - [**CloudNativeCon 2016**](https://cnkc16.sched.org/event/8K4c), November 8th 2016, Seattle, USA<br/>Daniel Krook highlighted OpenWhisk in his keynote
 - [**ContainerDays NYC 2016**](http://dynamicinfradays.org/events/2016-nyc/), November 3rd-4th 2016, New York, USA<br/>Rodric Rabbah and Philippe Suter gave a talk on OpenWhisk
 
-
 ### October 2016
 
 - [**ServerlessConf London**](http://london.serverlessconf.io/), October 26th-28th 2016, London, UK<br/>Andreas Nauerz et al gave a talk on OpenWhisk
 - [**OpenStack Summit**](https://www.openstack.org/summit/barcelona-2016/), October 25th-28th 2016, Barcelona, Spain<br/>Shaun Murakami gave a talk on OpenWhisk
-- [**JavaDay**](http://javaday.org.ua/kyiv/), October 14th-16th 2016, Kyiv, Ukraine<br/>James Thomas gave a talk on OpenWhisk
+- [**JavaDay**](https://devoxx.org.ua/history/), October 14th-16th 2016, Kyiv, Ukraine<br/>James Thomas gave a talk on OpenWhisk
 - [**New York City Bluemix Meetup**](http://www.meetup.com/nyc-bluemix/events/233970408/), October 13th 2016, New York, USA<br/>Daniel Krook et al ran a workshop on OpenWhisk and other Bluemix topics
 - [**Serverless New York City Meetup**](http://www.meetup.com/Serverless-NYC/events/234479192/), October 13th 2016, New York, USA<br/>Nick Mitchell gave a talk on OpenWhisk
 - [**Serverless Seattle Meetup**](http://www.meetup.com/Serverless-Seattle/events/233807991/), October 12th 2016, Seattle, USA<br/>Megan Kostick gave a talk on OpenWhisk
 - [**New York City Bluemix Meetup**](http://www.meetup.com/nyc-bluemix/events/233968352/), October 12th 2016, New York, USA<br/>Daniel Krook gave a talk on OpenWhisk
 
-
 ### September 2016
 
 - [**ServerlessConf Tokyo**](http://tokyo.serverlessconf.io/), September 30th–October 1st 2016, Tokyo, Japan<br/>Andreas Nauerz & Markus Thömmes gave a talk on OpenWhisk
 - [**Voxxed Days**](https://belgrade.voxxeddays.com/), September 28th-30th 2016, Belgrade, Serbia<br/>James Thomas gave a talk on OpenWhisk
-- [**CloudFoundry Summit**](https://www.cloudfoundry.org/community/summits/program/about/?summitId=11993/), September 26th-28th 2016, Frankfurt, Germany<br/>Andreas Nauerz & Andrei Yurkovich gave a talk on OpenWhisk
+- [**CloudFoundry Summit**](https://www.cloudfoundry.org/event_subpages/2016-eu-recap/), September 26th-28th 2016, Frankfurt, Germany<br/>Andreas Nauerz & Andrei Yurkovich gave a talk on OpenWhisk
 - [**Codemotion Warsaw**](http://warsaw2016.codemotionworld.com/), September 15th-16th 2016, Warsaw, Poland<br/>Andreas Nauerz gave a talk on OpenWhisk
-- [**Node Interactive EU**](http://events.linuxfoundation.org/events/node-interactive-europe/), September 15th-16th 2016, Amsterdam, Netherlands<br/>OpenWhisk team gave a talk on OpenWhisk
+- [**Node Interactive EU**](http://events17.linuxfoundation.org/events/node-interactive-europe/), September 15th-16th 2016, Amsterdam, Netherlands<br/>OpenWhisk team gave a talk on OpenWhisk
 - [**Serverless New York City Meetup**](http://www.meetup.com/Serverless-NYC/events/233736279/), September 15th 2016, New York, USA<br/>Philippe Suter gave a talk on OpenWhisk
-- [**JDay**](http://www.jday.com.ua/), September 3rd 2016, Lviv, Ukraine<br/>James Thomas gave a talk on OpenWhisk
-
+- [**JDay**](https://twitter.com/jdaylviv), September 3rd 2016, Lviv, Ukraine<br/>James Thomas gave a talk on OpenWhisk
 
 ### July 2016
 
@@ -258,23 +245,20 @@ Monday-Thursday drop-in; Mandalay Bay North, South Seas E&F; Andreas Nauerz (IBM
 - [**Serverless Meetups London**](http://www.meetup.com/Serverless-London/), July 5th 2016, London, UK<br/>Nick O’Leary and James Thomas gave a talk on OpenWhisk
 - [**Serverless Meetup Sydney**](http://www.meetup.com/Sydney-Serverless-Meetup-Group/events/232020422/), July 5th 2016, Sydney, Australia<br/>Iwan Winoto gave a talk on OpenWhisk
 
-
 ### June 2016
 
 - [**Bluemix Developers in Cambridge Meetup**](http://www.meetup.com/Bluemix-Developers-in-Cambridge/events/231783149/), June 23rd 2016, Cambridge, USA<br/>Vatche Ishakia gave a talk on OpenWhisk
 - [**Silicon Valley Cloud Foundry User Group Meetup**](http://www.meetup.com/CloudFoundry/events/231791789/), June 14th 2016, Sunnyvale, USA<br/>Animesh Singh & Altoros gave a talk on OpenWhisk
 
-
 ### May 2016
 
 - [**ServerlessConf New York**](http://nyc.serverlessconf.io/), May 26th-27th 2016, New York City, USA<br/>Michael Behrendt, Stephen Fink, and Andreas Nauerz gave a talk on OpenWhisk
 - [**Drones, IoT, Cognitive Computing, Bluemix, and OpenWhisk!**](http://www.meetup.com/nyc-bluemix/events/231021166/), May 25th 2016, New York City, USA<br/>Andrew Trice gave a talk on OpenWhisk
 - [**Cloud Foundry Unconference**](http://www.meetup.com/CloudFoundry/events/227086817/), May 22nd 2016, Santa Clara, USA<br/>Animesh Singh gave a talk on OpenWhisk
 - [**OSCON Austin**](http://conferences.oreilly.com/oscon/open-source-us), May 18th-19th 2016, Austin, USA<br/>Daniel Krook gave a talk on OpenWhisk
-- [**Hursley Summit**](https://www-950.ibm.com/events/wwe/grp/grp004.nsf/v17_events?openform&lp=2016_hursley_landing_page&locale=en_US), May 16th-18th 2016, Hursley, UK<br/>Andreas Nauerz gave a talk on OpenWhisk
+- [**Hursley Summit**](https://www-01.ibm.com/events/wwe/grp/grp308.nsf/Additional.xsp?openform&seminar=C84HXGES&locale=en_ZZ), May 16th-18th 2016, Hursley, UK<br/>Andreas Nauerz gave a talk on OpenWhisk
 - [**Codemotion Amsterdam**](http://amsterdam2016.codemotionworld.com/), May 9th-12th 2016, Amsterdam, Netherlands<br/>Andreas Nauerz gave a talk on OpenWhisk
 
-
 ### April 2016
 
-- [**Triangle Bluemix Meetup**](http://www.meetup.com/rtpbluemix/events/229767420/), April 20th 2016, Durham, USA
+- [**Triangle Bluemix Meetup**](https://web.archive.org/web/20161006141508/http://www.meetup.com:80/rtpbluemix/events/229767420/), April 20th 2016, Durham, USA


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services