End Phrase Those Who Travel a Hundred Miles Are Halfway There

End Phrase - Those Who Travel a Hundred Miles Are Halfway There #

Hello, I am Wen Ming.

Time flies, and in the blink of an eye, the OpenResty technical column that has been going on for over 4 months is coming to an end. In these final moments, let’s temporarily put aside the technical aspects and talk about my feelings and experiences in creating this column.

OpenResty has been open-source for more than a decade. Its synchronous non-blocking programming philosophy and high-performance stability surpass other development languages and platforms of the same period by far. However, OpenResty is still not a technology that can be deeply integrated into business aspects and mastered by more developers. The reasons for this are firstly related to its positioning and long-term planning, which we cannot change; on the other hand, it is also due to insufficient contributions in the community. Until now, OpenResty still does not have a good introductory guide or a complete learning book.

Therefore, my initial intention in contacting the Geek Time team to write this column was to promote the popularity of OpenResty through learning materials. I hope that through this form, more developers can get started, have a complete understanding of OpenResty, and be able to incorporate OpenResty into the development of their business code.

At the beginning, I wanted to use video courses to complete this content because it would save me the most time. Those who are familiar with me know that I thrive when I’m on stage, and I prefer to improvise because it allows my brain to work quickly and come up with viewpoints that I hadn’t even thought of.

But considering factors such as correcting content errors, readers’ review, searching, and sharing, I ultimately switched to a new model that focuses on text with supplemental videos. In retrospect, I’m glad that I adopted this approach. The text format allows me the opportunity to polish the written content and code snippets, constantly striving for improvement. So, from the perspective of pursuing perfection, I still prefer the written form.

Looking back at the creation of this column, there were mixed emotions. It was undoubtedly tough. Most of the recording was done late at night before going to bed, and the majority of the text was written in the evenings or during business trips, squeezing every bit of available time. Additionally, this year, I embarked on my own entrepreneurial journey, which brought even more miscellaneous tasks and busyness.

However, the taste of satisfaction that follows the bitterness is much more lasting. I finally had the opportunity to review and summarize my years of accumulated OpenResty knowledge in a comprehensive manner. I also discovered many mistakes and omissions in my knowledge through the enthusiastic comments from all of you. Teaching and learning from each other is a joyful thing.

Knowing how to learn is more important than memorizing #

In terms of knowledge accumulation, I am actually someone with poor memory. I often forget things I have learned after a couple of days, so I intentionally write blog posts to record them. Sometimes when I review the code of OpenResty and lua-resty, I even forget the functionalities I have implemented myself, and only the commit records in Git prove that I wrote them.

You see, even with such poor memory, I am always able to quickly grasp and apply new technologies by relying on good habits of organizing and recording. And through practical use, I further consolidate my understanding.

Therefore, in this column, I repeatedly tell you that it is not necessary to remember all the knowledge points mentioned in the articles. As long as you have a rough impression in your mind and know where to find the answers when needed, that is enough. Knowing how to find answers is much more important than memorizing the answers themselves. As the saying goes, it is better to teach a man to fish than to give him a fish.

This applies to learning OpenResty as well. By starting from the documentation and test cases, you can quickly and accurately understand the usage of APIs. By starting from reusability and minimizing object creation, you can write high-performance Lua code. By practicing test-driven development, you can also build stable systems like OpenResty. These different perspectives are the fundamentals, and various skills and methods grow from them like flowers and fruits.

Therefore, in the design of the content in this OpenResty column, I didn’t attempt to cover a wide range of topics. Instead, I added some points between chapters and connected them through simple examples, striving to thoroughly explain a typical knowledge point and naturally help you understand similar types of problems. If this column can guide you to the right path of learning OpenResty, then my goal will be achieved.

The first 90% is the hardest #

At the end of this column, I want to use the phrase “行百里者半九十” as a conclusion, to encourage you.

What does this phrase mean? Literally, it means that if you want to walk one hundred miles, when you have walked ninety miles, you have actually only completed half because the last ten miles are the most difficult.

In practical work, if you have completed the entire column, you will find that OpenResty is not perfect and still has many problems. If we look at functionality, stability, and performance, OpenResty is not inferior to Envoy. However, Envoy’s development speed and ecosystem are obviously much better than OpenResty:

  • Envoy has nearly 500 contributors, while OpenResty has only more than 70 contributors;
  • Envoy releases a new version every 2-3 months on average, while OpenResty only releases one version per year, leaving the community waiting;
  • In addition, OpenResty still does not support TLS mutual authentication or the necessary features of gRPC server and client in the microservices system.

Therefore, what I have been worrying about is that for OpenResty, if it doesn’t catch up with the trend of microservices and east-west traffic, it will really be left behind.

For you, as a reader of this column, spending more than 4 months learning all the content is just the beginning. The key ten miles are to digest and apply these contents, integrating them into your own knowledge system.

For me personally, completing this article means delivering the entire OpenResty technical column, but the connection with you is just beginning. We can still interact online through Geektime’s comments section, tribes, QQ groups, and other means; and we can also meet and chat through offline meetups. The value produced by this interaction is far more meaningful and lasting than one-way knowledge output. That’s when I can be considered to have completed the final ten miles.

In addition, the editors of our column have prepared a closing survey specifically for you. I hope you can take two or three minutes to fill out the survey and write about your learning experience and feelings. This is not only a ritual for learning a course, but also a record and summary of your learning in the past few months. It is also an important reference for me to iterate and optimize the course in the future, and it is very valuable. I really hope to hear your voice.

Everyone, the road is long, but as long as we keep moving forward, we will reach our destination. See you in the community!