# OMG Macros Corwin Brust [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--20-omg-macros--corwin-brust.webm" subtitles="/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust.vtt"]] [Download compressed .webm video (24.3M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--20-omg-macros--corwin-brust--vp9-q56-video-original-audio.webm) Macros are a powerful tool. In the context of Emacs Lisp programming they can also provide us with a "foot-gun" of immense proportions. Join the dungeon-mode project as we trip over our own macros, so to speak, in the context of building a GPLv3+ turn-based role-playing game engine and game design features for Emacs. In this 20m talk I'll briefly introduce some rationales leading to storing all game source and play state information within org-mode documents (spoiler: it's about freedom), then go into some detail around the "ETL" process design that currently accomplishes this. Finally, we'll look closely at one especially problematic macro deep within this solution, and invite people to throw fruit^11^dhelp draw conclusions, ask questions, and discuss. [[!inline pages="internal(2020/info/dm-notes)" raw="yes"]] - Actual start and end time (EST): Start: 2020-11-28T16.17.32; Q&A: 2020-11-28T16.34; End: 2020-11-28T16.38.32 # Questions ## How is your background work? See 06: Trivial Emacs Kits's Q&A: Corwin uses Wallpaper Engine. - [Corwin] Wallpaper Engine on Steam is probably the thing that's grabbing attention. I haven't tried it under GNU/Linux. My family are (mostly) Windows users right now ****heavy sigh**** I don't want to get into my tool chain a huge amount, but I will talk about it some as/durning the Welcome to the Dungeon talk tomorrow. For now I will say I'm using a mix of free (free and not-free but too easy to avoid tools on my one pretty good computer). I would love to have the time to invest to use more (only) free stuff but sometimes we we can't afford the freedom, in terms of the learning curve. I think this is the most important problem space in free software, FWIW. ## What was the key message you wanted to share with your talk? Macros are powerful and necessary. Consider how you use them? ## Do you mind if I use your macro code as inspiration for an elisp uglifier? Have At! It's GPLv3 and you are welcome; let me know if you have any trouble finding fruit to throw.