(Credit to Blaz Photo)
I like big codebase and I cannot lie. There were evenings where I dove through the whole gomail repository (mind you, the repository is a decade old) and typed out mostly everything to my Go web application instead of integrating the package into my app. Just because I got curious about how an SMTP server works.
And that one time when I copied mostly everything from log.go to the very same web application and fooled myself into believing I wrote a logger from scratch (Well, yeah I did, but not entirely on my own). All the fancy buffers, stack frames, call depth and program counters serve little in improving the app’s performance, but they are just fun to type out. From that I got to learn how logging works under the hood, how the Go libraries are just so deeply integrated into the computer system, and how Go is so well-written.
You get the gist: Dive head-first to the things you are curious anout. Then gradually sort out the things you need and the things you don’t. The only thing matters that you dared to do it. It took me hours to find the things I needed for my own gigs, but the things I don’t need are valuable too: They taught me to be patient and focused.
There is this wonderfully written blog by Henrik Carlsson, and here is my favorite extract from it:
This is something I now notice whenever I read biographies of people who have done exceptional work: they lived narrow lives. They allowed themselves to care about less than others do.
I admit I’m not sure whether I did execeptional work in the past, nor am I certain that I will do exceptional work in the future. I also admit I live a narrow life since most of the time tinkering with coding I could just go out socializing (I’m still working on the balance). But one thing I admit to be good is that allowing my curiosity to get over me makes me a much more focused person. Now I doom scroll less, read more and feel much better about myself. All thanks to the fact that I don’t care about other things except quenching my thirst for learning new things.
Take one more step, venture one layer deeper into the unknown, and things will be clear.
Until next time!
*P/S: Seriously, writing a small SMTP server from scratch is no joke. Even if you are just copying code or wrapping your head around the orinal codebase, it takes quite amount of time to digest even the core part. But if you insist, here is my note.