You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2018/08/23 22:37:44 UTC

[incubator-openwhisk-website] branch master updated: Add travis CI build image (#324)

This is an automated email from the ASF dual-hosted git repository.

rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 14731fa  Add travis CI build image (#324)
14731fa is described below

commit 14731fad01a8a08a758bf81e7c3f4c98b498a4e2
Author: Justin Halsall <Ju...@users.noreply.github.com>
AuthorDate: Thu Aug 23 18:37:42 2018 -0400

    Add travis CI build image (#324)
---
 .travis.yml                        |  23 +++
 Gemfile                            |   3 +
 README.md                          |  28 ++--
 _config.yml                        |   1 +
 _includes/partial/site-footer.html |   2 +-
 _includes/partial/site-header.html |  14 +-
 _layouts/community.html            |  17 +--
 _layouts/documentation.html        |  58 ++++----
 _layouts/downloads.html            |   6 +-
 _layouts/events.html               |   6 +-
 _layouts/home.html                 |   2 +-
 _layouts/slack.html                |   2 +-
 _scss/_base.scss                   |   5 +-
 bin/test                           |  24 ++++
 events.md                          | 286 +++++++++++++++++--------------------
 15 files changed, 262 insertions(+), 215 deletions(-)

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 @@ layout: default
   </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 @@ layout: default
               </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 @@ layout: default
               <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 @@ layout: default
               <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 @@ layout: default
           </div>
       </main>
 
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="events"></a>
               <h4>Events</h4>
@@ -132,7 +132,7 @@ layout: default
           </div>
        </main>
 
-      <main id="doc">
+      <main class="doc">
           <div class="content">
               <a class="indexable" id="supporters"></a>
               <h4>Supporters</h4>
@@ -222,13 +222,14 @@ layout: default
                          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 @@ layout: default
     </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 @@ layout: default
             </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 @@ layout: default
         </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 @@ layout: default
     </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 @@ layout: default
     </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 @@ $ make quick-start
     </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 @@ $ make quick-start
     </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 @@ $ make quick-start
     </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 @@ $ make quick-start
     </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 @@ $ make quick-start
     </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 @@ $ wsk list
     </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 @@ $ wsk list
         </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 @@ $ wsk list
         </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 @@ $ wsk list
         </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 @@ $ GOOS=linux GOARCH=amd64 go build -o exec
         </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 @@ $ jar cvf hello.jar Hello.class
             </div>
         </main>
 
-        <!--main id="doc">
+        <!--main class="doc">
             <div class="content">
                 <h4 id="docker">Docker</h4>
                 <p></p>
@@ -1201,10 +1201,10 @@ $ jar cvf hello.jar Hello.class
             </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 @@ $ jar cvf hello.jar Hello.class
             </div>
         </main>
 
-        <!--main id="doc">
+        <!--main class="doc">
             <div class="content">
                 <a class="indexable" id="swift"></a>
                 <h4>Swift</h4>
@@ -1319,7 +1319,7 @@ $ jar cvf hello.jar Hello.class
         </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 @@ $ jar cvf hello.jar Hello.class
                 </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 @@ $ jar cvf hello.jar Hello.class
                 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 @@ abcd.... locationUpdate
         </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 @@ abcd.... locationUpdate
         </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 @@ abcd.... locationUpdate
         </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 @@ abcd.... locationUpdate
         </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 @@ abcd.... locationUpdate
     </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 @@ abcd.... locationUpdate
     </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 @@ abcd.... locationUpdate
     </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 @@ layout: default
     </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 @@ layout: default
             </div>
         </main>
 
-        <main id="doc">
+        <main class="doc">
             <div class="content">
                 <a class="indexable" id="versioning"></a>
                 <h3>Versioning</h3>
@@ -50,7 +50,7 @@ layout: default
             </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 @@ layout: default
 </section>
 
 <section id="whiskNodes">
-  <main id="doc">
+  <main class="doc">
     <div class="content">
       <h2>{{ page.title }}</h2>
       <p>
@@ -17,8 +17,8 @@ layout: default
       </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 @@ layout: default
                 <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  [...]
+                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 languag [...]
             </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 @@ layout: default
 </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