When I accidentally flipped through the blog draft, I found that the 2018 summary was still in the draft stage. Now it's time to write the 2019 annual summary, and I can't help but sigh at how quickly time flies.
R.I.P Python 2#
Python 2 has stopped being maintained, which is definitely something that all Pythonistas should write about in their first article of 2020. I started using Python around 2014, but I was already using Python 3 to write projects. From 2014 until now, I have spent more time on compatibility between Python 2 and 3 than on writing project logic. Although the existence of compatibility libraries like six
greatly simplifies the implementation of compatibility, I still hope to avoid this workload.
At first, there was not much reason or motivation to do the migration work, but the slight progress of Python 3 was enough to give the migration enough advantages: optimization of the hash algorithm improved performance; the establishment of async syntax and the asyncio ecosystem; the emergence of type hints. These make Python feel more like a modern language.
Today, the death of Python 2 is a good thing, getting rid of such a huge historical burden. I hope Python 3 can have better development, work on JIT, and study the GIL. I hope Python 3 will continue to improve.
In addition, Guido's retirement has brought a new governance model to Python, no longer owned by a dictator. The emergence of hpy also gives Python the hope of having a standard spec, which may lead to the emergence of more and better parsers.
Overwatch Events#
After work, my love for games can only be put into events. I don't really care about FPX winning in League of Legends or Paris Saint-Germain not making it to the finals in Dota. The performance of Overwatch in 2019 is what excites me the most.
First, they won second place in the World Cup, and then four Chinese clubs competed in the second season of OWL in China. At the same time, the full Chinese lineup of Chengdu Hunters has given people great expectations. One is the extraordinary performance of the Chinese team in the World Cup, and the other is the persistence in using an all-Chinese lineup. I heard that the boss behind Hunter is the same as the boss of RNG. From "we don't know how to win" in the first season of OWL to the Dragons winning the third stage championship this season, with 4 or 3 teams making it to the playoffs, all of this is declaring the vigorous development of Overwatch in China. As Lin Chiqing said, "We are ready to let the world know CHINA again."
The home and away mechanism of the third season of 2020 will allow many OWL matches to be held in China, and I believe the atmosphere will be great. The unfortunate thing is that RUI, the coach of Chengdu Hunters who is known as the "miracle doctor," left the team due to injury. I don't know if Chengdu can maintain their level and become stronger in the third season.
Firmly on the Path of Rust#
I have been writing Java at work for a year, and although I still hate it as always, it is a skill for making a living, so I studied it a bit to ensure that I won't lose my job. But during my free time, I became more determined to stick to the decision I made three years ago, "to learn Rust."
How should I put it, recently I saw a passage that describes my attitude towards Rust very well:
Around May or June, I systematically studied the Rust language with my team, and then I wrote some disposable code. After reading this article from Signal, I couldn't help but feel excited that I can finally use Rust to create a tool that seems to be useful! Overall, Rust has the expressive power comparable to Ruby, the performance comparable to C++ (if used correctly), and a type system that is slightly inferior to Haskell but can outperform most mainstream languages, making writing code in Rust enjoyable (except for slow compilation speed). With just over 200 lines of code for this small tool (including unit tests, generative tests, and a simple benchmark), it is probably not as easy to achieve with Python, Elixir, or Node.js.
That's about it. Thanks to the ecosystem of procedural macros and other features, code can be written with the expressiveness and writing experience of a scripting language, while still having excellent performance and a comprehensive type system. Rust can perform well in various fields.
Rust has also truly put me on the path of programming languages. Before, I might have been standing on the shoulders of giants without knowing who they were and what they could do. But Rust has helped me take that step. I slowly learned about type systems, Turing completeness, mathematical systems, contravariance and covariance, and other things that you may use every day but don't know the reasons and mechanisms behind.
I am grateful that in my work, I am no longer just a simple CRUD boy. Although I still have a long way to go, at least I took that step in 2019. I am very grateful for the change that Rust has brought me.
Side Projects#
As I described in "Technical Decluttering," I started to dislike writing projects of the same type and gradually started to explore different fields. I started to seriously think about creating a community and hope to make Resource.rs a success. I reflected on the projects I have done, and those that didn't teach me anything were just slowing me down. I registered 3min.work, which means "Three-Minute Studio." I hope to put some of my temporary, phased, experimental works or attempts here, so that I can have a more intuitive feeling and not hinder my progress.
Finally#
Although work has not been satisfactory and there has been no progress in learning, I have gradually accepted my mediocrity. But I still firmly believe in the simple truth that "diligence can make up for clumsiness."