This issue is a record of and reflection on life in October 2023.
Ten Years of Programming
Time flies. Looking back, it’s been nearly ten years since I first got into programming in any systematic way. This monthly is a chance to trace that journey.
Growing up with an internet café at home, I was always comfortable around computers and games. But I never imagined I’d end up programming for a living. In 2007, my middle school ran an olympiad class on Pascal and I dropped out halfway. In 2013, I enrolled in Educational Technology after the college entrance exam — a science major in an education school with a passing connection to computers. If things had followed the expected path, I probably would have used my teaching credential to go back to a primary or secondary school in my hometown.
But everything changed in early 2014.
2014: First Contact
That year began with a near-death experience that changed me profoundly. Every day after felt like living toward death, deliberately. As Existential Psychotherapy describes the effect of confronting mortality: “The awareness of death moves us away from trivial concerns and gives life a new depth, intensity, and perspective.” After that, my view of life shifted fundamentally — I wanted to leave something behind in the world. I wasn’t willing to follow the path already laid out for me. So I rearranged my priorities and started searching for direction. Around that time I took a VB course that genuinely hooked me, and that’s how I walked through the door into programming.
I remember staying up until one or two in the morning every night building a text RPG in VB, and still not wanting to stop.
That RPG — a game called Name Battle — went through 6 complete versions:
The excitement I felt during those late nights building that game hasn’t faded at all in memory. That, I think, was pure love for the craft.
Because of strong performance in the course, my teacher pulled me into a project team. I went on to teach myself Java Swing and databases, building gamified courseware and management platforms.
During the VB and Java Swing period I was directly connecting my GUIs to databases (I know, I know). To bridge that gap — and because I wanted to build networked apps — I also learned ASP.Net and JSP. At the time, every API I built got the full Struts + Hibernate + Spring treatment. I felt invincible. GUI, JSP, Access — clearly I had everything under control.
Then, like every developer, I bought a domain and got it registered (ursb.me, which I still use today), modded a WordPress theme, and deployed a blog to shared hosting. (Shared hosting was a thing of the era — just a directory on a server that you could do whatever you wanted with.)
This is roughly what the blog looked like back then (3G internet, iPhone 5):
In my sophomore year, the school opened some secondary majors and I applied to minor in Computer Science. I spent the day in my primary program’s classes and the evening in CS classes that didn’t end until after nine. I’d get back to the dorms and tinker until late. Exhausting, but I look back on it as one of the most fulfilling periods of my life — and somehow I kept ending up at the top of the class.

