Thanks for the feedback everyone, I really appreciate it!
Great to see you again at the conf - thanks for the kind words! The trick I've found is to trip up a lot myself, and then just try to document everything that didn't make any sense to me.
For sure, I'd love to have had another 30 minutes to talk so I could go deeper! I personally don't have a ton of programming history prior to Elixir, so how macros work and especially the AST in general were difficult concepts for me to learn. I've heard some excellent talks that started just a couple levels above where my own knowledge was, so at the time I didn't learn much because I couldn't follow along.
So my top goal for this talk was that someone with very little background would walk out of the talk understanding 90% of what was covered, and that they could then watch any other Macro talks and be able to easily follow along by recognizing the same concepts. I also went long every time I did a run-through of the talk so I ended up cutting a couple of examples at the end that would've introduced a few more of concepts of Macros (e.g. I really wanted to do an example of
__using__ but just didn't have the time).
As some others said, the reason for the 2-element tuple is to allow for the syntax of keyword lists, which I think might be important for the maintaining of
do/else/etc blocks inside of the AST. I was planning to cover this in my original talk but had to cut it for time at the last minute. I've got the slide to prove it! There's some additional info (though not a ton) in the Official Docs: Syntax Reference.
Also, could you add the
elixirconf2017 tag to this post, thanks!