ytyng.com

Latest Articles

Page 1
AI
2026-06-08 14:29 (6 days ago)
Running Local LLMs on an M4 Mac mini 16GB — Practical Options and Limits

Run Qwen3.5-9B locally on an M4 Mac mini 16GB with the right model and runtime choices. Includes setup steps and fixes for common pitfalls around `thinking`, `presence_penalty`, and `num_predict`.

2026-05-22 14:08 (23 days ago)
All Request Headers Available in AWS Amplify Hosting (Geo / ASN / Device)

AWS Amplify Hosting passes CloudFront geo headers (country, region, ASN, device type, postal code, lat/long) to SSR. How to access them in SvelteKit.

2026-05-22 10:06 (23 days ago)
When developing an app on a local port, the ghost of previously developed app appears in the browser

Stale fragments of another app flickering on localhost? It's likely an old Service Worker. Here's how to detect it and disable SW in SvelteKit dev mode.

2026-05-11 00:15 (34 days ago)
ytyng.com Was Featured on FreelanceHub

A summary of ytyng.com being featured in the "Useful Content" section of FreelanceHub, operated by Leverages Co., Ltd. Covers the context of the featured article, the FreelanceHub service, and the 5 media/blogs listed alongside ytyng.com.

2026-05-09 03:00 (36 days ago)
Differences between ULID and UUIDv7

Compare ULID and UUIDv7 as 128-bit sortable IDs — standardization, library support, and how to use UUIDv7 as a primary key in Django 5.2 + Python 3.14 + PostgreSQL 18.

2026-05-06 11:33 (39 days ago)
Building a WebView screensaver on macOS 26 without Xcode

Build a macOS 26 screensaver (.saver bundle) without Xcode — compile with `swiftc` alone and display a WebView as your screensaver.

2026-05-06 11:28 (39 days ago)
When CSS opacity transition silently fails inside WKWebView

When CSS `opacity` transitions don't animate inside WKWebView, force a layer with `will-change` or `transform: translateZ(0)` — the usual workaround.

2026-05-06 07:48 (39 days ago)
EmDash is slow (as of v0.9.0)

Tried Cloudflare's new CMS EmDash on Cloudflare Workers and saw TTFB of 500ms–3000ms. Even a text-only about page lands above 400ms. With comparisons, a breakdown of the bottleneck, and links to third-party benchmarks.

2026-05-06 03:11 (39 days ago)
Sending email from EmDash with Brevo

How I shipped a custom plugin that calls Brevo's HTTP API to make magic-link auth work on an EmDash site deployed to Cloudflare Workers. Covers what's wrong with the existing plugins, why Brevo, the sandboxed-vs-plugins trap, and how to store the API key.

2026-05-01 02:40 (44 days ago)
Building a single-file portable Python script with embedded dependency management

Build a single-file executable Python script with PEP 723 inline metadata and uv shebang support, including dependency management. Add the metadata block and run it directly with uv.

2026-04-26 05:38 (49 days ago)
Opening a specific 1Password item from the terminal in the 1Password desktop app

Open a specific 1Password desktop item straight from the CLI by rewriting the private-link URL scheme. Launch the app directly without going through a browser.

2026-03-27 15:00 (2 months ago)
Claude Code agent instructions & skills in Gemini CLI, Codex CLI, Copilot CLI — portability check

Find out which Claude Code settings actually carry over to Gemini CLI, Codex CLI, and GitHub Copilot. Breaks down what can be shared via symlinks for CLAUDE.md, slash commands, skills, and MCP configs—and what cannot.

2026-03-27 15:00 (2 months ago)
Playwright CLI vs agent-browser vs Claude in Chrome — AI browser automation token benchmark (2026)

Hands-on benchmark: Claude Code operates the same web app via Playwright CLI, agent-browser, and Claude in Chrome. Token efficiency, usability, and stability compared side by side.

2026-03-18 12:00 (2 months ago)
EKS Max Pods per Instance Type and Cost Performance Analysis (Tokyo Region)

Calculating per-Pod cost from EKS ENI-based Max Pods formula and instance On-Demand pricing. Reveals that 2xlarge and 8xlarge are traps with same Pod count as xlarge/4xlarge at double the price, and that Graviton c7g offers the best Pod density cost performance.

2026-03-01 23:35 (3 months ago)
Adding Cache-Control headers to static files when running SvelteKit with adapter-node in Docker

SvelteKit's adapter-node doesn't set Cache-Control headers for files in the static/ directory. This post explains how to use Node.js --import hooks to patch http.ServerResponse.prototype.writeHead and add cache headers to specific paths.

2026-02-22 03:38 (3 months ago)
Skill + CLI over MCP: Replacing Sentry MCP with a multi-profile CLI wrapper

Since sentry-cli lacks native multi-profile support, I created a zsh wrapper function that enables AWS CLI-style --profile switching. Also registered it as a Claude Code skill for seamless AI agent integration.

2026-02-18 03:00 (3 months ago)
Turning a Raspberry Pi into digital signage — maximizing Chromium with Playwright automation

Turn a Raspberry Pi into a kiosk signage display with Playwright (Python) + Chromium `--kiosk` for always-on fullscreen web pages. Persist login via cookies, auto-start via `.desktop`, and deploy updates with `scp`.

2026-02-13 02:34 (4 months ago)
Docker 29 breaks docker push to ECR with 403 Forbidden on GitHub Actions

GitHub Actions ubuntu-latest runner updated to Docker 29, which defaults to containerd image store, causing docker push to ECR to fail with 403 Forbidden.

2026-02-10 23:29 (4 months ago)
How to Add "Copy Full File Path to Clipboard" to Finder's Services Menu

How to create a Quick Action using macOS Automator that copies the full file path to the clipboard with a right-click in Finder.

2026-02-09 09:34 (4 months ago)
How to turn Orange Pi Zero 2W into a Web Signage Display

A guide to turning Orange Pi Zero 2W into a web signage display with auto-starting Chromium kiosk mode. Covers stable systemd boot configuration (getty conflict, D-Bus/GPU workarounds, unlimited retries) and interrupt-driven GPIO button control using gpiomon.