For a long time, my favorite language was Python. It's fairly well designed and useful for any task, from web servers like Django to 3D software like Blender; from neural networks like TensorFlow to cloud computing platforms like OpenStack.
Python offers so much libraries and tools for a developer to play with that you feel you can achieve anything, given the right tool.
What I really enjoyed above all was the community, and the feeling that everyone was according to the same set of standards (it was of course not always the case) and that you could somehow easily agree on what was "Pythonic" and what was not (spoiler alert: in fact, you cannot).
Now that I shifted to using lisp languages (especially Racket), I see my past self as childish and primitive, but it has been a brease passing through Python as a part of my road to becoming a better developer, and alas I may never use Python again for personal projects, I have learned a lot and would still recommend it for anyone wanting to achieve efficiently, quickly and elegantly some IT project.
So what is so good in Racket, that it made me think I finally found the language of my dreams?
Well, there's a lot of features that make Racket an awesome language to work
with: parameters, continuations, contracts, syntax-parse...
But the feature I want to write about today is by far the one I find really
#lang (pronounce "hash-lang").
#lang allows writing your own languages. Let's dive into it!