Building the M-x Erlangen Website
by Merlin and Melanie
on
in room 0.131
at Cauerstraße 11
Meetup
Problems
- $5 per month
- Users regularly join but then don’t attend
- Spam accounts
Benefits
- Email list
- Good discoverability
- Advertising
- Payment & Sponsoring support
- Attendance count
GitLab Pages
Static Website Hosting for Free
- It’s free
- No security or privacy concerns
- Easy to maintain
- (even allows for custom domains)
Continuous Deployment
- each commit triggers automatic rebuild and deployment
- mail notifications on build (or test) failures
- based largely on (but not limited to) Docker
- distributed runners
Quick Demo
Static Site Generators
Org-mode
- awesome source language
- allows HTML export
- assigns a few semantic css classes
- cumbersome to customize
Jekyll
- uses markdown with liquid templates
- configured via options in file or via args
- special support for blogging
Hakyll
- uses pandoc and pandoc templates
- configured via custom Haskell executable
- extremely flexible
Quick Demo
Pandoc
universal document converter
handles a shitton of input file types
Markdown, Org, LaTeX, docx, odt, DokuWiki, epub, …
own templating system
UI Stuff?
Templates and Partials
- Templates: Organize UI in html, write entries in org-mode
- Partials: split UI into smaller pieces
Context Matters
$title$
, $date$
, and $body$
change accordingly depending on its context.
Load and Apply Templates
Lessons Learned
Automatically filtering future and past talks is annoying
Hakyll is a static site generator and the filtering is done only when generating.
Can be worked around with scheduled rebuilds.
Stack and CI don’t play nicely
- Stack in Docker took waaay too long to build too much of the Haskell ecosystem.
- Can be worked around by CI caching.
- We switched to raw nix for CI (without Docker) as we both use NixOS anyway.
Future of M-x Erlangen
- This is the last meetup (on meetup.com)
- Matrix chat (bridged to other services) Maybe we remove the bridge at some point as it keeps messing with the channel.
- Mailing list
- Website for history and content