anaconda / nbpresent

next generation slides for Jupyter Notebooks
BSD 3-Clause "New" or "Revised" License
161 stars 23 forks source link

Chalkboard integration #85

Open superbobry opened 7 years ago

superbobry commented 7 years ago

Reveal.js has a chalkboard plugin which allows to annotate slides using handwritten notes. While this is surely not a widely used (nor requested) feature, it might make teaching from Jupyter much easier and enjoyable.

Do you think it is possible to integrate Chalkboard into nbpresent?

bollwyvl commented 7 years ago

Chalkboard sounds really cool! Thanks for the suggestion!

In the "normal" notebook, this would be hard, as it is responsive to changing screen sizes, etc. This is a slippery slope, as I never want to get into the business of providing something too rich, as most "real" content belongs in cells! But when a shared, responsive x/y space is needed, we'll have to do some freaky stuff that the base notebook wouldn't touch.

For the handwriting-challenged, such as myself, other kinds of annotation such as sticky notes, arrows, highlights would be nice... but see caveat about getting too crazy with it :)

Not to hate on jquery/chalkboard/canvas, but here's a potential implementation that is already in d3 (the manipulation engine nbpresent uses).

Further, the colors from themes could be offered as the "chalk," though I could see want to pick colors on the fly.

From a data model point of view, this could go down a few ways:

I'll have to mull over which of those would be the most compelling! Having them live in regions would be good, as it wouldn't be a new high-level "thing".

Finally, there would be the question of whether this goes into nbpresent core, or as an extension that would ship as a separate package... this could hook into the "currentSlide" changing, and could (probably) be hacked in directly, without the rest of nbpresent even knowing about it... but something a little more elegant is probably better. The approach taken by the reveal plugin where the left-bottom buttons toggle different interactivity modes is nice, which we've already considered for showing run buttons, etc.

Thanks again!

damianavila commented 7 years ago

Reveal.js has a chalkboard plugin which allows to annotate slides using handwritten notes. While this is surely not a widely used (nor requested) feature, it might make teaching from Jupyter much easier and enjoyable.

Interesting stuff, thanks for the link!

superbobry commented 7 years ago

@damianavila I've managed to get it working in RISE, see superbobry/RISE@d3ae7488dcb5b8f224b28a1575dfd6f8ac4f997e.

damianavila commented 7 years ago

@superbobry :wink: I guess a PR is coming from you in the RISE repo, don't you? :stuck_out_tongue_winking_eye:

Btw, sorry @bollwyvl to hijack the thread for a little bit :wink: