Writing quines is one of my favorite things to do in a new language. That it is always possible is a consequence of the recursion theorem[1], which is, in my opinion, one of the coolest results in basic computing science. I personally find it far more interesting than the halting problem.
> I personally find it far more interesting than the halting problem.
I agree.
Another cool theorem related to the halting problem is the Rice theorem, because it's a really powerful thing to say that every semantic property on programs is either 1. always true 2. always false, or 3. undecidable.
[1] https://en.wikipedia.org/wiki/Kleene%27s_recursion_theorem