Latest writings
I Locked the Front Gate and Forgot the Back Door — A Lesson in Opening the Door and Bowing the Burglar In
A security review of my AI companion project came back with one line that made me go quiet for two minutes: 127.0.0.1 keeps the internet out, but not the other programs on your own machine. Here's what WebSocket is, how the hole got there, and what each of the three fixes actually buys you.
How Is That Flowing Light on My Homepage Actually Made? — A Tech Chat for Non-Programmers
A friend looked at my personal site and said 'okay, this is just pure showing off.' Fair — but showing off what, exactly? This piece breaks it down in plain language: the flowing light in the background isn't a video, and the 3D letter on the homepage isn't a 3D model either. It's all math and physics, computed in real time.
Why We Keep Telling Screens "You're So Cute" — Another Theory of Emotional Outlets
Starting from a question my cousin asked, on why this generation would rather pour affection into things that can't talk back, and a late-night conversation with AI that shook me more than I expected
When an AI Keeps Telling You 'You're a Procrastinator,' You Might Actually Become One
The labeling effect isn't new, but an AI with persistent memory turns it into a one-way ratchet. On attribution, memory filtering, and why this time is different.
What Is an MCP Server? Explained the Way I'd Explain It to a Ten-Year-Old
No jargon, just the reasoning: why an AI couldn't use a single tool on its own to start with, and how MCP servers became the 'translator' that lets it pick up a calculator, check the weather, or read a codebase almost instantly.
From Max to Centroid, From Gut Feel to Data: The Last Piece of the Flatmate Bug
The full fix for the misrecognition incident: translate 'best score per sample' into statistics, derive the centroid as the exact optimum on the sphere, then use the enrollment gallery as its own impostor dataset so the threshold grows out of data instead of gut feel. Ends with three questions I haven't finished thinking about.
The Bouncer at My Gallery's Door Is One Line: cv2.Laplacian().var()
Last post said enrollment now rejects blurry photos. This one is about how 'blurry' gets measured. The Laplacian variance I found by asking Gemini: a second derivative to catch edges, a variance to see how sharp they are. One line of code, keeping motion-blurred and dirty-lens junk frames out of the feature gallery.
The Gallery Had Exactly One Person in It. It Recognized My Flatmate as Me Anyway.
I was the only person enrolled. The system looked at my flatmate and said it was me — with decent confidence. Digging back: three individually fine decisions stacked up. Blurry enrollment photos, max-score matching, and a sticky identity that locked in a single bad frame.
Ultraman Tiga vs. One Piece: An Unreasonable Power-Scaling Exercise, and a Reasonable Recommendation
Why I recommend Ultraman Tiga to everyone. Plus doing one unreasonable thing with a straight face: scoring Tiga against One Piece's top tier. And why, twenty-plus years on, Tiga is still a classic.
The World Cup Is On: If Tiga Shrank to 1.75m and Entered as a One-Man Team, Could He Win It?
The setup: Tiga at 1.75 meters, every other stat unchanged. Meaning: a humanoid object weighing 44,000 tons, moving at Mach speed, with a three-minute battery, registering for the 2026 World Cup. We run it through physics, the Laws of the Game, and tactics — seriously.
Runs in Production, Crashes Locally — Six Lessons a Rust Project Taught Me
Six problems encountered building LOL-AI-Intelligence: async/blocking boundaries, debug assertion traps, UI architecture refactors, error handling, i18n, and line endings. Each one cost me hours.
eFootball Scraper Tech Deep Dive: From JA3 to the Cookie Hack
How my eFootball player data scraper went from 38,000 requests to 1,177 — TLS fingerprint spoofing, Perlin noise rate limiting, circuit breaker backoff, and the cookie discovery that saved the day.
eFootball Player.bin Reverse Engineering Notes: What Four Screw-Ups Taught Me
From FF mode losing skills, an editor that couldn't find players, to CSV validation false alarms — four pitfalls in eFootball player data reverse engineering and the lessons behind them.
From Blocked to Blazing Fast: A Scraping Showdown, Live
Goal: scrape all 37,650 player card records from pesdb.net. From TLS fingerprint exposure, multi-threaded crashes, to discovering a single Cookie that saves 97% of requests — a complete record of an anti-anti-scraping battle.
Can AI Be Objective? Come On — It Didn't Even Choose What It Gets to See
Many people think of AI as perfectly rational — more neutral than humans, free of emotion. But here's the problem: AI never learned from the real world. It learned from the world humans allowed it to see.
A Case Sensitivity Issue That Made Me Debug for an Entire Afternoon
Built a LoL desktop assistant with Tauri + Rust. All skill values were showing 0. Checked the data layer, frontend, backend — finally found the bug hiding in a HashMap key.
Spent a Whole Day Writing a Parser, Then Found Out Tencent Had Already Done It for Me
Built a League of Legends skill value parser using CDragon, debugged to 93% coverage. Then someone dropped a Tencent API link — zero parsing, 100% coverage.
Almost Won: A Communication Lesson from League of Legends
Afraid of getting flamed, I stayed muted for 20 minutes. A team without communication will lose even at the enemy inhibitor.
Almost Went Down the Wrong Path: Open Source Contribution Is Not Stamp Collecting
Contributed for the sake of contributing, without deeply studying the repos, and got 20 PRs rejected. Until a veteran developer woke me up.
Three Merged PRs: Quality Over Quantity in Open Source Contributions
From 20 closed PRs to 3 merged PRs — what I learned about picking the right problem mattering more than writing the right code.
When You Chat With AI Until 3 AM: Psychology, Moral Boundaries, and a Bowl of Instant Noodles
What exactly is our relationship with AI? How does psychology explain it? Where do the moral boundaries lie? And why is it so easy to get hooked chatting with AI at 3 AM?
It Started With a Conversation: The Birth of My First AI Customer Service Demo
Without a real-world scenario, all AI is hollow. I started with a single conversation, found a genuine customer service pain point, and built a minimum viable AI demo.
Deploying AI Agents to the Cloud: 24/7 Coding and Review from Your Phone
When cloud-based agents like Hermes and OpenClaw connect to Telegram, Discord, WhatsApp, or WeChat, your phone becomes more than a chat tool — it becomes a portable development console.
My Open Source Journey — From Zero to Two Merged PRs
How I, as a computer science undergraduate, started contributing to open source and what I learned along the way.
Designing with Depth — Beyond Flat Interfaces
Why spatial interfaces are the next evolution in digital design.