In 2024, I resolved the issue with using Stripe for payments on Medium, so I subscribed to Medium membership at the beginning of the year and joined the MPP program to start writing. Here’s an analysis of my Medium earnings over the past year and my future direction.
Feb 13, 2025
When developing with npm, you may notice that if you delete the node_modules folder and then reinstall dependencies, the installation is very fast. This is because npm has a caching mechanism.
Feb 13, 2025
Since DeepSeek exploded in popularity around Lunar New Year, the web UI and APIs have been unreliable. Here are a few approaches I use to keep access steady.
Feb 9, 2025
A guide to using OpenResty for web server configuration, focusing on GZIP settings and basic operations.
Feb 7, 2025
Use the official Vite legacy plugin to target older browsers without managing Browserslist/Core-JS manually.
Feb 7, 2025
A simple setup for ebook reading: WeRead for apps and imports, plus a Telegram Z-Library bot for finding titles.
Feb 6, 2025
Having used 1Password for many years, here I’ll summarize the usage methods of 1P.
Jan 31, 2025
Recently when looking at some projects, I found many dependencies. After searching a few randomly, I discovered they weren’t being used and could be removed. However, checking and removing these packages one by one is too troublesome. Based on this need, I wrote a small tool to efficiently detect and remove unused dependencies.
Jan 26, 2025
Speed up CI pipelines by caching npm dependencies on the host and inside Docker builds, with example Jenkinsfile snippets.
Jan 25, 2025
I’ve been playing with WeChat bots in my spare time, and recently wanted to add support for sending voice files. Research shows that WeChat voice files use the Silk format, while AI voice synthesis typically provides MP3/WAV formats. So I need to solve the conversion from MP3 to Silk.
Jan 24, 2025
Cursor(VSCode) has been used frequently for coding, but opening projects is inefficient. I wanted to create an Alfred Workflow for a one-click VSCode project opening. Research showed that VSCode stores recently opened projects, making this technically feasible.
Jan 23, 2025
Eudic Dictionary’s default translation quality is average, and using Eudic AI requires a separate payment. Fortunately, Eudic supports adding third-party translation engines, including OpenAI and DeepSeek. DeepSeek AI offers free credits and costs only 1CNY per million tokens, making it highly cost-effective. Therefore, I chose to use DeepSeek AI as the translation engine.
Jan 22, 2025
This article discusses AI usage strategies in JetBrains IDEs, including tool configurations and practical implementations for AI-assisted programming workflows.
Jan 21, 2025
DeepSeek AI has gained considerable attention recently. Today, I learned about it and considered migrating some of my current OpenAI services to DeepSeek.
Jan 21, 2025
As a JD Plus member for more than seven years, I’ve collected a few tips worth sharing. Notes JD Plus perks change over time, so I’m only highlighting the ones I currently find most useful.
Jan 15, 2025
Frontend developers need to pay attention to key performance metrics that help us understand website performance status and optimize accordingly. Google provides a tool that allows you to view website performance metrics and optimize them: https://pagespeed.web.dev/
Jan 8, 2025
Our server-side project is deployed in a cluster, with each POD running a docker-nodejs application. POD configuration is 2 CPU cores, 16GB memory. Since Node.js is single-threaded, is there resource waste here? Let’s think about this issue.
Jan 6, 2025
When executing git pull/push operations in the terminal, it keeps prompting for username and password, even though I’ve already entered them before. Here’s how to solve this issue. Git Prompting for Username and Password Username for 'https://git.xxx.com': Password for 'https://git.xxx.com':
Jan 6, 2025
I went to PUTH to buy finasteride and encountered various pitfalls. Here’s the full process; hope it helps.
Jan 6, 2025
2024 reinforced the lesson that choice is often more important than effort. Despite three years of dedication, I've seen little in the way of financial gain or career progression. However, I've made strides in open-source projects and personal finances.
Jan 4, 2025
How to switch your JetBrains account region, subscribe via the China store, and still access the global AI Assistant endpoints through a proxy.
Jan 3, 2025
Besides dependency and devDependency in package.json, there’s also peerDependency. Let’s resolve a real-world error to understand how it works. Error Message npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: a@0.0.1-beta npm ERR! Found: ssh2@1.15.0 npm ERR! node_modules/ssh2 npm ERR! ssh2@"1.15.0" from the root project npm ERR! ssh2@"^1.12.0" from ssh2-sftp-client@9.1.0 npm ERR! node_modules/ssh2-sftp-client npm ERR! ssh2-sftp-client@"^9.1.0" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer ssh2@"1.16.0" from a@0.0.1-beta npm ERR! packages/a npm ERR! a@0.0.1-beta npm ERR! node_modules/a npm ERR! workspace packages/a from the root project npm ERR! npm ERR! Conflicting peer dependency: ssh2@1.16.0 npm ERR! node_modules/ssh2 npm ERR! peer ssh2@"1.16.0" from a@0.0.1-beta npm ERR! packages/a npm ERR! a@0.0.1-beta npm ERR! node_modules/a npm ERR! workspace packages/a from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! npm ERR! For a full report see: npm ERR! /Users/alanhe/.npm/_logs/2025-01-02T02_53_13_141Z-eresolve-report.txt npm ERR! A complete log of this run can be found in: npm ERR! /Users/alanhe/.npm/_logs/2025-01-02T02_53_13_141Z-debug-0.log
Jan 2, 2025
This year, I updated some software and hardware. There are not many items, but all are practical tools. Let’s take a look. Hex Key Set Purchased from JD, price: 45CNY. I previously bought various models of Xiaomi electric screwdrivers, but I still needed hex keys. This time, I got a hex key set that includes multiple sizes, which is very practical. Combined with the Xiaomi electric screwdriver, I’m now prepared for all types of screws.
Jan 1, 2025
Click-to-component is a React component that enables one-click navigation to source code, significantly improving development efficiency. Here I attempt to read the source code and document key points. Source Code Structure The project uses pnpm as the package management tool, with pnpm workspace managing multiple packages.
Dec 31, 2024
We planned to move my mother‑in‑law’s hukou to Beijing. The procedures are numerous and the outcome is uncertain — many cases are “queued indefinitely”. Here’s the process; I’ll update if there’s progress.
Dec 28, 2024