🔒secret/
double-click an icon, or click below
~/about.md
whoami

Digital IC Design engineer with 20+ years of experience — design, verification,

scripting, automation, LEC, LINT, SYN. Open to work in Japan/Singapore.

Off the clock I run a home network that's grown well past reasonable size:

a GB10 AI box, a mesh of UniFi and AmpliFi gear, three cameras streaming live,

and a small fleet of always-on services that occasionally page me at 2am.

~/projects/
ls -la

Solar System — real-time 3Dlive

Sun, 8 planets, Pluto, and Luna, positions computed live from orbital mechanics — zoomable, 23 languages

solarsystem.hjs.space

JP exit for one PS5done

per-device gateway + Xray split-routing, OTT-only allowlist

ArchiSteamFarm, 15 accountslive

migrated off a dying 1GB VPS onto a NAS Docker container

3-camera live pipelinelive

go2rtc + ffmpeg to rotating YouTube broadcasts, self-healing on a cron

GB10 agent benchactive

local Ollama + OpenHands vs. Claude Code / Codex, head to head

~/notes/
recent entries

The mesh point that forgot it was a mesh point

2026-07-12

A firmware upgrade orphaned one half of a two-node AmpliFi mesh — the master jumped versions, the satellite didn’t, and the pairing quietly broke. Spent longer than I’d like to admit assuming the wrong device was the master before actually checking. Once both were back on the same firmware, re-pairing through the app took thirty seconds.

Six meters of open air, and why that's the easy part

2026-07-11

Planning a WiFi bridge between two balconies, two floors apart. The free-space path loss for six meters is trivial — maybe 40dB, nothing a normal access point can’t handle. The actual problem is that most omnidirectional antennas are weakest exactly straight down, which is almost exactly the angle this link needs. Math was never the hard part.

Migrating 15 Steam bots off a box that couldn't breathe

2026-07-10

A 1GB VPS finally gave up trying to keep 15 sessions alive at once — constant reconnect churn, memory pressure, the works. Docker on the NAS didn’t blink taking over the whole fleet. Three accounts needed a fresh 2FA code to log back in; the rest just picked up where they left off.

~/promos.txt
cat promos.txt

Typeless — AI voice dictation$5 Pro credit

Voice keyboard that turns natural speech into polished messages, emails and documents. I use it daily. Sign up with my link for a $5 credit toward Typeless Pro.

typeless.com/refer?code=GR4R13X

Klook — travel activities & experiencesNT$100 signup credit

探索新奇旅行體驗,現在加入更可獲得 NT$100。

klook.com/zh-TW/invite/L6HB8?c=TWD

giffgaff — free UK SIM card£5 credit

Free UK SIM, no contract. Use my link when ordering and we both get £5 credit.

giffgaff.com/orders/affiliate/huang941_1766897742312

Google Fi Wireless — mobile carrier$60 credit

Here’s a referral code to get a $60 credit when you join Google Fi Wireless!

g.co/fi/r/453K7D

UptimeRobot — uptime monitoringFree monitoring

Free uptime monitoring for your websites and servers — 50 monitors, 5-minute checks, no credit card needed.

uptimerobot.com/?rid=29682d56a90ddb
~/contact
get in touch
Role
Digital IC Design Engineer · Homelab Operator
~/gpg-key.asc
encrypt a message to me
Fingerprint
0AF7 91CE BD49 4959 432D  D6CB 4D97 E434 FE15 1D42
Key ID
4D97 E434 FE15 1D42
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
PXSBaDxC+RBB
=9I61
-----END PGP PUBLIC KEY BLOCK-----
--:--:--