# Thoughts on a few presentation softwares

During the Fall 2017 semester, I did not really have the time to modify the slides of my lectures. I had to make it work with slides that I had not written, and I was not really satisfied with how things went. So I took on the task to create new slides for two courses I would be teaching during the Fall 2018 semester: II.1102 – Java Programming and II.3510 – Android development.

While organizing my ideas and also watching at Marty Stepp’s course on Android development taught at Stanford, I was intrigued with the presentation software he was using. The design was clean and code formatting was looking really good. The latter point is a very important to consider when writing slides that contain lots of code. And, although I never really got to identify what Marty Stepp was using, I recalled the existence of JavaScript frameworks to produce presentation slides. A quick search on Google and I had two contenders: revealjs and remarkjs. A few more solutions were also fetched by Google, but these two were the ones I preferred the most. They still looked like regular decks of slides (just like PowerPoint would do), but had a different feel.

Eventually, I opted for remarkjs mostly because I do not really like the up/down navigation offered by revealjs. So I started looking around at ways to quickly produce slides with remarkjs and came up with xaringan. Xaringan is framework that allows you to generate remarkjs slides from a R Markdown file. The idea is seductive and works quite well. And so, I have written all my lectures slides with Xaringan to produce remarkjs presentations (as you can see when checking the slides in my “Teaching” section).

Now here is the thing. During this semester, I also have been toying around with a few other presentation softwares. In addition to xaringan, I have tried regular remarkjs and Apple’s Keynote. So in the rest of this post, I will give a quick description of the strengths/weaknesses of each set-up, and also provide an explanation as to why I have left out PowerPoint or Beamer when writing lecture slides.

## PowerPoint is alright in some cases

The funny thing is I never really use PowerPoint anymore. And when I do, it always end up making the most basic slides you could ever design: white background with black text, no fancy animation, no nothing. The main reason why I would use PowerPoint is if I have to follow a specific template.

Now I am not saying that PowerPoint is bad. It’s just that, as a professor, I always end up seeing PowerPoint templates in my students’ presentations and get “bored” from their designs.

## Why I never want to use Beamer anymore

After moving away from PowerPoint, I sort of naturally looked at Beamer. Since I use $\TeX$ to write my articles, why wouldn’t I use Beamer for my presentations?

Well, the truth is, Beamer is great… if you do not really plan to insert lots of figures. If you do, then you are kind of stuck with one figure per frame.

Obviously, Beamer is great to write Maths or to insert snippets of code. But the true feature that I always miss is the header that recaps where you are in your presentation (for example, in the Warsaw theme). I find that to be a great feature, if only it could take less space to leave more for the actual content…

Anyway, with these two natural choices out of the equation, I had to start looking for other possibilities.

## Xaringan and remarkjs

Eventually, I found out about remarkjs and Xaringan. Remarkjs is a framework that turns Markdown contents into HTML in order to have slides that can be opened in a Web browser.

There are several things that I find really cool about remarkjs. First, it is highly customizable (as long as you know a little about CSS). You can modify your style to create your own feel for your slides. However, the classic theme is already really slick. The font looks nice, the different font sizes allow for quick differentiation between titles and contents. The real strength of remarkjs is that it uses Markdown, which has tons and tons of possibilities to format your content. It’s super easy to write in italics or bold, or even to insert code that actually changes font. With a few additional features, you can have syntax highlighting for a few common programming languages, which makes it really easy to read code on slides. Finally, and since you actually create HTML-based slides, it is also really simple to add images or videos as HTML tags which makes the process of designing slides much more enjoyable. Actually, I am now finding myself spending more time looking for the perfect picture/meme for each slide than actually writing the contents.

At first, I used Xaringan which is a R package to write remarkjs slides in RMarkdown format. But eventually, I just went to the standard way of creating remarkjs slides mostly because it was easier to integrate to this website.

The only drawback I can mention is that you absolutely need to have an Internet connection to display the slides if you did not author them. Generating a PDF version of them really defeats the purpose of having dynamic slides with animations, GIFs and videos.

## Apple’s Keynote and some slick animations

Finally, I stumbled upon a Reddit post about Jake Wharton’s slides and super animations to emphasize snippets of code. Jake Wharton is a senior Android dev at Google, and he wrote a very detailed blog post about giving good presentations that you can find here. After having seen what types of animations were supported, I am questioning more and more my choice of using Keynote. Moreover, I have just found out that you can export the slides in HTML format, which makes your presentation accessible to anyone while keeping the animations. This is possibly the killer feature that I was waiting for such a long time.