Blog

Coding and living in Finland.

Writing about engineering, life, and things I'm slowly figuring out.

Read articles in time order, or enter through story collections.

Spontaneous Trip to Liyang
Life
Aug 15, 2022

Spontaneous Trip to Liyang

An impromptu summer trip to Liyang after a missed flight to Changsha — hot springs, lakes, and bamboo forests under 40°C heat.

Reads4.2kComments1
Read the full story
Mastering Intersection Observer for Lazy Loading
Tech
Jul 14, 2022

Mastering Intersection Observer for Lazy Loading

Stop listening to scroll—use Intersection Observer to efficiently handle lazy loading and viewport detection with clean, performant code.

Reads9.0kComments2
Read the full story
Force Docker to Use amd64 on Apple M1 Chips
Tech
Apr 14, 2022

Force Docker to Use amd64 on Apple M1 Chips

Learn how to force Docker to build amd64 images on Apple M1 chips to avoid compatibility issues on common cloud platforms.

Reads3.2kComments0
Read the full story
Aliyun FC Container Timeout on Macbook M1: A Platform Mismatch Story
Tech
Feb 14, 2022

Aliyun FC Container Timeout on Macbook M1: A Platform Mismatch Story

Running into timeout errors when deploying ARM-built Docker images to Aliyun FC? Here's a detailed story of debugging and fixing the platform mismatch.

Reads4.3kComments1
Read the full story
Why You Shouldn't Use Index as Key in React
Tech
Apr 15, 2021

Why You Shouldn't Use Index as Key in React

Using array index as a React key can lead to UI bugs and performance issues. Learn why it happens and what to do instead.

Reads6.2kComments0
Read the full story
Make Your GitHub Profile Stand Out
Tech
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!

Reads3.3kComments1
Read the full story
Understanding Python's __init__.py
Tech
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.

Reads3.3kComments0
Read the full story
Understanding JavaScript Microtasks vs Macrotasks
Tech
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.

Reads7.3kComments1
Read the full story
Set Up a Global .gitignore File
Tech
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.

Reads7.0kComments0
Read the full story
Build a Time Control UI with Canvas
Tech
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.

Reads5.5kComments2
Read the full story
Visualizing the Pandemic with Maps
Tech
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.

Reads10kComments6
Read the full story
Building a Dot Map from Scratch
Tech
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.

Reads13kComments4
Read the full story

Coding, and living with intention.

Subscribe
© 2012–2026 Mofei·Privacy·Terms
Life compiled in code