Review of 2024

Translated from Simplified Chinese by AI.Read the original

A lot happened in 2024, so I'll write a running diary of it this year too.

Overview

Thanks to the GPA I scraped together by cramming before exams in the first semester of sophomore year, I applied for an attendance exemption in the second semester and got out of most of my courses — being able to sleep until I naturally wake up every day is so good (≧∇≦)ノ

When I wasn't in class I was going hard on my own hobby projects. I have a habit of tracking my coding time with WakaTime; according to the WakaTime 2024 annual report, I coded 702h in total (not counting coding time at my internship, because I forgot to install it 233333), and on my best day I coded for 12h..

WakaTime Code Insights
WakaTime Code Insights

In my 2023 review I mentioned I was working on "a Whisper wrapper App similar to chidiwilliams/buzz". Since it's modeled on buzz, I called it "purr". It's the hobby project I put the most time into this year — 206 hours. The main features are done now, though there are still some features and details left to finish. Once it's done I'll write a post introducing it, and maybe it'll even become my graduation project?

Taken 2024/3/11, a rare blue sky in Chengdu
Taken 2024/3/11, a rare blue sky in Chengdu

April to May: the lab wrote to the vice dean requesting machines to host the lab's projects. In exchange, the college gave the lab the task of taking part in a collaboration project between the school and some car company — most of the lab had to be pulled in to work with the company's mentors on the corporate topic, and then enter the competition.

Honestly I'm not interested in this kind of PPT competition at all, but I'd do anything for those lab machines.jpg

Our group's topic was "reliable transfer protocol for large files". I didn't have many ideas, because sequential chunked file transfer over TCP or HTTP is already good enough — it's an approach thoroughly validated by the industry — but the company side wouldn't accept it and insisted on coming up with a brand-new scheme.

No way around it, so I ended up cobbling together QUIC File Transport, a messy pile of stuff built on QUIC and RaptorQ coding.. In the end we successfully proved that sequential chunking plus retransmission on packet loss is the best solution (flees)

I don't even believe it myself
I don't even believe it myself

To meet the topic's flashy requirements, besides using QUIC Streams (the reliable channel) to exchange transfer info, this protocol also uses QUIC Raw Datagrams (basically UDP) as an unreliable channel to transfer file chunks, generates redundancy with RaptorQ to cut down on retransmissions, and implements custom congestion control (meaning: just blast everything at a constant rate 23333). I chose to write it in Rust + Tokio and slapped together a UI with Tauri. It sounds like a mess, but it was enough to bullshit the old judges..

In fact it took ages of testing to get this result..
In fact it took ages of testing to get this result..

The end result was a school-level first prize and provincial-level third and second prizes in a couple of programming competitions.. The takeaway is that I got to see the lower bound of the old judges' competence. Overall verdict: useless, but at least it traded for a dedicated machine for the lab (。^▽^)

Yes, just a single PC
Yes, just a single PC

Right after that came the school's Engineering Practice 2, whose topic was the enterprise cloud drive system that's been passed down for several cohorts. In the end I teamed up with friends from the lab and we finished entbase in a bit over two weeks; slicing mockups and drawing forms the traditional way was quite the experience. So when it came time to pick courses for Engineering Practice 3 & 4 at the end of the year, I chose the AI track, hoping to slice a few less mockups இ௰இ

The UI looks like this, I think my taste has always been pretty on point 🥰
The UI looks like this, I think my taste has always been pretty on point 🥰

In June I competed in the national round of the Lanqiao Cup Web track and got a national first prize. Since I placed in the top few, seeing myself scroll by on the leaderboard during the awards livestream made me pretty happy... The only downer was that the school cut the prize money by more than half.

Rarely for me, I wrote a review on Zhihu — I'll just paste it here.

Web track national first prize here, answering timidly

First, this was my first time entering the Lanqiao Cup, and I'm already very happy with this result — it makes up for being blasted by the exam site's air conditioning for 4 hours straight

A quick complaint about a certain CDUT exam site: for the first hour the proctors were extremely, extremely loud; second, the machines were some kind of remote-controlled cloud system, and the latency and fully-destroyed image quality were really uncomfortable; the environment was installed at the minimum versions Lanqiao requires, VS Code had no syntax hints for new ES2020 features, Node 14 really is hard to keep a straight face about, and on the webpack question I couldn't even use matchAll

