I keep seeing new projects that implement things that Emacs and Org mode already do incredibly well. I guess it's a testament to how steep the Emacs learning curve is, or perhaps how ugly the defaults look.
You have ox-beamer, which lets you write your slides in Org-mode, and export using LaTeX and Beamer, which look pretty great. You can also use org-reveal, or org-re-reveal to make some visually very attractive presentations with reveal-js. And finally, if you want to actually have the presentation run inside Emacs, you can use dslide[0] which looks really nice, and leans heavily on org-babel.
There's definitely something to be said about emacs being stuck in time. However, everything under the sun is just a half-baked clone of something emacs already had, except for text-editing :^)
Here's my neo-Luddite take on this. Slides with support for notes in a synchronized second window in just 371 bytes of minified javascript, some HTML and some CSS:
let a=[...document.getElementsByClassName("slide")]
.map((a,b)=>[a,"slidenote"==(b=a.nextElementSibling)
?.className?b:a]),b=0,c=0,d=()=>a[b][c]
.scrollIntoView(),e=new BroadcastChannel("s"),
l=a.length-1;d();e.onmessage=({data:a})=>{c^=a.c,
b=a.b,d()};document.addEventListener("keypress",
({key:f})=>{b+=(f=="j")-(f=="k");b=b<0?0:b>l?l:b;
c^=f=="n";e.postMessage({c,b});d()});
div.slide, div.slidenote {
height: 100vh;
width: 100vw;
/* Other slide styling options below */
...
...
}
<div class="slide">
Anything in here is one slide
</div>
<div class="slidenote">
(optional) Anything in here is
a note for the slide above
</div>
You can trivially use the HTML and CSS inside markdown, so any markdown parser that generates HTML is now an ultra-lightweight slides generator.
For a deeper explanation, see Dave Gaur's original minslides[0] and my own presentation on how I added note-support to it and golfed the JS code[1].
There's also the closed-source iA Presenter[0], which makes some great-looking slides. It's paid and Mac-only though.
I use Quarto with reveal.js and love it. I teach and particularly like the multiplex plugin[1] to sync the presentation on multiple devices. My students can open it on their laptops and I control the changing of the slides, but they can click on links or interact with the presentation themselves.
I really like these presentation-as-code tools in principle, but in practice I find that they can be a bit limiting. However, I haven't used them enough for this to be anything more than a general sense. Does anyone have an opinion on this?
I tried out reveal.js for a while but, especially with Google Slides coming in, I found it limiting and increasingly the collaboration component of Google Slides was becoming more and more important to me at the time.
The most amusing thing I found about Go is that they built a presentation framework similar alongside the language. It's got some additional syntax on top of markdown but the documentation to use it can readily fit in an LLM's context window. I'd say it's good enough for many simple presentations.
I like these projects but in my experience the four most common products people use for making slides are Google Slides, Canva (mostly by undergraduate students), PowerPoint, and Keynote. The common thread is the ease of use. So it's difficult to see why someone would switch to another product.
It’s definitely niche, but one of the best presentations I’ve ever seen was done in godot [0]
One of my coworkers copied our PowerPoint theme, built a super basic presentation mode with transitions and used the engine for interactive demos live in the slides running the code.
Used this in the past and it's my favorite tool to make presentations now. It's really the most dev friendly tool I managed to try, and I guess I tried a few.
The most interesting thing for me is that you can write your own Vue components for your most specific use cases. Makes it easy to write some rather interactive slides. And it saves you from having to learn some presentation-specific software, some motion design or video making tool. Just quickly code your way through everything.
Whenever I go to a tech conference, I see slide after slide filled with a wall of text, or in the best case 3 to 5 bullet points with text only.
A picture says more than a thousand words.
As much as I'd like to use a simple markdown based tool to create my presentations, most of these appear to come short regarding visuals (1).
Look at the 2007 iPhone introduction - thats how you use visuals to deliver a message.
Going from bullets to visuals is definitely not easy, and while I'm not as brilliant as Steve Jobs, I always give it my best shot. And a supporting tool makes it a lot easier.
(1) if anyone knows about a md-based slide creator supporting good visuals, I'm open to suggestions.
I have this discussion quite a bit with colleagues who specialize in communication.
I want to convey technical and scientific material. My presentation isn’t to motivate a billion people to buy an iPhone. My presentation is meant to inform 50-100 people to learn a new technique. And the slide deck is markers for where they can follow up later for detail and references.
I too see presentations with walls of text. I go to academic and scientific conferences. This is helpful to me. I like it better than posters. I don’t want to go to a conference and have a bunch of Steve Jobs (or more likely Elizabeth Holmes) giving one word per slide presentations.
I also don’t have 100 people working on my slide deck. It’s just me. I don’t need a TED talk.
I wish people would recognize the different purposes and audiences for presentations.
The inside joke among academicians is that our slides have wall of text because we make them on the flight while going to the conferences! Our presentations tend to be bland because the audience is reading off the slides and ignore what the speaker is saying. That's why for our doctoral students we make it mandatory to present at least twice internally before presenting to external audiences. Otherwise, they have these giant tables copied from the manuscript and pasted on the slides, which most people can't read without binoculars.
I sometimes use text-only or text-mostly presentations. And sometimes graphics-mostly presentation work fine too. My typical presentation is probably somewhere in the middle with the caveat that I’m not presenting at academic conferences and the level of technical content varies.
The style for big conference keynotes and breakouts is often different (and often should be). And, as mentioned elsewhere, the production values and effort that goes into keynotes is not practical for everything else—though the level of effort different companies put in varies.
I'm using Jupyter and typst for my slides these days. (Which depends on the audience.)
I was going to write tooling to convert markdown to typst, but typst is so easy that I haven't bothered. Of course Jupyter has markdown support, but I'm normally running code when presenting with it (did 20 hours last week).
What always disqualifies these projects for me is the fact that they need to use a headless browser to export to PDF. PDF export is the primary feature I need from these, and it’s a shame the export mechanism is still this slow and unreliable.
I found with that revealjs slides can be exported to pdf via their tools menu, and print it. It worked on Firefox. True that it’s a manual step. But no need to rely on a headless browser as soon as you don’t want to script it.
Having intentionally stayed away from going down the PDF rabbit hole, but now confronting it again recently … what’s the deal with how sparsely populated the space is with solid and (relatively) light weight rendering solutions/back-ends?
Am I missing something or am I right in thinking that there’s a kinda pandoc/FFmpeg shaped hole in the document tooling space that no one wants to (or can’t) fill? Where tex and chrome based solutions are arguably just too heavy for a number of needs but all we really have?
The problem is that Markdown is not really a markup language, since it only defines the content and structure, but has no way to specify how it will be displayed. To go from content (Markdown) to rendered presentation (PDF) you need a proper markup languaje (HTML/Tex) to be able to specify its layout.
Exactly, I would've hoped someone could come up with a way to render markdown directly into a PDF, without roundtripping via tex and having to handhold the styling process in the way that's required now.
The company behind the minimalist writer is writer had a presenter app called iA Presenter. https://ia.net/presenter
I’ve had it for a while and it’s awesome to write all the notes and stuff in markdown. They also provided a good amount of content on how to write good presentations.
Looking at these two offerings the iA presenter tries to look great out of the box straight away versus this one where you have to mess with the layout. It helps you focus on the content. I’ve done a few presentations with iA presenter and it’s been well received — note I’m a good speaker but not a great slide maker.
I love Presenter. When I used it recently, it was the first time someone described one of my talks as “beautiful”.
Its docs also work hard to sway you away from walls of text. It’s probably a good idea to download Presenter even if you don't want to use it, just so you can read its presentation advice.
It also lets you export your presentation plus speaker notes to a PDF later to distribute to your audience.
I usw pandoc to create slides from markdown:
```pandoc -t beamer slides.md -o slides.pdf```
And if you prefer HTML+JS slides, pandoc can do that too: https://pandoc.org/MANUAL.html#slide-shows
What is the advantage over the reveal.js / quarto eco-system. I’m using that for my lectures, and am really happy about it (especially since it’s pretty easy to make an llm add automatic speaker notes and timing information)
What is nice of the text/code based presentation tools is that you can easily have them be generated by an LLM: I’ve used it to generate a revealjs based presentation to explain a code base, including svg based (sequence) diagrams to illustrate the flow, based on the LLM (windsurf) inspection of the code base.
pretty cool seeing all these approaches for making slides with code, makes me kinda curious whether the tool or the workflow matters more in the end - you think the actual structure of a talk really changes based on how easy the tool is?
I’m using slidev as my main software for presentations on a mostly msoffice based company. I can export to pptx format (it’s screenshot image based though) which makes my colleagues happy for some reason… I’m using the integrated mermaid support to add simple architectures schemas or simple database driven charts.
Yes, it’s more or less reveal.js based as I understand it. I tried it for a while a number of years back along with some other folks at my company. But the company largely standardized on Google Slides and I went in that direction too.
I keep seeing new projects that implement things that Emacs and Org mode already do incredibly well. I guess it's a testament to how steep the Emacs learning curve is, or perhaps how ugly the defaults look.
You have ox-beamer, which lets you write your slides in Org-mode, and export using LaTeX and Beamer, which look pretty great. You can also use org-reveal, or org-re-reveal to make some visually very attractive presentations with reveal-js. And finally, if you want to actually have the presentation run inside Emacs, you can use dslide[0] which looks really nice, and leans heavily on org-babel.
[0]: https://github.com/positron-solutions/dslide
There's definitely something to be said about emacs being stuck in time. However, everything under the sun is just a half-baked clone of something emacs already had, except for text-editing :^)
Here's my neo-Luddite take on this. Slides with support for notes in a synchronized second window in just 371 bytes of minified javascript, some HTML and some CSS:
You can trivially use the HTML and CSS inside markdown, so any markdown parser that generates HTML is now an ultra-lightweight slides generator.For a deeper explanation, see Dave Gaur's original minslides[0] and my own presentation on how I added note-support to it and golfed the JS code[1].
[0] https://ratfactor.com/minslides/
[1] https://nbd.neocities.org/slidepresentation/Slide%20presenta...
For more like this: Check out marp[0], presenterm[1] and reveal.js[2]
[0] https://github.com/marp-team/marp [1] https://github.com/mfontanini/presenterm [2] https://revealjs.com/
There's also the closed-source iA Presenter[0], which makes some great-looking slides. It's paid and Mac-only though.
I use Quarto with reveal.js and love it. I teach and particularly like the multiplex plugin[1] to sync the presentation on multiple devices. My students can open it on their laptops and I control the changing of the slides, but they can click on links or interact with the presentation themselves.
[0] https://ia.net/presenter [1] https://revealjs.com/multiplex/
I really like these presentation-as-code tools in principle, but in practice I find that they can be a bit limiting. However, I haven't used them enough for this to be anything more than a general sense. Does anyone have an opinion on this?
I tried out reveal.js for a while but, especially with Google Slides coming in, I found it limiting and increasingly the collaboration component of Google Slides was becoming more and more important to me at the time.
I'd also like to throw my own app into the mix
http://hyperdeck.io
This looks cool, but is it still maintained? Changelogs mention iOS 14 only 5 dot releases ago.
https://docs.hyperdeck.io/changelog.html
For iPad and Mac only, to save others a click.
My first time seeing presenterm, very cool. I will seriously consider using this in the future.
Quarto is also nice and builds on top of reveal.js for slides
Slidev is awesome. I'm working on something like this but for forms: https://forms.md
The most amusing thing I found about Go is that they built a presentation framework similar alongside the language. It's got some additional syntax on top of markdown but the documentation to use it can readily fit in an LLM's context window. I'd say it's good enough for many simple presentations.
https://pkg.go.dev/golang.org/x/tools/present
I like these projects but in my experience the four most common products people use for making slides are Google Slides, Canva (mostly by undergraduate students), PowerPoint, and Keynote. The common thread is the ease of use. So it's difficult to see why someone would switch to another product.
It’s definitely niche, but one of the best presentations I’ve ever seen was done in godot [0]
One of my coworkers copied our PowerPoint theme, built a super basic presentation mode with transitions and used the engine for interactive demos live in the slides running the code.
[0] https://godotengine.org/
Used this in the past and it's my favorite tool to make presentations now. It's really the most dev friendly tool I managed to try, and I guess I tried a few.
The most interesting thing for me is that you can write your own Vue components for your most specific use cases. Makes it easy to write some rather interactive slides. And it saves you from having to learn some presentation-specific software, some motion design or video making tool. Just quickly code your way through everything.
Quite refreshing to build slides that way.
Whenever I go to a tech conference, I see slide after slide filled with a wall of text, or in the best case 3 to 5 bullet points with text only.
A picture says more than a thousand words.
As much as I'd like to use a simple markdown based tool to create my presentations, most of these appear to come short regarding visuals (1).
Look at the 2007 iPhone introduction - thats how you use visuals to deliver a message.
Going from bullets to visuals is definitely not easy, and while I'm not as brilliant as Steve Jobs, I always give it my best shot. And a supporting tool makes it a lot easier.
(1) if anyone knows about a md-based slide creator supporting good visuals, I'm open to suggestions.
I have this discussion quite a bit with colleagues who specialize in communication.
I want to convey technical and scientific material. My presentation isn’t to motivate a billion people to buy an iPhone. My presentation is meant to inform 50-100 people to learn a new technique. And the slide deck is markers for where they can follow up later for detail and references.
I too see presentations with walls of text. I go to academic and scientific conferences. This is helpful to me. I like it better than posters. I don’t want to go to a conference and have a bunch of Steve Jobs (or more likely Elizabeth Holmes) giving one word per slide presentations.
I also don’t have 100 people working on my slide deck. It’s just me. I don’t need a TED talk.
I wish people would recognize the different purposes and audiences for presentations.
The inside joke among academicians is that our slides have wall of text because we make them on the flight while going to the conferences! Our presentations tend to be bland because the audience is reading off the slides and ignore what the speaker is saying. That's why for our doctoral students we make it mandatory to present at least twice internally before presenting to external audiences. Otherwise, they have these giant tables copied from the manuscript and pasted on the slides, which most people can't read without binoculars.
I sometimes use text-only or text-mostly presentations. And sometimes graphics-mostly presentation work fine too. My typical presentation is probably somewhere in the middle with the caveat that I’m not presenting at academic conferences and the level of technical content varies.
I don't know if Markdown based slides are good or bad but Apple has plenty of bullet point type presentations in their WDC videos
Like here's one
https://developer.apple.com/videos/play/wwdc2023/10056/
The style for big conference keynotes and breakouts is often different (and often should be). And, as mentioned elsewhere, the production values and effort that goes into keynotes is not practical for everything else—though the level of effort different companies put in varies.
I'm using Jupyter and typst for my slides these days. (Which depends on the audience.)
I was going to write tooling to convert markdown to typst, but typst is so easy that I haven't bothered. Of course Jupyter has markdown support, but I'm normally running code when presenting with it (did 20 hours last week).
What always disqualifies these projects for me is the fact that they need to use a headless browser to export to PDF. PDF export is the primary feature I need from these, and it’s a shame the export mechanism is still this slow and unreliable.
I found with that revealjs slides can be exported to pdf via their tools menu, and print it. It worked on Firefox. True that it’s a manual step. But no need to rely on a headless browser as soon as you don’t want to script it.
https://quarto.org/docs/presentations/revealjs/presenting.ht...
Yea.
Having intentionally stayed away from going down the PDF rabbit hole, but now confronting it again recently … what’s the deal with how sparsely populated the space is with solid and (relatively) light weight rendering solutions/back-ends?
Am I missing something or am I right in thinking that there’s a kinda pandoc/FFmpeg shaped hole in the document tooling space that no one wants to (or can’t) fill? Where tex and chrome based solutions are arguably just too heavy for a number of needs but all we really have?
The problem is that Markdown is not really a markup language, since it only defines the content and structure, but has no way to specify how it will be displayed. To go from content (Markdown) to rendered presentation (PDF) you need a proper markup languaje (HTML/Tex) to be able to specify its layout.
Exactly, I would've hoped someone could come up with a way to render markdown directly into a PDF, without roundtripping via tex and having to handhold the styling process in the way that's required now.
This is why I still use beamer and pandoc.
For those using Obsidian: https://help.obsidian.md/plugins/slides
I'd just like to throw https://hedgedoc.org/ into the mix here, for anyone looking for a collab + notes + presentation selfhosted thing.
I've been trialling it for a little while and loving the whole experience so far.
I use Obsidian. That way my slides are just notes in my existing knowledge base - searchable, linkable, etc
The company behind the minimalist writer is writer had a presenter app called iA Presenter. https://ia.net/presenter
I’ve had it for a while and it’s awesome to write all the notes and stuff in markdown. They also provided a good amount of content on how to write good presentations.
Looking at these two offerings the iA presenter tries to look great out of the box straight away versus this one where you have to mess with the layout. It helps you focus on the content. I’ve done a few presentations with iA presenter and it’s been well received — note I’m a good speaker but not a great slide maker.
I love Presenter. When I used it recently, it was the first time someone described one of my talks as “beautiful”.
Its docs also work hard to sway you away from walls of text. It’s probably a good idea to download Presenter even if you don't want to use it, just so you can read its presentation advice.
It also lets you export your presentation plus speaker notes to a PDF later to distribute to your audience.
Why the past tense? It looks great, will use it. I am still using iaWriter. Love that software.
I usw pandoc to create slides from markdown: ```pandoc -t beamer slides.md -o slides.pdf``` And if you prefer HTML+JS slides, pandoc can do that too: https://pandoc.org/MANUAL.html#slide-shows
I use a small patch [1] to revealjs [2] hosted on GitHub pages [3], just point it to a markdown gist
[1] https://github.com/hakimel/reveal.js/compare/master...rectal...
[2] https://github.com/hakimel/reveal.js
[3] https://gist-reveal.rectalogic.com/
I have been using https://www.deckset.com/ for the same for years and have no complaints.
What is the advantage over the reveal.js / quarto eco-system. I’m using that for my lectures, and am really happy about it (especially since it’s pretty easy to make an llm add automatic speaker notes and timing information)
This looks very useful to get llms to generate slides. It would be nice if it had an llm.txt I can add as a context directly. Maybe an MCP server too
What is nice of the text/code based presentation tools is that you can easily have them be generated by an LLM: I’ve used it to generate a revealjs based presentation to explain a code base, including svg based (sequence) diagrams to illustrate the flow, based on the LLM (windsurf) inspection of the code base.
pretty cool seeing all these approaches for making slides with code, makes me kinda curious whether the tool or the workflow matters more in the end - you think the actual structure of a talk really changes based on how easy the tool is?
I’m using slidev as my main software for presentations on a mostly msoffice based company. I can export to pptx format (it’s screenshot image based though) which makes my colleagues happy for some reason… I’m using the integrated mermaid support to add simple architectures schemas or simple database driven charts.
I wrote my quick and very opinionated solution for this: https://github.com/cavenditti/quickslides
Just a little Python to generate a Typst file and then render it.
It won't fit everyone but for me it's quick, flexible enough and creates good-looking slides.
Reminds me of:
https://slides.com
Yes, it’s more or less reveal.js based as I understand it. I tried it for a while a number of years back along with some other folks at my company. But the company largely standardized on Google Slides and I went in that direction too.
For Emacs, Org-Present and epresent work well.