Depending on how you learn, you might find it easier to start by learning the normal patterns and tools for how one does macros (aka "syntax extension") in Racket, and later coming back to this article.
The advanced adversarial stuff Alexis is doing can help some people understand the underlying model better upfront, but other people thinking they have to know it upfront will be needlessly discouraged.
There's also a risk of learning the fancy things too soon: people seem to fixate on the fancy things, sometimes to the detriment of the basics. My favorite example is when newbies to a language will hear of `eval`, which is almost insanely powerful, and then their solutions tend to include `eval` when there are almost always vastly better solutions.