How I Host Lightning Talk Slides from my iMac

Rastam Hadi
Jun 8, 2017 · 3 min read

My team at work hosts a lightning talk session once a month. Each member comes up with a topic that they present for five minutes in one of our conference rooms. The session is broadcast on Google Hangouts to the rest of the company, including our branch in Osaka. The goal is to inculcate inter-departmental knowledge sharing; encourage continuous learning and research; foster an open engineering culture; and all that good stuff.

I lean towards browser-based slides, and my presentation framework of choice is reveal.js. On top of that, I use reveal-ck — a Ruby gem that helps me avoid wading through raw HTML and JavaScript.

I am not, however, going to talk about how to use reveal.js or reveal-ck. Nor am I going to talk about how I put together content for a lightning talk. This article is more about the technical logistics for hosting my slides given my rather specific circumstances:

  • I don’t have a laptop at work, which means that I can’t just sneakerware my slides into the conference room. I could always apply for one, but I’d just rather not deal with all that bureaucracy.
  • My teammates have laptops that I can freely leech off of, but in this day and age, I don’t want to waste time copying HTML files and assets across machines.
  • Internal talks sometimes include sensitive content, which precludes public hosting services like slides.com.

My ideal solution would ultimately look like this:

Image for post
Image for post

I prepare my slides beforehand and host them from my desktop. My teammates’ laptops have access to the company’s WiFi network, so all I have to do is bring up the slides in one of their browsers.

Setting Up a Web Server

I started off by looking for a web server — preferably one that wouldn’t be too painful to install. As it turns out, macOS comes with Apache by default. No installation needed whatsoever! ✌

Next, I had to configure Apache. A bit of googling led me to How to Set up Apache in macOS Sierra 10.12, which came in very handy. The instructions John Foderaro gives are easy enough to follow, but tl;dr these are the steps I took:

1. Create a ~/Sites folder

$ mkdir ~/Sites

As he mentions in the article:

Once you create the directory, you can see that Finder still pays homage to this feature of yesteryear, as the folder icon gets a special treatment, receiving an icon that appears strikingly similar to that of Safari’s.

Image for post
Image for post

This was a nice touch. It makes it look as though this was meant to be. 😄

2. Add this to /etc/apache2/users/$(whoami).conf

<Directory “/Users/your_username/Sites/”>
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>

Substitute your_username as necessary.

3. Uncomment these lines in /etc/apache2/httpd.conf

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf

4. Uncomment these lines in /etc/apache2/extra/httpd-userdir.conf

Include /private/etc/apache2/users/*.conf

5. Restart Apache so that the settings can take effect

$ sudo apachectl restart

These are all one-off settings. I don’t use Apache for anything else, so there’s probably no need for me to touch them ever again. 🎉

Hosting the Slides

These are the steps that need to be repeated every time you have a new deck of slides to present:

1. Create a symbolic link in your ~/Sites folder to your slides

$ ln -s /path/to/reveal.js/slides ~/Sites/your_presentation

Substitute /path/to/reveal.js/slides and your_presentation as necessary.

2. Make sure your slides show up on your browser

http://localhost/~your_username/your_presentation

Substitute your_username and your_presentation as necessary.

3. Make sure you can see your slides from someone else’s machine

http://192.168.x.x/~your_username/your_presentation

Substitute 192.168.x.x, your_username and your_presentation as necessary. If this doesn’t work, then you may need to configure your firewall.

Update: June 12, 2017

I presented the contents of this article in our lightning talk session last May. Dogfooding FTW. The slides are available here (in Japanese).

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store