Giter Site home page Giter Site logo

onslyde's Introduction

#Watch the video

ScreenShot

#Details of onslyde At its core, the concept is simple. Attendees connect to a server, the presenter sends them vote options at certain points during her presentation and whoever decides to connect can have anonymous interactions with the presenter. Participants may also give a "thumb up" or "thumb down" during any slide to show that they approve or disapprove of the content on a given slide. This allows for a very fine grained level of anonymous interaction.

Beyond the simplistic parts of interacting with the slide deck, I wanted the presenter to actually have the ability of tailoring their talk to the "collective wisdom" of the audience. So, the presenter has the ability of forking their slides and providing 2 tracks of content based on the audience vote. The poll and tracks are setup declaratively as follows:

<section class="slide-group">
 
    <section class="slide" data-option="master">
        <h3 class="send">What is your favorite color?</h3>
    </section>
 
    <section class="slide" data-option="Blue">
        <div class="send">
            Blue is the one of the three additive primary colours and is the colour 
            of the clear sky and the deep sea on Earth. On the optical spectrum, blue 
            is located between violet and green.
        </div>
    </section>
 
    <section class="slide" data-option="Red">
        <div class="send">
            Red is the color of blood, rubies, and strawberries. Next to orange at 
            the end of the visible spectrum of light, red is commonly associated with 
            danger, sacrifice, passion, fire, beauty, blood, anger, socialism and 
            communism, and in China and many other cultures, with happiness.
        </div>
    </section>
    
    <section class="slide" data-option="Red">
        <div class="send">
            Red can stimulate hunger as well..
        </div>
    </section>
 
</section>
  • data-option="master" : denotes a master slide where the bar graph will be displayed
  • data-option="Blue" : is one of the 2 polling options
  • data-option="Red" : is one of the 2 polling options, also notice that we have multiple "Red" sections. These slides will be presented in order if "Red" wins the audience vote.
  • class="send" : specifies that we want to send this content to each connected remote

So, the above markup sets up the following slide deck and remote control options: onslyde architecture

After all the votes are placed, the winning track is chosen based on the majority vote: onslyde architecture

After the fork occurs, the presenter can choose to present slides in linear fashion, or ask another poll question. The framework is limited by only allowing for 2 options to be given and slides can only be forked once per question.

As stated earlier, everything is declarative and setup through HTML markup. So there's no need for the presenter to setup a server or mess with JavaScript. The deck can work without an internet connection as a fallback, or you could run the server on your laptop and bring a router/hotspot for the audience to connect to.

Please see the complete site at http://onslyde.com/.
Or, read this post for the full history.

#Start presenting

#Supported Browsers The slide deck currently has only been tested with Chrome. The audience remote controls have been tested on many mobile browsers.

#Custom Remote Feel free to rebrand the remote for the audience with your twitter handle etc... Send a pull request and I'll add it.

#Sponsors IDE Licenses are kindly provided by:

License

Copyright (c) 2012-2013 Wesley Hales and contributors (see git log)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
  
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
   
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

onslyde's People

Contributors

aslakknutsen avatar sonicwizard avatar wesleyhales avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

onslyde's Issues

Back button and old charts

After the presenter hits a new new voting option, the previous one is automatically converted to an image and saved to the slide deck. We need to also preserve the tick marks.

This functionality (of converting a previous vote option to image) allows for the presentation to be saved or converted to pdf after the talk is done with all of the voting information in tact.

Allow for sending different content to Clients during a split

When the presentation is split with data-options, it would be interesting to allow for sending different content to the audience depending on their response to the split question.

e.g. If a user vote NO, and YES is chosen as the split path, you could send other content to the users who voted NO vs the ones voting YES. Even tho the slide goes the YES path.

<section data-option="master">
    I think testing with Mocks rock?
</section>

<section data-option="yes">
    <div class="send">
      ..list of reason why it doesn't..
    </div>
    <div class="send" data-option="yes">
        still think they rock? *snerky comment*
    </div>
    <div class="send" data-option="no">
        At least you have your head on straight.. attaboy!
    </div>
</section>

<section data-option="no">
    <div class="send" data-option="yes">
        you're insane!
    </div>
</section>

When the majority vote "yes" and we go down the "yes" path, we send some extra messages to the original "no" voters. Basically we can split the presentation, but also split the client view.

When connecting a new client the current slide is never sent

When a new client connects it never receives the current active slide content, only active options.

This cause two things;

  • New users joining midway will only see the 'welcome slide' until the presenter chooses to go next slide.
  • No one will ever see the presenters title slide. Slide #2 is the first slide possible to send to the user

Issues with refresh

Right now, when you refresh, the presentation goes blank. This is because we need to tie in reveal's location.hash bookmarking into onslyde and force the correct slide.

Add all dom elements through JS

Currently each presentation includes a few dom nodes (divs) for agree, disagree and address bar in the html. These should be dynamically added in the deck JS.

Allow for multiple .send pr slide

The presentation already supports sending multiple .send pr slide since it's looping over all .send in active slide, but they are sent as individual data packets. On the Remote side each package replaces the previous.

Presentation: https://github.com/onslyde/onslyde/blob/master/js/onslyde-1.0.0.deck.js#L1378

Remote: https://github.com/onslyde/onslyde/blob/master/js/remote.js#L88

The Presentation should rather collect them and possible wrap them in a div and send them as one.

null socket connection

Getting (in console):

connecting now null

on line:
slidfast-1.0.0.deck.reveal.js:1039

Allow pushing javascript to Remote

Would be nice to have an option to push 'random' javascript snippets/inclusions to the remote.

Both during init and on slide change.

On top of my head that would allow for;

  • interactive graph where each user could with the data
  • participation in an ongoing demo

And probably a whole bunch of other things :)

Use standard ports for HTTP/WebSocket connection

http://onslyde.com/ uses non-standard ports for WebSocket connections (8081). Some LANs (especially conference LANs) allow outgoing traffic only on standard ports like 80, 443. The server implementation could share the ports between HTTP and WebSockets via the standard Upgrade header.

Keynote support (exported as HTML)

This has been implemented for agree/disagree voting but depends on #35 because users should only need to add the script and a small snippet in their generated HTML.

slidfast needs absolute paths

This is the error I get when running the slidedeck on my localhost

GET http://localhost/go/presenters/ip?session=156

404 Not Found

Couldn't this problem go away if your hosted scripts used absolute URLs?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.