The number of questions was quite a bit larger than the 14th edition — the PDF came to 51 pages (36 for the 14th). Difficulty-wise it felt a bit harder than the provincial round? Still, it mostly felt like a test of how fluent you are; anyway I didn't have time to finish, did a bit more than eight questions I think? Estimated score around 110-120

The Vue question still uses a CDN import, with no TypeScript you're completely in the dark, I really hope next edition they add something a bit more engineering-ish, but I doubt that's happening

And because I've been writing React for most of the past half year, on the last part of question nine I genuinely forgot how to emit in Vue — I was so anxious, lost 10 points (⁠´⁠;⁠ω⁠;⁠`⁠)

Wrote this while I couldn't sleep at night, that's about it

zhihu.com/question/657809583/answer/3518246386

At the end of June I put together an AIO server and left it at home; it's a lot of fun to play with, I messed around with it a lot, probably the most worthwhile purchase of 2024.

In July I went home for the holidays and cobbled together a unified authentication system for the lab based on the Cloudflare Serverless ecosystem, built on TOTP, and figured out a stateless email verification code scheme

Late July I went to the hospital and had a mole removed from the sole of my foot; recovery took several weeks..

Late August, I rescaped the planted tank yet again — this time a peninsula-style low-tech tank mainly of Iron Crown ferns and Argentine swords (maybe it counts as ADA style?). I recorded some videos and posted them to Bilibili~

September, back to school: I was running around getting the attendance exemption processed while polishing my resume and looking for an internship. Actually I'd started drafting my resume back in April/May 2024, but I always felt I wasn't prepared enough and never sent it out. In September I still felt unprepared, but friends around me were already applying and getting internship offers, which put a fair bit of pressure on me. In the end, thanks to Zongzi's referral, I gritted my teeth and sent out my first resume (;´д`)ゞ

Mid-September, a checkup unexpectedly found elevated cortisol.. I did a dexamethasone suppression test and in the end there was nothing wrong, probably just a bit of anxiety

Early October — unexpectedly, the offer came through smoothly. To me it felt like the first bit of recognition from the industry. I'm very grateful to the interviewers; even thinking back on it now I'm really, really happy~

After National Day I went to Beijing. My parents stayed in Beijing for a few days too, and we looked around for an apartment together; the old rundown places at several thousand yuan a month were really hard to describe. But in the end we found a place with a reasonable price and a private bathroom (though all things considered it still comes to nearly 4000 a month)

On the way to Beijing, an extremely blue sky.

That's also the deepest impression Beijing left on me — most of the time the sky is crystal clear

Early November, I hadn't been there long when the Operating Systems course midterm came up, so I hurriedly flew back to school. Because this course's midterm is held fairly late, in the end the school's midterm and final exam schedules ended up miraculously back-to-back, and with one exam a week, I worked remotely for two months (I saw some intern friends who had to quit just to take exams — I'm so lucky my mentor approved it), and of course I paid two months' rent for nothing

Sunset, going home always makes me especially happy
Sunset, going home always makes me especially happy

November and December were basically a painful exam season of one exam per week; the results turned out okay in the end? The pity is that two coursework-assessed courses only gave me a pass.. Which means I can't get the attendance exemption next semester, but luckily there's basically no coursework left anyway.

After exams in January 2025 I came to Beijing again to continue my in-person internship. I hadn't closed the window when I left, and when I came back there was a thick layer of dust in the room; it took me ages to clean up 😭

Projects

I started quite a few new (abandoned) projects this year too

  • purr

    A Whisper-based subtitle generation & editing tool

  • QUIC File Transport

    A file transfer protocol based on QUIC and RaptorQ, purely for competition purposes

  • CD Shelf

    My online CD shelf, meant to replace the version I wrote in Vue before

  • wallpaper-rs

    A little tool that periodically pulls Unsplash featured images and sets them as the Windows lock screen

  • Forward Wall

    A very simple auth server for Traefik's ForwardAuth middleware

  • entbase-fe

    The cloud drive frontend for Engineering Practice 2

  • Lottery

    A WebSocket-based web app for issuing numbers & drawing raffle winners online, written for the lab's info session raffle

  • Tsunami V3

    Porting the parameters of the modified BBR module called tsunami, which circulates online, to BBRv3, with a DKMS install method

There are also some embarrassing projects I started and then never touched, which I won't list here

Future

// Coming soon...