Reveal.js: HTML presentation framework
revealjs.com
revealjs.com
reveal.js was first released in 2011. A few years later I also launched a visual editing environment for reveal.js called Slides (slides.com). It has some pretty unique features targeted at developers, like a built-in CSS editor, access to the HTML source, and stepped line-by-line code highlighting. http://slides.com/news/developers
It’s been really great finding a sustainable way to continue working on open source (reveal.js) thanks to the revenue from the proprietary editor (Slides).
Truly a versatile, well-made script.
Thanks for making it!
Thank you for the gift of productivity!
It is very versatile and I've also modded it to be used to create live effects during concerts.
A minor bit of feedback on the webpage: I spent a while looking for a link to an example presentation, but couldn't find one. I eventually realised that the entire top section is an example presentation. This is so cool!! I wonder if adding some text next to the arrow ("Try the demo", or similar?) might help people find it? The demo is so nice, it would be a shame if some users don't spot it.
(It became a defacto go-to tool for slide decks for me because it was so memorable)
IMHO this is the best tool to present scientific content, because it really allows "multi media" in the original sense: formulas, different kinds of images, and videos.
Although I'm struggling right now with the formula part (going off the example in readme which is also not working) but I'm sure I'll figure that one out after some shut-eye. :P
* Beamer presentations
* Powerpoint presentations
* Reveal.js presentations
Kind of crazy and interesting. I made a nuclear power deck with it and it worked ok.
Made me really excited and happy when I discovered it.
For example, here’s a slide from a presentation where I was showing off some fun features we had built into Sorbet’s[1] LSP editor support:
https://sorbet.run/talks/RubyConf2019/#/18
The slide has the Sorbet web playground embedded as an iframe, so the demo file persists for anyone who wants to browse the slides later. You can play around with the same example I used on the day of the presentation.[2]
Also, since it's just HTML, you can also dynamically generate content. I've done things like have a bunch of subslides that just mutate content when I'm trying to telling a technical story, with javascript stepping forward the changes. Works much better than copying and pasting and editing the same slide 25 times.
Honestly, I don't think I've made any presentations that didn't use reveal.js (except when forced to) in, what, a decade now? If it wasn't reveal.js back then it was something like it.
ideas.org → outline.org → slides.org
I start with unstructured thoughts, turn them into a structure of a presentation and then into concrete slides, all in roughly the same format. With Emacs, it's easy to navigate between all three files, view them side-by-side, copy/paste between them and make high-level structural changes like reordering slides, all in the same editor I use for everything else.
As a bonus, the defaults are pretty much the opposite of PowerPoint: the path of least resistance is to make simpler, more consistent slides with less text on each one.
I'd use this for any sort of presentation, but it's particularly useful for code. I can easily copy-paste code from my files into slides.org, and I get syntax highlighting in the editor to help catch mistakes. I can use syntax highlighting in the generated slides or not, depending on my needs. I haven't set this up myself, but I've seen people write simple Emacs scripts that compile and test the code from their slides—that would have caught a number of typos that made it into my actual conference presentations!
This also lets me manage everything associated with a presentation in a single git repo. This is incredibly handy, especially for presentations that have their own code or data.
Highly recommend giving a workflow like this a try. Once I got the hang of it, it became far more productive than making slides in PowerPoint, with better results to boot. It's easier to write slides in the first place, make structural changes and reuse content between pretty different presentations.
[1]: Here are the slides for the latest public talk I've given: https://jelv.is/talks/haskell-love-2020/slides.html
I turn the controls in the bottom-left corner off for the presentation itself, but I started enabling them on my website after a few people got confused on how to advance the slides.
Also, is your workflow org -> MD or org-> html? If to md, as I assume it probably is, can you just call in the slide breaks (---) in org mode directly?
Could you maybe share some code?
Edit: just learned about org-reveal. How did I miss this!
Here's a link to the source for that particular talk: https://github.com/TikhonJelvis/talks/tree/master/haskell-lo...
Should have thought to link to it in my original comment :P.
- No need to tweak the content to fit the page boundary.
- Highly accessible (adjustable to any screen).
- No JS.
- All figures are in SVGs.
- Can also support printing (just insert CSS page break).
- (edit) The scroll bar always shows where you are in the slides.
I keep recommending this to my colleagues, but they're still sticking with PDFs and PowerPoints.
Anyway, do you use a template? Or any tooling?
I decided to create my presentation in a series of markdown files, then run a script to compile them into a single HTML+deck.js side deck.
The overhead of setting the thing up originally was worth it, the iteration on the presentation (eg ability to work on a single section in a markdown editor) was much faster.
If you want to code something similar though, my approach has been using Svelte.
Svelte is a framework for building user interfaces that uses a build step to compile your code. The syntax and API is awesome to work with and the first proof of concept took me from Markdown to a working slide deck in maybe 30 minutes. The pages are mostly pre rendered HTML with a small chunk of JS on top. Not the same great UX but... I will get there.
Have a look at my own experiments with Markdown to slide decks here https://www.fictionboard.com/demos where I show how decks can be used for storytelling and immersion in TTRPGs.
I'll probably finish a demo of markdown based interactive fiction and RPG character sheets this week. And I'll expose the syntax :-)
Here's a 100+ slide PDF of a talk I did the other month with Reveal using an out of the box theme: https://github.com/nickjj/nyhackr-cli-dev-env/blob/master/ny...
The PDF doesn't show it but I had a lot of animated gifs (almost every terminal screenshot is animated). Overall it only took like 30 seconds to assemble each slide once I knew the content I wanted to have, since it's just HTML in the end.
It also has a nice a presenter layout to see slide notes. Perfect for live streaming a remote presentation while having notes off to the side that no one can see on the stream.
The best part about it is the standalone version doesn't require running a Node server. It's just basic HTML, CSS and JS that you can open straight in a browser.
I'll be using it for future presentations.
What I ended up doing was taking individual screenshots of each frame I wanted in the animation. Most of them were only ~5 frames long.
Then if needed, I enhanced each screenshot by adding text labels. Like when I demo'd Vim splits I wanted to put a "1", "2", etc. on each split to make it easier to see what's going on.
Then I took all of those individual screenshots and fed them into https://ezgif.com/maker which is an online tool that converts screenshots into an animated gif where I was able to configure how long each frame should stay visible before transitioning to the next one.
It sounds like a lot of work but it wasn't too bad considering I needed to sometimes add graphics to each frame and control the length of each frame. Once you get the work flow down it was pretty fast.
Is that what you are after, or you're talking about something else?
Plus, I just ran the thing running in Docker with the actual slide HTML file in different host directories. Starting a presentation was just docker run -v.
What's your use case out of interest?
Having the slides automatically synced during presentation would require way less bandwidth than screen sharing and thus result in a better experience for both parties.
Would be nice to stream audio directly with the presentation to facilitate things like investor calls without requiring a full conferencing solution
She was doing phone conferencing for audio at the time.
Worked really well for its purpose and was super simple.
She has since moved to zoom and just does plain screen shares now.
The official reveal.js platform at slides.com also support remote presenting, streamed to any number of viewers. More info and screenshots at https://help.slides.com/knowledgebase/articles/333924-presen...
My university examiners always ave at my presentations.
I'm very happy using this tool, but I have to admit you need to be HTML savvy to be really productive. For me the WYSIWYG editors are surely a stepdown for now, and sadly I haven't seen much improvement recently.
Lately I switched over to use RevealJS via asciidoctor [1] and I was really pleasantly suprised how far you can get (see example presentation [2]) and completly sticking to the Asciidoctor-way (source [3])
[1] https://github.com/asciidoctor/asciidoctor-reveal.js
Of course there's an Emacs mode for authoring your deck.
PS: Yes, Slideshow (S9) is basically a static website generator / compiler for (web) presentations.
All of them are based on Shower [2] and to prepare a new presentation I just copy-paste previous presentation and edit HTML directly... actually very understandable and convenient even for C++ developer.
- [1] https://github.com/ClickHouse/clickhouse-presentations - [2] https://shwr.me/
You can make reveal.js slides in a gui at slides.io
I feel the design constraints enforced (size / amount of text per slide) is awesome, but at the same time very limiting for technical presentations where large amounts of text data is pretty important.
Does anyone else have this issue / work around it? Maybe I suck at designing slide decks, but I just feel that the ability to break design rules easily is sometimes a must-have.
proudly powered by RevealJS
- ODT -> PDF - PDF -> directory of PNG images
Then all you need is a basic web page with an image and some nav buttons, coupled with some JS that knows the list of files and can update the image's URL based on nav button clicks. At the end you have a portable web slide deck.
Fancier setups are definitely possible (you could for example mimic multi-monitor presenter mode by having multiple pages where one drives the other via websockets, or even just add a timer and presenter's notes) but it gets around having to hope that the other side has a decent PDF reader or a presentation editor that likes your preferred file format.
http://bigsense.github.io/presentations/index.html
I wrote a simple builder script that would pull groupings of slides together into different presentations, as well as watcher scripts to rebuild automatically when I saved:
For anyone still looking for an open source editor:
http://thomas.nadev.net/notes/2017-inkscape.html
Type 'em up in Emacs org-mode, then use org-reveal to spit out the presentation HTML and screenshare with my browser.
It's real nice, the workflow allows me to slap something together in tools I find familiar rather than attempting to wrestle with PowerPoint.