Project Nayuki


Why I write

When I created this website in the year , I didn’t do so with a grand plan in mind. I simply wrote about topics that interested me, I felt knowledgeable about, and could be useful to others. Over the course of maybe a decade, I began to better understand my underlying motivations for making an effort to publish my ideas. This happened through receiving online feedback about my work, talking to people in real life, seeing my work cited or incorporated into other people’s works, and reflecting on what I published and its ramifications.

To flesh out ideas

A human’s working memory is quite limited. For this article itself, I felt like I had about 5 major points to make and maybe 2 sentences to say for each point. Only when I write out my thoughts do I realize I actually had much more to say. If I had kept these ideas in my head, I would only be able to recite a small amount when discussing these topics in speech or instant messaging.

Taking the time to express my thoughts without the pressure of an interactive conversation really lets me unleash nearly all the relevant knowledge I hold. Ideas beget more ideas, and as I write out my existing ones, I often find myself discovering or developing new ones and incorporating them into the text. And because I don’t like to be wrong, I proofread my work, try to re-word awkward phrasings, and remove all known spelling and grammar errors.

To fill gaps

I have very little interest in writing about introductory-level topics: You won’t find my tutorials on basic Java, quicksort, or calculus. These have been covered over and over again by thousands of textbooks, videos, courses, and teachers. Some of these resources do an excellent job of teaching and explaining, where I would have no competitive advantage. It would take me an unreasonable amount of skill and effort to even try to produce high-quality materials and grab market share.

Instead, I like to write about niche things that haven’t been covered at all or I feel haven’t been covered well by other authors. Although the vast majority of the ideas I publish are not new, I try hard to provide a better or the best explanation along with reference-quality code that is clear and correct (even handling all edge cases and errors). Every now and then, this strategy pays off when I see my page show up in the top 10 Google search results for a niche topic, hence getting acknowledged as an expert on the subject.

To save me time

I hate repeating myself. When I have to explain something a second or third time, I get increasingly impatient and view the activity as a waste of time. As a writer, I want to do a great job explaining things once and then referring any interested party to read my published work. While this is a selfish reason to write, I think it produces better long-term outcomes than not writing.

Related to this, I’m well aware that ideas brought up in conversations – whether in speech, instant messaging, or email – quickly fade away as new things get discussed. When I want to draw attention to ideas that could be relevant to a wide audience over a long period of time, I try to direct my energy toward writing an article instead of talking about the ideas in private, ephemeral chats.

Writing publicly lets me reach thousands of people over a span of years. After the initial effort of materializing my thoughts into text, I don’t need to put in any additional effort for every person I reach or every year I keep my articles available online. This contrasts with direct messaging, group chats, and even live-stream videos, where anything that doesn’t get repeatedly mentioned will soon be buried or forgotten.

To save you time

Your time as a reader is valuable, and my site is one in an endless ocean of content. I know that conversations can consume lots of time without much substance conveyed, and I know that sloppy writing is arduous to read.

When I write for this website, I gather all my best ideas and polish them so that their presentation is as clear as possible. The quality and completeness of my published work are far higher than what you would get if I was talking to you one on one.

Also, it’s reasonable to assume that if you want to learn more about me and what I do, you will find out more by browsing my published work than by personally asking me in chat/email.

To give back to the community

I have had the privilege of receiving an astounding amount of knowledge from many sources – teachers, books, web pages, videos, and more. Many of these cost nothing to me. Likewise, even before I got good at programming, I benefitted from using open-source software like Mozilla Firefox and many software development tools. Over the years, the repertoire of OSS that I use daily grew and grew. And every year, I am pleasantly surprised to discover free web articles that explain some concepts much better than other explanations I saw before. Because I learned so much from the works that others have given away, I want to contribute back to the global pool of knowledge by making freely available explanations on subject matters that I consider myself skilled in.

To demonstrate skills

Anyone can merely state a claim, “I know X”. I strive to substantiate my claims of proficiency by publicly showing my prose and code so that the reader can draw their own conclusions about what I’m able to do.

In addition to demonstrating skills in individual topics, collecting all my significant works on one website has the effect of building a portfolio that implicitly shows the broad areas I worked on. I found that as a side effect of having a portfolio, I occasionally look back at my past accomplishments to get motivated to continue writing and posting more in the future.

A common piece of feedback I get from readers is that they think I’m a prolific writer and it’s not humanly possible to publish so much stuff. I can see why they think so at a glance – I have hundreds of articles and thousands of pieces of code listed. But I hardly feel prolific at all, and constantly think I’m not doing enough and can put more effort into my writing activities. The way to resolve this vast difference in perceptions is to look at the numbers objectively. While my habits have changed a lot over the years, it seems like on average I add 1 or 2 articles a month, and spend maybe 5 to 20 hours per article depending on its complexity. This is not actually a big time commitment in the grand scheme of things. Furthermore, after doing this for more than a decade, even a trickle of monthly articles adds up to a big collection.

To clear my mind

When I’m obsessed about some topic, I feel like the same small set of thoughts keeps circling around in my mind. If I write them down, I trust that the physical medium (computer, paper, etc.) will preserve my valuable ideas, then I feel safe to move on to new thoughts and eventually forget the old ones. This would seem to suggest that despite the effort it takes to write something well, I would be worse off if I didn’t write and just kept things in my head.

Because I can

I possess the necessary ingredients to write, so why not put them to good use? That is to say, I have:

  • native English-language skills
  • an ability to express complicated technical ideas
  • interesting concepts to share
  • the technological skills to maintain a website

Thus, I feel that to not write would be squandering my potential.

More info