A comparison of HashRouter and BrowserRouter in SPA apps, including URL forms, server configuration, anchor behavior, form submissions, and how SPA routing works.
Feb 5, 2021
This article introduces managing compatibility with Browserslist, including its advantages, implementation details, and related resources to improve efficiency.
Feb 2, 2021
A practical workflow for contributing to open-source repositories: fork, clone, submit PRs, and keep your fork in sync.
Jan 31, 2021
Using SonarQube alongside ESLint to improve frontend code quality: differences, setup, and CI integration.
Jan 28, 2021
Guide to obtaining a free JetBrains License for open source projects, covering eligibility, application process, and usage tips.
Jan 27, 2021
This article discusses undefined items in JavaScript arrays, explaining the differences between explicitly undefined values and uninitialized array elements, and how array iteration behaves differently in these cases.
Jan 27, 2021
How to bind events with inline JavaScript, how it differs from React’s model, and practical tips for native usage.
Jan 26, 2021
Clarifying a common misunderstanding about MySQL LEFT JOIN: why the result count isn't always the same as the left table's count when there are multiple matching records in the right table.
Jan 26, 2021
Receive instant Telegram notifications when your GitHub project gets starred. Learn how to set up GitHub Actions for real-time alerts.
Jan 25, 2021
Two ways to let devices like smart TVs or Switch use your Surge proxy—manual Wi-Fi proxy and macOS DHCP gateway.
Jan 23, 2021
This post summarizes my Nintendo Switch game purchase strategy and tips for saving money across regions.
Jan 22, 2021
Using virtualized tables for large datasets (hundreds of rows), with notes on DOM complexity and profiling.
Jan 18, 2021
Reflecting on 2021: Systematic fitness habits, milestones in open-source development, professional CI/CD improvements, and the challenges of being 30. A year of self-reflection and preparation for the next chapter.
Jan 16, 2021
What yield and yield* do in generators, how they differ, and when to use each, with examples.
Jan 15, 2021
Use declaration merging to add custom properties (e.g., loading flags) to AxiosRequestConfig without sacrificing type safety.
Jan 11, 2021
Browser storage choices (cookie, sessionStorage, localStorage, IndexedDB), differences, and when to use which.
Jan 10, 2021
This article introduces implementing GIF search with Alfred, including advantages of GIF search, implementation details, and related resources to improve GIF search efficiency.
Jan 9, 2021
This article provides an introduction to Jenkins continuous integration for publishing new NPM packages, including the advantages, implementation details, and related resources. These steps can help improve efficiency in Jenkins continuous integration for NPM package publishing.
Jan 7, 2021
A review of the essential hardware and software tools I added to my toolkit in 2020, featuring AirPods 2, ASUS RT-AC1900P, Magic Keyboard, MarginNote 3, and more.
Jan 2, 2021
An overview of third-party services powering my personal blog, with setup notes and brief impressions.
Jan 2, 2021
Apply a wildcard cert (e.g., *.1991421.cn) to cover many subdomains; notes on limits and Certbot steps.
Jan 1, 2021
How to enable HTTPS decryption (MitM) in Surge on macOS and iOS, why it’s useful, and caveats.
Dec 30, 2020
Frontend fundamentals: MVC/MVP/MVVM, how browsers work, React Fiber, and how Redux triggers updates.
Dec 27, 2020
Notes from frontend interview questions to reinforce fundamentals: TCP handshake, number precision, storage, hoisting, etc.
Dec 27, 2020
This article provides a comprehensive comparison between JSON and XML data formats, including their differences, use cases, and practical considerations for modern web development and API design.
Dec 20, 2020