A mothlamp problem, defined by myself yesterday out of boredom, is a particular kind of engineering problem that has three important qualities:
A certain type of nerd finds it beautiful and alluring to work on
A solution requires solving the hardest known problems in the universe, often requiring years (if not decades) of effort
Other people question the utility of solving the problem at all
You know exactly what type of problem I'm talking about. Making your own programming language. An IDE that supports structural editing. More and more advanced static type checkers. Custom build systems. I'm sure you can think of others.
Why do we do this to ourselves?
I'm not immune. I've been working on an extensible language-agnostic static analysis and refactoring tool for half a decade now. That's a mothlamp problem if I've ever seen one. My github account is littered with abandoned programming language implementations, parser generator frameworks, false starts at extensible autoformatters, and who knows what else. I think I've even got an async-await implementation in there somewhere. I've got the bug, and I fly toward the light.
I'm not sure why I'm like this. Sometimes, ideas compel me. I am gripped by a vision, and I want to experience it in reality, to reach out and touch it rather than merely imagine it. Practicality be damned.
What drives this? Am I just bored?
That's certainly part of it, yes. But I think much more importantly, dreaming big is a muscle. You have to exercise it from time to time. Each time I come up with a grand vision and sink dozens to hundreds of hours into it, only to walk away unfinished, I learn a bit more about how to make a dream become real.
One day, I will start my last project. I may or may not finish it. But after it's done, either due to tragedy, falling out of love with the craft, or simply not having time left to start another one, I will put my computer and notebooks down for the last time. That's life.
But I can accept that. I'll be very good at dreaming by then.