iodide-project / iodide

Literate scientific computing and communication for the web
Mozilla Public License 2.0
1.49k stars 143 forks source link

viewMode=slideshow #1093

Open hamilton opened 6 years ago

hamilton commented 6 years ago

This issue credit @wlach, who was motivated by this post and observing PyData NYC presentations.

The concept is straightforward - it would be nice if we can also turn notebooks into slideshow presentations. We get at half of the heart of modern explanation - reports are valuable. So are slide decks, for better or for worse.

This could come in one of a few varieties:

Regardless of how this gets achieved, the point is similar: slide decks are pretty important media for presenting information, and if I give you the slide deck, can I also give you the tools to reproduce the analysis? Something like this would allow iodide to expand the explanatory power of the platform.

re: setting the presentational layer, this might be a follow-on from having direct JSMD editing in-place. We will already want a way to embed code snippets & outputs into reports, something like:

%% md

# report and graphs

This is a report with some graphs and tables

%% js report-output report-input
var dataTable = rawData.map((d) => {...})
dataTable

This should in theory embed the variable dataTable into the report itself. If we take some kind of UX like that as a given, we could also have something like this:

%% md

# report and graphs

%% js slideshow-output
var dataTable = rawData.map((d) => {...})
dataTable

Or something like that. This idea could probably stand to be stress-tested.

bcolloran commented 6 years ago

+1 great idea @wlach and @hamilton. obvi a post-MVP idea, but a really good post-MVP idea :-)

wlach commented 6 years ago

Did up a poor person's version of a presentation mode here, using jquery inside an iodide notebook: https://extremely-alpha.iodide.io/notebooks/122/?viewMode=report

Has a lot of bugs and is liable to break as we change iodide internals. :)

rth commented 6 years ago

This would be quite nice!

Regardless of how this gets achieved, the point is similar: slide decks are pretty important media for presenting information, and if I give you the slide deck, can I also give you the tools to reproduce the analysis? Something like this would allow iodide to expand the explanatory power of the platform.

That is very true. Though, I find the idea of just taking some existing notebook / report and converting it to a reasonably readable presentation quite optimistic. There would be typically much more information in a notebook / report that would be shown in the slides unless the notebook was specifically written to be a presentation. At conferences, I can not say that many people use jupyter notebooks to make slides in practice.

At the same time, there is a number of HTML/JS-based presentation tools e.g. remarkjs, reveal.js, impress.js that are popular. These have more advanced features for presentation, and if it was possible to easily embed some iodide cells/figures into an existing HTML presentation as discussed in https://github.com/iodide-project/iodide/issues/1130 one could imagine a situation of having alongside,

bcolloran commented 6 years ago

That is very true. Though, I find the idea of just taking some existing notebook / report and converting it to a reasonably readable presentation quite optimistic.

+1 -- i don't think we'd want/attempt to do this in an automated way. i think we'd require explicit annotations on certain cells (following from "explicit is better than implicit"), so, as you say: notebook would need to be specifically written with slides in mind

hamilton commented 6 years ago

Great points @rth! And to clarify, this issue proposes a syntax for writing presentation slides explicitly in jsmd that only appear when you set viewMode=slideshow, not a way of automatically converting a report to a slidedeck. These are two different media and should be treated differently.

This all said, I think that #1130 is something we've talked about with other users, and I'd love to see some ideas generated there, so I'll comment separately.