Ask HN: Constant impulse to create something, yet never act?
Quite often when I see other projects on GitHub or other Show HN posts, I feel an impulse to "create something" (as in, software). Then I think to myself: "I should sit down and write a toy DNS server in language X, as a means to learn about DNS while also learn the language".
I especially feel this when I see small toy/pet projects or projects that are built throughout a long period of time (i.e. curl). For the latter case, I admire the dedication some people put in their passion projects, building/evolving/maintaining it over a long period of time (again, curl is a prime example).
However, despite these thoughts, while I do sit and try to learn a new language, I never start a project like this. But on the other hand I constantly feel this impulse to "create something", even if it's a toy project.
Does anyone else falls into this endless loop of unsatisfied creativity impulse? If so, have you found any way to tackle it somehow?
12 comments
[ 2.0 ms ] story [ 41.7 ms ] threadI don't know why, I am so mad about it, I am doing it anyway.
In lean and simple C I have some (easy to port to not gcc and not clang, namely tinycc or cproc/qbe etc).
Since it is a big component (for the wrong reasons), I will show it on HN when it is actually working and published, coze it is so much toxic to write (it is not the assembly which is toxic, but the standard on which it is based is completely obsolete/broken/toxic) I may send everything to hell and drop it. I guess I have still months of coding, a lot of them.
Don’t try to make a “DNS server” right off the bat. Make a program that is hardcoded to respond to a query for the A records for a single, hardcoded domain. Do this first before you give any further thought to “DNS server” functionality. Use the “dig” or “drill” command line utilities to make the query, and use Wireshark to inspect the the resulting request and response from an existing DNS server such as 1.1.1.1 or 8.8.8.8. Then make it so that your program can respond similarly to requests from dig or drill, for some single domain of your choosing. Test it a few times to make sure it works. And only after that should you continue with thinking about what to do next for the DNS server.
The result is a myriad of half finished things, some now wildly out of date, and most difficult to pick up again (ie undocumented). Also not a very productive place to be.
I'm addressing the problem by making sketches on paper (yes, very old school) and writing rambling "design" documents before and during my work. That way, I am better able to focus and if I do abandon a project, I have some scraps from which to recollect my original thoughts should I attempt to restart a project after I have gained some applicable experience or knowledge by working on some other idea.
By starting something small and incrementally adding to it, learning as I go along.
For example, I was curious about multi-colored LED lights. So I bought a strip of WS2812 LEDs, an Arduino. Downloaded Arduino IDE and some examples. Bit by bit, I learnt C++, some electronics, need for external power, etc. Now have several "works" that respond to sound, rejuvenated antique lamp, etc.
However, there are some rare moments when I have much more energy and willpower, and I push through and really am onto something, until sleep deprivation catches up to me again.
I guess some people have more natural energy and determination than others, and probably I'm on the lower half.
I'd love to try and make it so that I don't subconsciously fall into this mode of operation when I really need to be creative.