Lu Xun once said, "Sometimes you need to leave things behind to move forward."
Over the past year, the whole process has been like this. I have given up some things and worked hard on others.
What programming language did I choose?#
Before 2017, I was a complete NO-JS developer. When building websites, I used backend rendering and pure CSS for the interface. However, the rapid development of NodeJS in recent years and the urgent need for user interface optimization forced me to start learning JavaScript systematically.
Introduced by my classmates, I officially started learning ES6 and ES7 syntax, which made me feel the similarity between the new JS syntax and Python. After abandoning jQuery and native syntax, my progress went smoothly. In VueJS and React, I chose React because it aligns with my preference for Micro Frameworks, and I personally feel that the logic of React + Redux is more direct and clear than VueJS.
It's already 8102, so I should be using Python3. Most of the libraries I write do not support Python2. The biggest achievement of Py3 can be considered as asynchronous programming. The support for async/await syntax sugar and asyncio becoming a standard library excites me the most. Combined with static type checking using mypy, Python now has the ability to write large-scale software. With the help of uvloop for asynchronous performance optimization, at least in the web domain, Python can compete with Nodejs.
The support for mypy in Python and the TypeScript dialect in JavaScript give both languages the ability for type checking. However, I still have a strong desire to learn a compiled language. Rust and Golang are both within my range of choices. Rust is my favorite language, but its steep learning curve has prevented me from successfully persisting in learning it. Although Golang is simple, I personally feel uncomfortable with some aspects of it, such as tab indentation, lack of generics, and lack of a good package manager. In the future, I will probably choose to continue learning Rust.
So, the technology stack I have developed over the past year is: Rust for high-performance tasks + Python for API services + React Redux for UI.
What projects have I worked on?#
There is no async framework in Python3 that I find comfortable to use, so I created my own called Nougat. This framework has gone through several designs and refactorings, and now it only has a pure middleware-based framework and a router. But it is very comfortable to use. The framework is basically finalized, and the only things left are updating the documentation and developing an automatic reload mode.
In the process of learning web scraping, I created a small web scraping framework called Gear. It is still in its early stages and the code is not perfect, but the architecture is exceptionally clear.
A simple web text translator called Coconut. This is a simple Chrome extension. It performs well in terms of expressing pure text.
A simple Github star searcher called Star Collector. This is also a Chrome extension that allows for quick searching of starred projects. When there are many starred projects, this search is much more comfortable than using the built-in Github search.
Since registering bearnote.com, I have always had a curse to "create a multi-user note/blog website." Nougat was created for this purpose, but unfortunately, I still haven't been able to write it. Finally, I plan to use Nougat to create a personal blog, which should not be too difficult of a task, and at the same time, I can test the expressive power of Nougat.