2015: Web Frontend
In 2015 I got into HTML, CSS, and JavaScript — what we now call web frontend. When I first touched H5, I was still using Dreamweaver… then I discovered Sublime and never looked back.
While learning JavaScript I built a WeChat chat interface simulator using Canvas, and the project shot past 100 stars quickly.
After that I wrote a Canvas tutorial, which also picked up a solid following:
Printing it out and teaching classmates in person was deeply satisfying:
Early that year I teamed up with classmates for my first Hackathon. We decided to build an Android app called AskNow. Since I didn’t know Android, I got assigned to UI design. That project introduced me to Sketch and basic mobile UI conventions, and I got curious enough about mobile development to spend a while learning Android.
Not having an Android device and always developing on the simulator got old fast. Swift had just launched less than a year earlier, so I pivoted straight to iOS, diving in at what felt like the golden age of iOS development. My desire to learn felt bottomless — I could get excited about almost anything.
That year Apple released the first Apple Watch. I was completely starry-eyed watching the launch, went to the Apple Store immediately, bought a developer account, and started building Apple Watch apps:
I feel genuinely lucky to have grown up at a time when new technologies kept emerging and I could freely learn whatever caught my interest.
2016: Infinite Possibilities
After getting comfortable with Swift, I built an app and shipped it to the App Store — the sense of accomplishment was massive:
Then I built FeedMe — a virtual pet plus English learning app for Apple Watch:
This year I also got into R and Python, did some web scraping and data analysis projects, and fell in love with Kaggle. I ended up not going further in that direction, figuring at the time it wasn’t directly useful for building software. (Funnily enough, early this year I ended up doing technical attribution analysis on a phenomenon from abroad and actually used it — I could barely believe it.)
I entered a lot of competitions that year. One involved building a transport robot for an electrical engineering project. I knew nothing about microcontrollers going in, so I basically moved into the lab for the duration to cram the knowledge and keep up with the project. The lab center gave me my own dedicated room — tired but happy.
After finishing that project I realized I’d become something like a full-stack engineer in the broadest sense: UI design, web, backend, client apps, hardware. I was interested in all of it.
Around the same time, cross-platform frameworks were starting to make noise. I immediately picked up Ionic and Cordova and banged out a few apps for competitions. My energy felt unlimited.
Most of the competitions went well — a good haul overall.
PS. During any downtime that year I was still tinkering with my blog:
(It was just Hexo, but I managed to make it bloated and unwieldy.)
2017: Frontend Everything
Speaking of the blog — this was the last time I touched it. I wanted simplicity, so I redesigned it into what it is now (me.ursb.me). I haven’t touched the design since. A blog should be about the quality of the writing.
During Chinese New Year 2017, I ended up in the hospital again. I remember WeChat launched Mini Programs while I was there, and I sat in bed coding one up from the official docs:
(Looking back, I can’t believe I was coding with my non-dominant hand.)
That year I learned Vue and built a community:
My undergraduate thesis was a recommendation system.
I bought a label printer and a Raspberry Pi and made a fun little toy:
I entered many competitions that year, formed an online team called ZeroMates, and used React Native + Express to build and ship multiple apps to the App Store — including one picture app, Twin, and Four Seasons:
I also took on a freelance contract for a gym chain — built a complete system covering course sales, booking, scheduling, check-ins, and workout tracking. Good pocket money.
Year-end reflection: Goodbye, My College Years.
2018: Internship
The first half of the year was mostly a rewrite of Twin 2.0, which eventually won second place in a Mini Program competition.
I started applying for internships in March. With my resume and decent algorithmic interview prep, I landed at Tencent as a web frontend intern. I’ve been on the same team ever since.
My badge photo from those days (I was so young…):
Year-end reflection: 2018: Settling In.
2019: WWDC and Full-Time Work
That year I finished my master’s just in time for the two-year program cutoff. Before graduation I received a WWDC Scholarship ticket and accommodation, and Zhejiang University generously covered flights for students from my school — a free trip to the US.
I met a lot of impressive people on that trip and came back with a clearer sense that there’s always further to go.
I joined full-time after graduating. The first few months the team was still on jQuery, but by year-end we’d adopted React. Beyond React-based activity pages, I also built a Mini Program that year, and a standalone app using Hippy.
Year-end reflection: 2019: Walking and Stopping.
2020: Flutter
Cross-platform was exploding that year. I was lucky enough to spend it on Flutter — leading the development of a Flutter hybrid framework within the team, alongside some iOS work. I gave several internal and external technical talks based on the project and earned two five-star performance ratings. It was the first time I’d hit five stars since graduating, and the boost it gave me was real.
This project reignited my interest in native development and the desire to dig deep into lower-level technology. From here, my technical breadth started narrowing — and the depth started growing.
Year-end reflection: 2020: Chasing the Spark.
2021: Platforms and the Metaverse
Middle-platform architectures were the big trend that year; we built one. Then at the end of the year the metaverse hype hit, and we pivoted to 3D rendering.
A busy year. Mostly being pushed along, not much time to consolidate.
That year I went from T6 to T9.
Year-end reflection: 2021: Crossing on My Own.
2022: Engineering
Promoted to T10 early in the year.
Focused on 3D rendering and web engineering, but growth felt slow. Looking back, growth rate = knowledge gained ÷ time, and for these past two years it was pretty low. So I pushed for a breakthrough — open source projects in my spare time, reading browser engine source, writing articles. Not much hands-on practice, but the knowledge base expanded considerably.
Year-end reflection: 2022: Peace and Joy.
2023: iOS and Game Rendering
This year has been mostly game rendering — iOS container work and C++ cross-platform development, with some TypeScript and Android debugging mixed in.
Ten years. That’s roughly it.
To close with some thoughts on learning to program: from everything above you can probably tell that passion is the core. The other essentials are project-based learning — whatever you pick up, build something with it — and a third thing the story above doesn’t quite capture: consolidation.
- Learning: official docs are usually enough.
- Applying: building toward a project deepens understanding and gives you real satisfaction when something ships.
- Consolidating: keep development notes, write about what you learn, share it on a blog.
While learning, beyond taking notes:
Deep dives into specific problems benefit from drawing out the core structure:

A sketch can be photographed for the record, and the whiteboard-style sprawl is better for thinking than linear notes.
And finally, nothing beats consistently writing technical blog posts as a form of output.
I hope I can walk this road I love for another ten years that are just as surprising.
🌺 Snippets from Life
A few moments from October.
🚗 National Day Road Trip
Route: Shenzhen → Shunde → Guangzhou → Qingyuan → Yingde → Conghua → Guangzhou → Shenzhen
Verdict: Qingyuan river rafting is fantastic.
🧟♀️ VR Zombie Shooting
Met up with high school friends in Guangzhou at the end of the break. Four of us played VR zombie shooting — surprisingly great fun.
And grabbed a pile of stuffed animals from the claw machines:
🎧 AirPods Pro
My old earphones went through the washing machine and have been crackling ever since, but I squeezed another two years out of them. Finally replaced them with the new USB-C AirPods:
🚗 Porsche
Went to test-drive a 718 Boxster with a well-off friend. Came away deciding I like my Mini better.
🏄🏻 Team Building
Department outing to an island near Huizhou. My first time on a sailboat.

🏃🏻♀️ Weight
I’ve been around 55 kg my whole life, never over 60. Lately it’s been creeping up — might actually crack 65 for the first time.
🐱 Mittens
Mittens has been absolutely bullying this toy dog lately — hiding it every night, only for Mittens to dig it out every morning and give it a good beating:

🎬 Books, Films, and More
What I’ve been reading, watching, and playing this month:
- Currently reading: Psychology | Existential Psychotherapy | ★★★★★
- Currently watching: US series | Loki Season 2 | ★★★★☆
- Currently watching: Anime | Jujutsu Kaisen Season 2 | ★★★★★
- Currently watching: Anime | Spy × Family Season 2 | ★★★★★
- Currently watching: Documentary | Planet Earth III | ★★★★★
- Rewatched: Drama | The Silence | ★★★★★
- Finished: Drama | Blossoms Shanghai | ★★★★☆
- Finished: Film | Be a Hero | ★★★★☆
- Finished: Film | Anatomy of a Fall | ★★★★☆
- Finished: Film | Gee, Gee Man | ★★★★☆