
Projects
GitHub Contributions
1667 commits in last year
As the home page says, I label myself as a full-stack developer. But I am not actually very confident in that label, so I added a small "questionable" note after it. Because - I know my ability and experience are nowhere near enough to support the word "full-stack." I am just a half-bucket.
Development Path
The language I write the most is TypeScript. I have also used Python, Java, and even Rust, but more than 90% of that was written by Agents - only to finish specific one-off tasks like class projects or competition work, so I do not count them as languages I truly master.
My first project was actually front end. That was the first development area I touched, which I also mentioned on my GitHub page, around 2022.
As for back end, I only knew some basic concepts then and wrote a few simple demos. In 2023 I played around with PHP and Node.js. It was not until 2024 that I wrote my first TS project in Nest, and I basically used any all over the place because typing everything was annoying, haha.
It was also only from 2024 that I started touching areas outside front end, such as DevOps. In 2025, when I helped a teacher with a RuoYi project, I tried Java's Spring Boot for the first time. The biggest impression I got was that Java is really bloated...
Back to software. I actually got into site building and operations relatively early, around 2020. Back then I built a school-related site with Typecho and WordPress, and that was basically my first real door into computing.
That also meant that learning Web stuff later did not feel too stressful. I probably do not have many cases of someone going from site building backwards into Web, but that was me. Anyway, if I had to name the language I know best, maybe it would be CSS?
Because when I was practicing front end in early 2023, LLMs basically could not independently write front end yet... CSS had to be adjusted entirely by hand. Even now, in my opinion, Agents still cannot generate a UI that feels genuinely "beautiful" from one sentence.
Still, LLMs really are moving at an incredible pace. They change almost every month. About three months after GPT-3.5 was released, I got into GPT around January 2023. I first used it to handle a VB final exam. What shocked me was that GPT-3.5's answers could actually run. It was completely unbelievable. At the time, my impression of AI was still stuck at things like YOLO and XiaoAi, and I had no idea what an LLM even was.
After that I found a shared GPT Plus account and kept it for about two years. Starting in 2025, I began paying for my own account, and I still use it now. But even though I was shocked, I had no sense of crisis at all back then. I treated AI as a tutor for questions, and once a project got too complex, it would still stall.
In fact, I had no real sense of crisis until the first half of 2025. It was not until the rise of Vibe Coding and the way Claude 4 and GPT 5 improved at coding in the second half of the year that things really went beyond what I expected.
Still, I use what I need. Right now I pay for GPT Plus and Google AI One. GPT's divergent thinking and Gemini Pro both help my studies a lot. When I was studying advanced math and calculus, Gemini solved a lot of problems for me. NotebookLM, bundled with Google AI One, also greatly improved the efficiency of studying and review. The tools I use most often for Agent Coding are Codex and GitHub Copilot.
From the release of GPT-3.5 to now, only three years have passed... though three years is not exactly short. The GPT-4 and o3 that once dominated the scene have now been left far behind by newer models. Lately I really have been wondering whether I should switch industries. I may not even have gotten in before I am out of work.
I used to fantasize about switching to embedded systems and hardware development, and even until the end of last month, I was still thinking about it. It really feels like jumping from one pit into another, so it is probably just fantasy. But still, isn't it cool to directly touch your own work in the real world?
Milestones
There are not many projects that count as milestones for me. I can probably count them on one hand, so I will not list small tools or projects that did not matter much.
- The Wiki and portal site for my own Minecraft server (2022). Back then, my MC server needed MediaWiki maintenance, and as the server owner I designed many versions of the homepage UI. In the process, I got exposed to HTML, CSS, JavaScript, and PHP (MediaWiki).
Two years later, in July 2024, in order to design the server portal site, I touched Vue for the first time (the first version was Vue 2). I used Vue to make the first standard front-end project in my front-end learning history, and it was the first one based on a package manager. The project never went live, though, because the features were a bit messy and I kept thinking I would fix it later, but that later kept getting postponed.
Anyway, working on my own MC server also forced me to learn and touch a lot of knowledge, including front end and some site operations and site-building know-how. - The exam practice system I wrote for my class and myself during vocational school (2024), a decoupled web project based on Nest + Vue + TS. The first version was actually a traditional JavaScript + PHP simple back end. The Nest stack was only chosen during the 2024 summer refactor.
The site kept getting updated until mid-2025 (the next class of juniors was also supposed to use it, but there would be no next class, so updates stopped), and it is now publicly archived.
But this was the first proper back-end project I wrote with a serious back-end framework. I also went through the whole process from writing to deployment to testing to user feedback (classmates and juniors). Looking back now, it is also a bit of a black mark. - The CSS override I wrote for Wiki.js (2024), a pure SCSS project and the one with the most GitHub stars. There is not much worth saying technically; it is here as a keepsake. Maybe this is also my best-known project: quite a lot of coders added me because of it, and some came with questions about Wiki.js or MediaWiki deployment. Maybe you are reading this page because of it too.
- My own intro site (2024), which is this site. It was the project I wrote after first getting into the Nuxt full-stack framework, though there is nothing especially flashy beyond that. Well... actually, there is: my ultra-genius UI design. Seriously. I am genuinely quite satisfied with it. Do not say this was written by Agents; Agents only handle the content I have already decided on. Every bit of UI on this site was tuned by me little by little, so do not insult me. If you want to attack me, you can just call me a fool, but please do not trash my project. Thanks.
- My Minecraft server's information aggregation site (2025), a decoupled web project based on Nest + Vue + TS. It was the first project where I configured GitHub Actions deployment to the source site and set up EdgeOne and the rules around it. The feeling of moving from understanding to actually using it is completely different. During that period, I also first pulled off things I had never even thought about before through DNS resolution, Cloudflare optimization, and other tricks. This might be my first project that counts as both "big" and "messy," and it is still under development. The most headache-inducing part right now is finding a workable Agent Coding pattern, and I am still exploring it...
In summary, I may have roughly walked through the technical path from the birth of the Web to the present. I really did write projects that only switched between HTML files and did not rely on any newer technical standards such as ES6. Writing like that was extremely painful.
...That approach did help me understand the big picture, but from a job-hunting perspective my learning speed is still a bit slow, and there is not much time left until graduation. In 2025 I was busy doing school work almost the whole year, following teachers on a few projects, and the results were not ideal. Now in 2026, even though the transfer-to-undergraduate process is over, most of the later plan is still exam prep, exam prep, exam prep.
Rambling
The more projects I build, the more pessimistic I become. I used to assume, almost subconsciously, that once I mastered basic syntax, most hard problems would solve themselves. Reality says otherwise. "Mastering knowledge" is not just memorizing API calling rules, or fluently reciting advanced TypeScript type gymnastics and design patterns.
I genuinely used to believe (subconsciously, and only after thinking carefully did I realize how many flaws were in that belief) that if I understood Vue reactivity or the Node.js event loop, I could bulldoze everything in engineering. I really did buy those courses. I also naively believed that for algorithms and data structures, knowing rough principles was enough. In social settings, that knowledge could be used as talking points to show technical ability anyway.
But once I got into real scenarios, like building a full front-end/back-end separated architecture from scratch, handling CI/CD workflows, or even just migrating a project's storage layer from SQLite to PostgreSQL during refactoring, I slowly realized syntax is only a wrench. The core skill is control over the whole system. A fancier term would be "engineering intuition" or "awareness of system boundaries."
This fixed way of thinking even extended to language learning. I used to think grammar and vocabulary were the true essence of learning English. But exam scores did not buy that narrative. Without summarizing my own problems, writing down every thought process during reading, and debugging, there is simply no way to identify issues.
I also spent a long time ruminating over unstable reading accuracy in CET-4/CET-6, wondering whether the problem was unknown words or careless reading. None of those reasons were convincing. They were far too subjective.
Only when I studied advanced math and calculus did I realize I need to clarify every condition and carefully analyze possible cases. At its core, this is not very different from project development. People do instinctively beautify and hide their own behavior; when problems appear, we often just hand-wave them away. And even if you know the solution for English learning, it still sounds exhausting. For example, one of the best ways to improve writing is back translation practice. But does that waste too much time? What if there is no visible output?
The world may be a giant chaotic system. Learning itself is tiring. It requires sustained investment and huge energy. But whether you can do it, only you truly know.
Sadly, I only realized recently that learning must produce output (and re-organizing everything from scratch in Obsidian is tiring too). If I do not review, recall, and summarize by myself, how could I improve quickly? My so-called "project experience" may just be unconscious accumulation from years of running websites. When I later revisit related knowledge points, understanding only feels like a natural consequence.
But learning purely through practice without summarizing is far too slow. If I want to improve, I have to act. The deeper I go, the more I feel how small I am. In reality, I am just someone who still asks an LLM even for i18n, and Nuxt build and HMR update issues can still cost me a lot of time. Every stage and detail needs attention, even though today's development ecosystem is already highly abstracted.
Even though my tag says DevOps, as everyone knows, the DevOps domain is extremely complex. I might spend a whole day and only finish setting up one workflow. If anything unexpected happens in the middle, it can take even longer to handle. I know this is an unavoidable part of learning.
When I label myself as DevOps, I do feel a strong sense of guilt, because I am labeling myself. The same goes for Web and TypeScript. In a way, those labels are also one sign of my insecurity. Engineer is indeed a word loaded with a strong sense of responsibility.
Sigh. Handling details and boundary conditions elegantly is hard. From this angle, I am just a humble code stitcher. From another angle, are humans not large language models too?
Technical Breadth
Anyway, I got sidetracked. I have also touched a few languages and fields outside TypeScript and Web. After all, the first language I studied systematically was C (2021), though I do not know these areas deeply. I will just list a few languages I have used below.
- I have written some Minecraft Mods and Plugins in Java (with Agent assistance).
- I wrote a Web project for a competition in Rust (with Agent assistance), and later it took third place nationally.
- I have written some scripts in Python for Excel, automatic sign-in, and ML training (partly with Agent assistance). In addition, because Python was part of the transfer-undergraduate professional courses, I reviewed the basic syntax for one or two months.
- Lately I have been working on my ESP32S3 graduation project.
If I were to give a simple proficiency table, it would look like this:
- T0 (most familiar): HTML, CSS, TypeScript (including JavaScript).
- T1 (fairly familiar): Java, Python.
- T2 (looks familiar): Android development (I took related courses for a while and completed several major assignments), Rust, C, C++.
On GitHub, my largest share is probably Vue and TypeScript. You can follow my GitHub Contributions. Usually I have commits on four or five days in a week. Sometimes after grinding all day, I open my profile and just seeing a wall of green dots already feels great, haha.
Updated 4/10/2026, 13:36
2411 words / 14 min