I've been a hobbyist programmer for about 15 years. I've had this website since 2004.
I'm a generalist, not a specialist. When starting a new project, I select technologies according to how well they are suited to the task, which often involves learning something new. When maintaining a legacy project I usually just stick with whatever the original developer used, which again, usually involves lots of learning.
When the choice is available, I prefer to work in Haskell on Linux, but I use other technologies when the need arises. I'm trying to make more of my code publicly viewable, for example on my GitHub page.