This is probably going to be part 1 of a series. Now that 
IBM Connect 2014 is done, I wanted to recap and share with the community in more detail what I showed at the keynote (a.k.a OGS/Opening General Session).
First, I assume that you've seen the keynote by now. If you haven't, here's the full session. If you skip to about 1:12:00 that's where my part begins.
I divided my demo into 3 parts:
As I organized the demo, I wanted to focus on business value and encourage people to go to the breakout sessions to get all the gory details.  For some parts, I wrote some custom code (warning: when you have a product manager writing code, you could end up in weird places). Let me tackle one of the first things I got working for the demo: a Pinterest-like layout for the news feed/activity stream (as seen on the left below). This is something 
you can do today with IBM Connections 4.5 !
The trick to get that working was using the 
jQuery plugin 
Waterfall. Actually, this plug-in was the magic behind a lot of the things that I demo'ed: the community grid, people recommendations, notifications, etc.  (stop here if coding is not your thing)
To render the activity stream as shown above, I needed five parts:
1. Include the right JavaScript
<script src="jquery-1.9.1.min.js"></script>
<script src="waterfall-master/demos/js/libs/handlebars/handlebars.js"></script>
<script src="waterfall-master/demos/js/waterfall.min.js"></script>
<script src="jquery.timeago.js" type="text/javascript"></script>
2. Create the proper CSS for styling
<style type="text/css">
.homepage {
 font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif;
 font-weight: 300; 
 color: #444;
 line-height: 1.2;
 background-color: #f0f0f0;
 padding-left: 12px;
 margin: 0 auto;
 width: 1000px;
 font-size: 14pt;
}
.columnHeader {
 font-size: 150%;
 padding-left: 13px;
}
a {
 color: #1c8aae !important;
 text-decoration: none !important;
}
.date {
 color: #d9d9d9 !important;
 text-decoration: none !important;
}
.timeago {
 color: gray !important;
 border-bottom: none !important;
}
.card { 
 border: 2px solid #FAFAFA;
 box-shadow: 0 1px 2px rgba(34, 25, 25, 0.4);
 -webkit-column-break-inside: avoid;
 -moz-column-break-inside: avoid;
 column-break-inside: avoid;
 padding: 5px 5px 15px 5px;
 background: -webkit-linear-gradient(45deg, #FFF, #F9F9F9);
 background: -moz-linear-gradient(45deg, #FFF, #F9F9F9);
 opacity: 1;
 width: 415px;
 
 -webkit-transition: all .2s ease;
 -moz-transition: all .2s ease;
 -o-transition: all .2s ease;
 transition: all .2s ease; 
 
}
.newsfeed {
 //padding-left: 20px;
 float: left;
 width: 450px;
}
.leftColumn {
 padding: 10px 20px 20px 20px ;
 float: left;
}
.rightColumn {
 float: left;
 width: 325px;
 padding-top: 10px;
}
.photo {
 width: 50px;
 height: 50px;
 border-radius: 25px;
 -webkit-border-radius: 25px;
 -moz-border-radius: 25px;
 box-shadow: 0 0 4px rgba(0, 0, 0, .2);
 -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .2);
 -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .2);
}
.message {
 font-size: 75%;
}
.attachment {
 max-width: 320px;
 max-height: 240px;
}
.attachDiv {
 padding: 5px 0;
 height: 240px;
}
.signature {
font-size: 90%;
color: #666 !important;
}
</style> 
3. Create a placeholder for the HTML to be rendered asynchronously
<body style="background-color: #f0f0f0; margin: 0; overflow: scroll;">
<div class="homepage">
<div class="newsfeed">
 <p class="columnHeader">News</p>
 <div id="container" class="container"> <!-- activity stream will be rendered here --> </div>
</div>
</div>
....
4. Create a template for how I wanted it to look (that way the Waterfall plugin knows how to render the activity stream)
<script type="text/x-handlebars-template" id="waterfall-tpl">
{{#list}}
    <div class="card">
     <div class="message">
      <div class="leftColumn">
       <img class="photo" src="{{photoId actor}}" />
      </div>
      <div class="rightColumn">
       {{{title}}} {{#if object.summary}} "<i>{{{object.summary}}}</i>" {{/if}}
        <br/>
       {{#each object.attachments}}
        <div class="attachDiv">
          <img class="attachment" src="{{this.url}}" />
         </div>
        {{/each}}
         <br/>
         <div class="signature">
        <img style="vertical-align: middle;" src="{{generator.image.url}}"> <a class="date" href="{{object.url}}">
         <abbr class="timeago" title="{{published}}">{{makeDatePretty published}}</abbr>
        </a> • {{object.likes.totalItems}} Likes • {{object.replies.totalItems}} Comments • Save This
         </div>
       </div>
     </div>
    </div>
{{/list}}
</script>
5. Call Waterfall against the 
Activity Stream API
<script>
$('#container').waterfall({
    itemCls: 'card',
    colWidth: 420,  
    gutterWidth: 20,
    gutterHeight: 20,
    maxPage: 1,
    isAnimated: true,
    isFadeIn: true,
    debug: false,
    checkImagesLoaded: false,
    path: function(page) {
        return 'http://connections.demolotus.com/connections/opensocial/basic/rest/activitystreams/@me/@all/@all?shortStrings=true&rollup=true&format=json&page=' + page;
    }
});
</script>
And there you have it! This will give you the activity stream in a multi-column format with a rendering similar to what you see in 
Pinterest.  To change how it looks, you mostly have to look at steps 2 and 4 above and provide the layout/styling you want.
In the next few posts, I'll share the code for the other pages. But really it all came down to Waterfall! Once you learn that plug-in, there's tons you can do !!!
I hope this is helpful!