Timeline

    Belated 2024 Year End Sharing

    Published
    January 30, 2025
    Reading Time
    3 min read
    Author
    Felix
    Access
    Public

    It has really been 25 years in the blink of an eye. After taking some time off during the Spring Festival, I found that I had not erected a monument this year.

    Growth on the technical side

    Let’s talk about the growth on the technical side first.

    Front-end

    If we look at the pure technical field division, the basic capabilities have almost not changed (sadly), and most of the capability growth is concentrated in various ecological libraries and frameworks related to the business.

    Web/H5

    - **Nuxt: used -> deep mastery. **

    The initial use was Nuxt2 two years ago. Last year (July 24), it was forced to take over due to some historical reasons. And because of various rendering mechanisms, caching mechanisms, SEO, and framework performance issues, I had to look through the source code and its entire architectural foundation to see. In the end, some fatal problems could not be solved. In January this year, I found a friend to take over and reorganize it into Next.

    - **Next: Mastering -> Refurbished Mastering. **

    Throughout last year, I have been paying attention to the Next/React ecosystem and its updates (such as changes in 19, changes in Next15, etc.). One aspect is that many components or tool libraries implemented in Nuxt are not available in the community ecosystem. I will go to the React community ecosystem to copy and transcribe them. Another aspect is that I still prefer React.

    - **react-query: 0 -> master. **

    The official recommendations of Next are swr and react-query, but because the current project is very heavy + the community happened to see an open-api code generation for react-query, so they chose it. react-query is easy to get started with, as long as you understand key and cache. The slightly more complicated aspects are the complex scene processing issues of server boundary and client boundary and the hydration status issue.

    - **radix/shadcn: master->master. **

    I used to master the react system, but now I have also mastered vue.

    - **seo: Familiar -> Mastery. **

    SEO is a very big and important thing. In the past, if we didn’t have enough knowledge and vision, we would only think about some relatively limited thoughts such as label semantics, sitemap, meta tags, organization, and first screen speed. After going through some things, I completely understood the balance and relationship between seo and content, front-end architecture, and performance.

    - **Image processing ecology: master -> further master. **

    In the past, when writing image processing tools and businesses, a whole ecological chain of libraries would be used. Just look at the documentation. However, because a small number of ecological chains were disconnected in vue, I had to worry about it, so I took a deep look at the source code and then translated it.

    What remains are a few bits and pieces of tools and various libraries. For example, i18n, date-fns, animation, etc.

    ####App

    - Rn+Expo: Master->Renovate Master

    Although I don’t want to admit it, this combination is the best practice for non-large applications. Because now there is a new architecture, bridgeless stable frame and c++ direct writing module can handle almost all scenarios, and you no longer need to write a large number of native pages as before~.

    - C++:0->Semi-familiar

    After the new architecture, there are some scenes (audio) that I can write directly in C++ for Android and iOS.

    - mmkv: 0->Familiar

    First of all, let me popularize some knowledge. Most of them are mobile databases, such as SQLite, Realm DB and WatermelonDB. These database systems usually store data in the device's local file system (stored in the application's private data directory). In traditional mobile databases, most of the lowest-level implementations are called through system I/O such as Read() or Write(). The full name of mmap is Memory Map. Its essential difference is that it accesses content through memory (this is by directly mapping the contents of the file or device to the address space of the process, providing a memory block that can be written at any time. The App only writes data into it, and the operating system is responsible for writing the memory back to the file). After adding protobuf as the transport protocol and the developers’ unremitting efforts to optimize it.

    In terms of final performance, it is almost five times faster than all databases, and it is also very easy to use (kv is similar to redis).

    mmkv felix

    - react-native-paper: 0->Master

    Modern Rn has a lot of component library choices. The ones with slightly higher stars are react-native-ui-kitten, react-native-element, nativebase, react-native-pager, react-native-ui-lib and so on. But in my previous experience, I ended up with the most components handwritten by myself and components found separately by the community. All I needed to choose was a very light component library, which didn’t have too many configurations and had excellent performance.

    react-native-element and react-native-ui-lib were eliminated because of their heavy weight. nativebase was eliminated due to poor performance. react-native-ui-kitten was eliminated due to poor activity. In the end, only react-native-pager is left to choose from.

    - unistyles: 0->Deep Mastery

    This is a extremely intrusive library. Unistyles is a cross-platform library. It is a library used to optimize Rn performance. The new version only supports new architectures.

    Its approach is to first mark all components and imports and determine dependencies (after packaging) through Bebal, and then write a caching layer and algorithm in c++ to cache the styles. Then when the components use the styles, they directly return the styles from the cache layer, and when the final page is updated, ShadowTree is updated directly from C++. When I was researching technology, I looked at the source code out of curiosity, and secretly wrote a lot of articles about it, because I also learned how to write c++ in rn, but in the end I didn't choose it (after reading it, I felt that the risk > the performance improvement).

    The rest are all implemented with highly business-related apps, such as hot updates, payment, background data transmission, etc.

    Backend

    Most of the back-end learning in the past two years has focused on python and go related technologies. As for databases, caches, and queues, they are all about solving specific problems and optimizing performance. They are all too detailed and there is no need to list them.

    Go

    - go: Understand -> Deep understanding

    Learning by doing mainly focuses on business and ecology, but it cannot be done using Go to write difficult infrastructure.

    - echo: 0 -> familiar

    Hey, it's a similar situation to Nuxt. Although I prefer Gin, I have to look at Echo due to historical reasons. To give you a brief taste, most of the back-end frameworks are Api layer, Service layer, Model access layer, Basic settings layer, Middleware layer, Dependency injection, Context, etc. However, different frameworks and language features have subtle differences in the implementation of these abstract concepts, as well as the differences between ease of use and bad use. But if I have the opportunity in the future, I will definitely use Gin.

    - grpc: Mastery -> Refurbished Mastery

    Now that I have learned how to write grpc in another language, I can only say that I am more familiar with its gateway, transmission and codegen.

    - ent: 0 -> Familiar

    Maybe I’m a loser. I’ve never used an orm framework that’s so difficult to use in my life. I really don’t understand how an orm framework has to kidnap some database designs.

    ####Python

    - python: Understand->Familiar

    Learning by doing is also about business and ecology.

    - comfyui: 0 -> Deep application layer mastery

    comfyui is an AI image production framework in the python ecosystem. It has been greatly modified from the original framework to fit the business, and holds the entire image generation business, such as nsfw image mechanical detection, multi-style, watermark, image generation reverse prompt words, websocket, image generation high and low priority queue, etc.

    - ai/image: 0 -> Application layer mastery, model layer familiarity.

    Diffusion model, transformer image model, huggingface ecology, Doka, clip, scheduler, sampler, shallow space operation, controlnet, weight adjustment and so on.

    In the same two languages, there are many ecological library solutions and hand tools for business problems encountered, but I will not list them one by one.

    Operation and maintenance

    virtual card, pheasant computer room, aws, ec2, ecs, rds, vast, cloudflare page, cloudflare gateway layer, vecel serverless, vpn, original tunnel, multi-card deployment, a series of backups, rollbacks, monitoring and so on.

    After playing around a lot, I have now figured out the fastest way to build a website. Life is really hard, and this is entrepreneurship.

    Personal growth

    So the opposite is personal growth.

    Sitting crooked buttocks

    The main theme of 24 years is still being a "special force", writing code as soon as I open my eyes. But the difference is that there are many co-founder responsibilities, but the problem is that I did not switch my responsibility division very well (the switch between dotted and solid lines is really annoying, because writing code is a mind-numbing thing), and my friends in testing and development are all in free range. It is not enough to design and increase communication among classmates. We rely purely on everyone's tacit understanding to do things, which actually led to many management and process problems this year.

    In 25 years, I want to allocate some energy to the connection between people, try to start from a stupid leader (sad), communicate more with everyone instead of writing code every day, it is good to learn how to speak.

    See the numbers and get money more closely

    In the past, the position was not core enough, and development was just about development. This year, we can have more exposure to factors such as data, people, and money.

    Confidence

    In fact, I have been feeling "low self-esteem" in recent years. Part of it is that there are too many geniuses in the world, and it's a pity that I am not one of them. The other part is because I am not the protagonist when doing many things. In the end, it was because many things were not done well.

    But actually this year, when I went to dinner with my friends, everyone would basically say something to me when we were deep in conversation. The original words were probably: "You must think you are very smart (this is purely mocking me), but you don't feel it yourself."

    That’s smart! Maybe I am also a hard-working genius! I am more of a listener~

    Make money

    I haven't made any money. What I made in 24 years is not even a quarter of what I made in 23 years. Life is hard. There is no way. Maybe this is a strange kind of "adventure" and "gamble". People have to pay the "price" for their choices.

    Some of this year’s toys

    😔, every year, there are a lot of small toys that I want to make as a side business, and then they always fail halfway through. The main reason for last year’s failure was that I didn’t know how to do it, what I wanted to do was too big, and the accumulation of technology was still not enough. There are also a lot of useless little toys this year, but the completion level is above 80%, which can be regarded as readable.

    LinkAI

    LinkAI, this little toy took 5 days to complete. The reason was that the project had to write a B station to pass the payment review due to payment review. Then we took advantage of this opportunity to implement the smallest complete commercial mvp project.

    LinkAI

    Blog

    This year I was pushed by a group of friends again, and I was very unhappy about being censored and asked to delete some pictures, so I decided to write one. After writing it, I wondered whether it should only be written in Chinese or bilingual, so I finally tried `Ai Translate gave up. There were too many grammar and writing styles to improve (my articles tended to be stream-of-consciousness articles), and I felt exhausted. In the end, writing the shelf, setting up CDN, and deploying (the blog and pictures can be accessed with or without ladders) totaled a day and a half. Then, it took more than 2 days to process the previous picture CDN and articles, and I still haven't finished them yet.

    Felix-Blog

    Mandarin Treasures

    Mandarin Treasures, my daughter-in-law wanted to sell some intangible cultural heritage crafts overseas. She built an official website in five minutes, but it was of no use. She just thought about it and I was fooled~.

    Mandarin Treasures

    Cloak Station

    Cloak Station, because Google traffic was audited, then I made a cloak (traffic distribution, through IP, headers and various information, to determine whether it is audited by Google or other places. If it is audited, it will stay on this site, if not, it will jump to the main site). It's useless now.

    clock

    Fun things and good stuff!

    Some interesting things happened in 2024.

    Mingsu

    My daughter-in-law went on a trip~ Then she opened several famous hotels in various scenic spots in Chongqing, the seaside of Sanya in Hainan, Dianchi Lake in Yunnan, and Dameisha in Guangzhou? ? ? There are too many pictures, so I’ll just put a few.

    Mingsu

    Mingsu

    Mingsu

    Mingsu

    Mingsu

    Mingsu

    Mingsu

    Mingsu

    Good stuff

    Didn’t I say before that I made a set of pictures and posted one?

    dianche

    End

    Ah! I hope everyone can make a lot of money in 2025!

    Comments

    Join the conversation

    0 comments
    Sign in to comment

    No comments yet. Be the first to add one.