It's been a long time since my last post. As I mentioned before, in this era of AI, I've felt it hard to write anything truly valuable or irreplaceable anymore. When readers actually run into a problem, asking an AI directly is probably the better option than searching on Google and eventually winding up at my content.
But lately that feeling has started to shift a bit — maybe my content could get picked up by AI and included as reference links in AI answers? When the AI doesn't have enough context, that could also partly speed things up for readers.
Also, in this era where everything moves so fast, keeping a record of your own life as a witness to the journey carries real weight for a person. Lately I've been flipping through thoughts and posts I published earlier, and if I hadn't written them down, they might have faded from my memory entirely. Thinking about it, that would be a real shame.
So let me just record and share what I've seen and experienced over the past month or two / past few months.
My Experience Using Codex
As a student whose major has nothing to do with computer science or software — and who hasn't put much work into that area either — I have some familiarity with developer tools, but I genuinely can't do anything that demands solid coding fundamentals. Codex, however, has been a huge help.
Let me start with a few tips from my experience using Codex:
Set up a Git repository before starting a project, and commit after every change. That way you can roll the code back to any previous state. Without a repo, just forking the conversation in Codex won't let you revert anything.
Make good use of plan mode — this is really important. Read the plan it gives you carefully, and fix anything you're unhappy with right away, until it fully meets your needs.
Let me use the website update as an example:
Recently I used Codex to update my website. Since I hadn't been following mix-space and Shiro for ages, I only now discovered that mix-space had gone from v11 to v13 — even the database has changed. Meanwhile, innei has moved on to a new frontend, Yohaku. All in all, these fairly major changes were a real headache for someone like me who hadn't tracked the project in a long time; I ran into no small amount of trouble with both the deployment approach and the version upgrades.
First came the backend update. As usual, I went straight to using docker compose pull && docker compose up -d to upgrade — and for reasons I can't even remember, I also pulled the latest docker-compose.yml to update. But whether it was the backend or the frontend, I didn't notice the cross-version upgrade warnings at the time (or maybe I just didn't see them), so I updated the backend without completing the database migration.
I did eventually manage to get the backend up to V13 by following the docs, but I lost some data — like the homepage description in the old cloud function and the footer links. And since I hadn't backed up the V11 docker-compose.yml, having backups alone wasn't enough; I also couldn't get into the admin panel to export theme.shiro.json. So I tried writing it all over again, but then ran into another problem: the docs and the new panel had diverged considerably, and since I couldn't find where the “reference” in the docs was, what I wrote never took effect. Partly I was too lazy to rewrite it, and partly I genuinely didn't understand how to set it up, so the whole thing got postponed for a few more days.
And that wasn't all. The API routes went from v2 to v3, and later I found the WebSocket wouldn't connect either — because the WebSocket routes had changed too. Supporting the Companion feature in the new version also meant adding the corresponding routes, so the Nginx config needed updating as well. On the one hand, the docs were a bit of a mess and didn't seem to have fully kept up with the version changes; on the other hand, so many changes landed at once that I felt at a loss. I even considered exporting the site's content and switching to a lighter, more stable framework.
There was also the frontend deployment problem — the GitHub Actions provided by innei were unusable. I looked through the issues but couldn't find a particularly good solution for now, so I had to figure it all out myself.
That's when Codex stepped in.
I added my machine's public key to the server hosting the site, so I could connect via ssh without entering a password. After telling Codex the username, IP, and port, it could run commands to check the status.
Then I used plan mode, laying out all the problems I was currently facing, for example:
How to restore the cloud function's theme reference (the config item named shiro) from the backup and add it to the existing backend
WebSocket problem (at this point I still didn't know it was caused by the nginx routes)
Fix the GitHub Actions for frontend deployment
Codex suggested quite a few conflicting options, and after several rounds of revising the plan, we settled on the final one.
All the problems above were resolved two hours after I clicked the 执行 button — with no extra conversation at all.
I can honestly say that without Codex, relying only on my own energy and ability, I could never have finished this task — my website would probably still be in a dilapidated state.
After that I went ahead and set up the new Companion, fixed some outdated content, and my website went back online.
Besides that, I've used Codex for quite a few things recently, for example:
Developed a script that toggles HDR on external displays using only native macOS APIs
Developed MACDance, a tool for customizing/refreshing MAC addresses
Developed telegram-uploader, a tool for uploading content to Telegram
If I get time, I'll write separate posts introducing some of these projects.
Codex really did fill the gap in that part of my abilities, but in the end it only helped me get things done — when it comes to my own skills growing, I haven't felt any of that yet.
A New Monitoring Website
Because I didn't update it in time, a vulnerability in Nezha Panel let attackers into all my servers, and I had to reinstall every one of them — that cost me quite a bit of time. I've dropped Nezha Panel since then. I'd actually found a replacement, Komari, a long time ago, but never deployed it due to time and energy.
Recently I remembered this and decided I still need a monitoring panel. I deployed it manually without Codex, and the whole process turned out surprisingly smooth — much friendlier than deploying Nezha Panel, for example:
It deploys fine with a single domain, and adding a server is relatively simple — just run a command
In the admin panel you can easily set server expiration dates, billing info, and so on
You can set server traffic limits and traffic reset times (this one is hidden in the deployment command interface, which is a bit unfriendly)
As mentioned above, I reinstalled all my servers, including the self-hosted domain email server iRedMail — Further reading.
This kind of self-hosted email server has a few problems:
Email trustworthiness
Service stability — like getting attacked this time
Maintenance is also a headache for non-professionals
So I went looking for a new domain email service. After two rounds of back-and-forth with ChatGPT, I found that Feishu (Lark) is a good choice:
Free
Custom domain support
Works with third-party email clients
Deployment was done in under half an hour — quick and painless. If you have a similar need, I'd happily recommend it; I haven't run into any problems so far.
“New” M1 Max MacBook Pro
The quotes are because I picked this up from the secondhand market for 9600 CNY. The exact model is a 16-inch M1 Max MacBook Pro (64GB + 1TB).
My M1 MacBook Pro, which had been with me for 5 years, only had 16GB of RAM, and the daily swap usage had gotten so heavy that it seriously affected usability — I'd even trimmed my productivity apps down to only the essentials. But the memory problem was still severe: just opening Codex, Zotero, WeChat, and other everyday chat apps nearly maxed it out. For efficient studying and living, I really had no choice but to switch. And at a time when memory prices were rising — especially since Apple itself started raising prices — upgrading hardware became especially difficult.
Originally, in June, I'd pre-ordered a 16-inch MacBook Pro with an M4 Pro (48GB + 512GB) from Moorj. Unfortunately, due to the situation, the machine couldn't make it through customs, so I had to give up on it.
So my eyes turned back to the secondhand market. I'd been looking at 64GB M1 Pro MacBook Pros — maybe this model is what everyone was watching, because whether 14-inch or 16-inch, there weren't many units around, and finding one in good condition was even harder. Besides, machines in good condition really aren't cheap; even the 8000-CNY ones on Aihuishou looked mediocre to me.
The M1 Pro (10+14) version has no CPU difference from the M1 Max, and I'm not sensitive to GPU, which is why I wasn't keen on the M1 Max to begin with. After two weeks of watching M1 Pros without seeing a single one that fit the bill — it seemed like only resellers were playing in that lane — I reluctantly started looking at M1 Max as well.
There were clearly far more M1 Max machines, yet ones in good condition weren't much more expensive. Almost on the second day of looking, I snagged a machine with a reasonable price and decent condition. The seller was in Suzhou — I placed the order that day, and the seller had it delivered to my door via a ride-hailing courier that same day. What followed was a series of inspection steps.
I won't go into the inspection details — you can basically find it all online. And since diagnostic software isn't infallible, this trade runs deep. For example, I replaced the battery in my M1 MacBook Pro myself, but the diagnostics couldn't even detect it, so I gave up on a lot of criteria that don't matter in real-world use anyway. In short, as long as it works fine for normal use, that's good enough.
The upgrade to 64GB of RAM brought a very noticeable improvement — swap usage has basically disappeared. Daily memory usage sits around 30GB, more under heavy load, which leaves plenty of headroom. As for the CPU, the M1 line's single-core performance isn't impressive anymore, and responsiveness is clearly a beat slower than the newer Apple Silicon, but it barely affects my efficiency at all. On top of that, multi-core performance is nearly double my old M1, so the upgrade felt very tangible to me.
New iPhone 17 Pro Max
In May I switched from the 13 Pro to the 17 Pro Max — it's definitely on the heavy side. This is my first Pro Max, and I'd already braced myself for the weight, so beyond that it was almost all pleasant surprises; the experience has been great.
Same logic as changing my computer: for studying, it's noticeably more efficient, and for daily life, a lot more convenient.
Space Launcher
This is actually a small side story from the computer switch.
Even though Space Launcher had long since updated to 2.x and even 3.x, I'd always stayed on 1.x, because I'm used to setting the post-press delay to 0, and that setting always ran into weird issues in the new versions.
During this reinstall, I found that the 1.x version could no longer be downloaded. Forced to try the new version, I found the problem was still there, so there was nothing to do but email the developer asking for the old version.
After a few emails back and forth, the developer quickly confirmed the new version did have a problem, and it was fixed in the next minor release. So I happily switched to the new version.
What touched me most was a line at the end of the developer's email:
Space Launcher 作者邮件
Space Launcher is, in my view, a genuinely great piece of software — I use it constantly, the experience is excellent, and it's remained free in trial mode forever, and even the one-time purchase price is affordable.
While digging through my emails, I realized I'd actually paid for it back in 2022, but I had absolutely no memory of it, so for all these years I never activated the license and stayed on the trial version the whole time.
I'd recommend every macOS user give this app a try — it's truly excellent, otherwise I wouldn't have used it heavily for so long. It's the best-value software I've ever bought, bar none.
Unfortunately, I've recommended it a few times on V2EX, but people don't seem to rate it highly.
Outro
I'd planned to put some travel notes from 2026 here, but the post was already getting way too long, and I haven't sorted through the photos yet either.
That's all for now — good to be back.
Loading...
Loading...
Loading...
Loading...
Loading...
The author shares an update: after rethinking the meaning of writing in the AI era, he has decided to keep recording life. Thanks to Codex, he successfully upgraded his website (mix-space from V11 to V13), fixed various issues, and completed several projects, despite not being a professional. He ditched Nezha Panel due to its vulnerabilities and switched to Komari for monitoring. After his self-hosted email was attacked, he moved to Feishu's domain email. A used M1 Max MacBook Pro (64GB RAM) and an iPhone 17 Pro Max have made a noticeable difference in his productivity. Finally, he recommends Space Launcher and reveals that he originally intended to write travel notes.
Recent Updates: Codex, New Devices, and Life
Intro
It's been a long time since my last post. As I mentioned before, in this era of AI, I've felt it hard to write anything truly valuable or irreplaceable anymore. When readers actually run into a problem, asking an AI directly is probably the better option than searching on Google and eventually winding up at my content.
But lately that feeling has started to shift a bit — maybe my content could get picked up by AI and included as reference links in AI answers? When the AI doesn't have enough context, that could also partly speed things up for readers.
Also, in this era where everything moves so fast, keeping a record of your own life as a witness to the journey carries real weight for a person. Lately I've been flipping through thoughts and posts I published earlier, and if I hadn't written them down, they might have faded from my memory entirely. Thinking about it, that would be a real shame.
So let me just record and share what I've seen and experienced over the past month or two / past few months.
My Experience Using Codex
As a student whose major has nothing to do with computer science or software — and who hasn't put much work into that area either — I have some familiarity with developer tools, but I genuinely can't do anything that demands solid coding fundamentals. Codex, however, has been a huge help.
Let me start with a few tips from my experience using Codex:
Let me use the website update as an example:
Recently I used Codex to update my website. Since I hadn't been following mix-space and Shiro for ages, I only now discovered that mix-space had gone from v11 to v13 — even the database has changed. Meanwhile, innei has moved on to a new frontend, Yohaku. All in all, these fairly major changes were a real headache for someone like me who hadn't tracked the project in a long time; I ran into no small amount of trouble with both the deployment approach and the version upgrades.
First came the backend update. As usual, I went straight to using docker compose pull && docker compose up -d to upgrade — and for reasons I can't even remember, I also pulled the latest docker-compose.yml to update. But whether it was the backend or the frontend, I didn't notice the cross-version upgrade warnings at the time (or maybe I just didn't see them), so I updated the backend without completing the database migration.
I did eventually manage to get the backend up to V13 by following the docs, but I lost some data — like the homepage description in the old cloud function and the footer links. And since I hadn't backed up the V11 docker-compose.yml, having backups alone wasn't enough; I also couldn't get into the admin panel to export theme.shiro.json. So I tried writing it all over again, but then ran into another problem: the docs and the new panel had diverged considerably, and since I couldn't find where the “reference” in the docs was, what I wrote never took effect. Partly I was too lazy to rewrite it, and partly I genuinely didn't understand how to set it up, so the whole thing got postponed for a few more days.
And that wasn't all. The API routes went from v2 to v3, and later I found the WebSocket wouldn't connect either — because the WebSocket routes had changed too. Supporting the Companion feature in the new version also meant adding the corresponding routes, so the Nginx config needed updating as well. On the one hand, the docs were a bit of a mess and didn't seem to have fully kept up with the version changes; on the other hand, so many changes landed at once that I felt at a loss. I even considered exporting the site's content and switching to a lighter, more stable framework.
There was also the frontend deployment problem — the GitHub Actions provided by innei were unusable. I looked through the issues but couldn't find a particularly good solution for now, so I had to figure it all out myself.
That's when Codex stepped in.
I added my machine's public key to the server hosting the site, so I could connect via ssh without entering a password. After telling Codex the username, IP, and port, it could run commands to check the status.
Then I used plan mode, laying out all the problems I was currently facing, for example:
Codex suggested quite a few conflicting options, and after several rounds of revising the plan, we settled on the final one.
All the problems above were resolved two hours after I clicked the 执行 button — with no extra conversation at all.
I can honestly say that without Codex, relying only on my own energy and ability, I could never have finished this task — my website would probably still be in a dilapidated state.
After that I went ahead and set up the new Companion, fixed some outdated content, and my website went back online.
Besides that, I've used Codex for quite a few things recently, for example:
If I get time, I'll write separate posts introducing some of these projects.
Codex really did fill the gap in that part of my abilities, but in the end it only helped me get things done — when it comes to my own skills growing, I haven't felt any of that yet.
A New Monitoring Website
Because I didn't update it in time, a vulnerability in Nezha Panel let attackers into all my servers, and I had to reinstall every one of them — that cost me quite a bit of time. I've dropped Nezha Panel since then. I'd actually found a replacement, Komari, a long time ago, but never deployed it due to time and energy.
Recently I remembered this and decided I still need a monitoring panel. I deployed it manually without Codex, and the whole process turned out surprisingly smooth — much friendlier than deploying Nezha Panel, for example:
The theme I'm using is Komari-Theme-LuminaPlus, and it looks really good — I'm very satisfied. You can see it in action at Jayden's Service Monitor.
A New Domain Email Service
As mentioned above, I reinstalled all my servers, including the self-hosted domain email server iRedMail — Further reading.
This kind of self-hosted email server has a few problems:
So I went looking for a new domain email service. After two rounds of back-and-forth with ChatGPT, I found that Feishu (Lark) is a good choice:
Deployment was done in under half an hour — quick and painless. If you have a similar need, I'd happily recommend it; I haven't run into any problems so far.
“New” M1 Max MacBook Pro
The quotes are because I picked this up from the secondhand market for 9600 CNY. The exact model is a 16-inch M1 Max MacBook Pro (64GB + 1TB).
My M1 MacBook Pro, which had been with me for 5 years, only had 16GB of RAM, and the daily swap usage had gotten so heavy that it seriously affected usability — I'd even trimmed my productivity apps down to only the essentials. But the memory problem was still severe: just opening Codex, Zotero, WeChat, and other everyday chat apps nearly maxed it out. For efficient studying and living, I really had no choice but to switch. And at a time when memory prices were rising — especially since Apple itself started raising prices — upgrading hardware became especially difficult.
Originally, in June, I'd pre-ordered a 16-inch MacBook Pro with an M4 Pro (48GB + 512GB) from Moorj. Unfortunately, due to the situation, the machine couldn't make it through customs, so I had to give up on it.
So my eyes turned back to the secondhand market. I'd been looking at 64GB M1 Pro MacBook Pros — maybe this model is what everyone was watching, because whether 14-inch or 16-inch, there weren't many units around, and finding one in good condition was even harder. Besides, machines in good condition really aren't cheap; even the 8000-CNY ones on Aihuishou looked mediocre to me.
The M1 Pro (10+14) version has no CPU difference from the M1 Max, and I'm not sensitive to GPU, which is why I wasn't keen on the M1 Max to begin with. After two weeks of watching M1 Pros without seeing a single one that fit the bill — it seemed like only resellers were playing in that lane — I reluctantly started looking at M1 Max as well.
There were clearly far more M1 Max machines, yet ones in good condition weren't much more expensive. Almost on the second day of looking, I snagged a machine with a reasonable price and decent condition. The seller was in Suzhou — I placed the order that day, and the seller had it delivered to my door via a ride-hailing courier that same day. What followed was a series of inspection steps.
I won't go into the inspection details — you can basically find it all online. And since diagnostic software isn't infallible, this trade runs deep. For example, I replaced the battery in my M1 MacBook Pro myself, but the diagnostics couldn't even detect it, so I gave up on a lot of criteria that don't matter in real-world use anyway. In short, as long as it works fine for normal use, that's good enough.
The upgrade to 64GB of RAM brought a very noticeable improvement — swap usage has basically disappeared. Daily memory usage sits around 30GB, more under heavy load, which leaves plenty of headroom. As for the CPU, the M1 line's single-core performance isn't impressive anymore, and responsiveness is clearly a beat slower than the newer Apple Silicon, but it barely affects my efficiency at all. On top of that, multi-core performance is nearly double my old M1, so the upgrade felt very tangible to me.
New iPhone 17 Pro Max
In May I switched from the 13 Pro to the 17 Pro Max — it's definitely on the heavy side. This is my first Pro Max, and I'd already braced myself for the weight, so beyond that it was almost all pleasant surprises; the experience has been great.
Same logic as changing my computer: for studying, it's noticeably more efficient, and for daily life, a lot more convenient.
Space Launcher
This is actually a small side story from the computer switch.
Even though Space Launcher had long since updated to 2.x and even 3.x, I'd always stayed on 1.x, because I'm used to setting the post-press delay to 0, and that setting always ran into weird issues in the new versions.
During this reinstall, I found that the 1.x version could no longer be downloaded. Forced to try the new version, I found the problem was still there, so there was nothing to do but email the developer asking for the old version.
After a few emails back and forth, the developer quickly confirmed the new version did have a problem, and it was fixed in the next minor release. So I happily switched to the new version.
What touched me most was a line at the end of the developer's email:
Space Launcher is, in my view, a genuinely great piece of software — I use it constantly, the experience is excellent, and it's remained free in trial mode forever, and even the one-time purchase price is affordable.
While digging through my emails, I realized I'd actually paid for it back in 2022, but I had absolutely no memory of it, so for all these years I never activated the license and stayed on the trial version the whole time.
I'd recommend every macOS user give this app a try — it's truly excellent, otherwise I wouldn't have used it heavily for so long. It's the best-value software I've ever bought, bar none.
Unfortunately, I've recommended it a few times on V2EX, but people don't seem to rate it highly.
Outro
I'd planned to put some travel notes from 2026 here, but the post was already getting way too long, and I haven't sorted through the photos yet either.
That's all for now — good to be back.