Blog

Coding and living in Finland.

In 2023, my family and I moved to Finland. It has felt like a new journey into the unknown. I keep writing code here, and I also keep recording life, family, work, and the stories along the way.
LatestMay 5, 2026

Codex at $100/Month: How I Used It as a Software Engineer Over the Past Month

After upgrading Codex to the $100/month plan, I was not fully convinced myself. Then I looked through a month of history with it and realized the valuable part was not how much code it wrote, but how many unfinished things it helped me actually land in my projects.

2263

Apr 22, 2026

I Turned a Word-Guessing Game into an AI Skill

I turned a small semantic word-guessing game into an AI skill that can run directly in the terminal. This piece is about why the format fits LLMs so well, and how I constrained the model into becoming a stable game host.

4434

Apr 19, 2026

When Codex Can Do the Work but Can’t Finish It: Turning a Stalling Task into a Resumable Workflow

Why can AI do the work but not finish it? This post explains how to turn a stalling Codex task into a sustainable, resumable workflow.

3182

Dec 4, 2025

How to Build an AI Agent for Your Blog: Next.js, Cloudflare & AI SDK Guide

As more websites begin integrating AI, I started wondering: could my blog have an intelligent assistant of its own?

3477

Nov 23, 2025

How to Build a ChatGPT App From Scratch: MCP Integration, Custom Widgets, and Real API Examples

When OpenAI launched Apps in ChatGPT, I was curious to see how it worked. I used the APIs from my own blog to build a ChatGPT App. This post walks through the entire process of building it from scratch, with full code included.

6964

Oct 3, 2025

Hitting the Pitfall of Node.js Fetch Blocked Port by Mistake: Why Does Fetch Not Work While the HTTP Module Works Fine?

Sometimes development feels like an unexpected adventure; I intended to simply change the port to 10080, only to stumble upon the Node.js fetch blacklist. This small mistake revealed the hidden rules of the Fetch standard.

1712

May 23, 2025

Make Your Website or API AI-Ready with MCP Server (Full Guide + Code Examples)

Expose blog posts, comments, and related data to AI via the MCP protocol. Easily deploy with Cloudflare and make your site accessible to ChatGPT and other LLMs.

3091

May 9, 2025

Build a Travel Recommendation AI Agent Using smolagents

Create a self-improving AI Code Agent with smolagents that can plan, execute, and debug. This article walks through building a travel recommendation agent step by step.

252

Sep 20, 2024

Consistent Dev Environments with VS Code Dev Containers

VS Code Dev Containers help developers work in portable, isolated environments—ensuring consistency, avoiding dependency issues, and enabling easier collaboration.

1.5k1

Jun 1, 2024

Mastering the JavaScript Console Like a Pro (2024)

Unlock the full power of the JavaScript console—from grouping and timing to visualizing data—to debug smarter and build faster in 2024.

2.5k2

Apr 12, 2024

Installing GraphFrames for PySpark: A Complete Setup Guide

Step-by-step guide to installing and configuring GraphFrames for PySpark—covering version compatibility, setup methods, and graph algorithm examples.

2.9k

May 10, 2023

The Magic of box-decoration-break in CSS

Fix broken multi-line highlights with a single line of CSS. Learn how box-decoration-break brings seamless styling across line breaks.

3.2k1

May 1, 2023

Understanding CSS position: sticky

Achieve sticky layouts with just two lines of CSS—learn how sticky elements behave inside their containers for modern UI design.

2.9k1

Aug 23, 2022

The Secrets of CSS Variables: From Basics to Advanced Tricks

CSS variables go far beyond reuse—this guide explores animations, type definitions, fallbacks, and creative tricks that feel like magic.

5.7k

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.

9.0k2

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.

3.3k

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.

4.3k1

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.

6.2k

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!

3.4k1
1/4
Next

Coding, and living with intention.

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