Blog
Coding and living in Finland.

Apr 9, 2021
Make Your GitHub Profile Stand Out
Personalize your GitHub profile by creating a username-matching repo with a customized README. Here's how to get started!

Jan 21, 2021
Understanding Python's __init__.py
__init__.py files are more than just placeholders—they define packages, control imports, and can even initialize modules in Python projects.

Jan 14, 2021
Understanding JavaScript Microtasks vs Macrotasks
Master JavaScript's event loop with a deep dive into the execution order of async/await, Promises, and setTimeout.

Jan 4, 2021
Set Up a Global .gitignore File
Keep your project .gitignore clean by configuring a global ignore file for system and editor-specific clutter.

Mar 22, 2020
Build a Time Control UI with Canvas
From high-DPI canvas scaling to hover/click interaction, this post explains how to implement a timeline UI using HTML5 Canvas.

Feb 23, 2020
Visualizing the Pandemic with Maps
Behind the scenes of an interactive coronavirus map — from heatmaps to categorized visuals, a story of data visualization and design evolution.

Aug 30, 2019
Building a Dot Map from Scratch
A full walkthrough on creating a custom dot map using QGIS, Canvas, and JavaScript — from data extraction to pixel rendering.

Jun 6, 2019
How to Load Stunning Mapbox Maps in WeChat Mini Programs
Use web-view to embed Mapbox GL JS and unlock rich visual features like 3D, heatmaps, and clustering within your WeChat Mini Program.

Jan 22, 2019
Using Mapbox Maps in WeChat Mini Programs
WeChat Mini Programs don't officially support third-party maps, but with a clever web-view workaround, this post demonstrates how to embed interactive Mapbox maps—covering enterprise requirements, domain verification, and postMessage communication.

Jan 10, 2019
JavaScript Padding Numbers with Leading Zeros
Learn how to pad numbers with leading zeros using a simple one-liner in JavaScript, and watch out for edge cases with overly long numbers.

Dec 27, 2018
Automatic SSH Deployment with Travis CI
From manual deployment to full automation, this post walks through configuring Travis CI to run builds and deploy code to remote servers over SSH.

Nov 13, 2018
Writing Code Like a Pro: Code Quality and CI Guide
A hands-on guide by Mofei on maintaining high code quality using Travis CI, Tape, nyc, and codecov.io, complete with real-world Node.js examples.

Nov 6, 2018
Debugging Node.js C++ Addons with VS Code
A complete guide by Mofei on how to debug native Node.js C++ addons in VS Code using launch.json, breakpoints, and preLaunchTask settings.

Jul 13, 2018
Debugging Node.js C++ Addons with VS Code
A complete guide by Mofei on how to debug native Node.js C++ addons in VS Code using launch.json, breakpoints, and preLaunchTask settings.

Nov 29, 2017
Introducing mapv-Editor Beta
mapv-Editor is a web-based geographic data editor built on the MapV engine, supporting multi-format data import, customizable base maps, and intuitive layer configuration with a near-native user experience.

Nov 6, 2017
Simulating a Crossroad with Zebra Crossings Using JavaScript Canvas
This post explores the process of simulating a crossroad with zebra crossings using JavaScript Canvas, covering normalized coordinate processing, road sorting, intersection computation, and canvas transformation techniques.

Aug 22, 2017
Generating CSV with JavaScript and Fixing Chinese Encoding Issues
This post explains how to generate CSV files on the frontend using JavaScript, addressing common issues like Chinese encoding, comma escaping, and custom file names via BOM, data URIs, and the download attribute.

Jun 7, 2017
JavaScript Currency Formatting with Regex: A Deep Dive into Non-Capturing Matches
Effortlessly format numbers with commas using a concise regex while exploring the mechanics of non-capturing matches.