ytyng.com

Latest Articles

Page 2
2026-03-27 15:00 (6 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 (6 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 (6 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 (6 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 (7 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 (7 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 (7 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 (7 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 (7 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.

2026-02-08 08:40 (7 months ago)
Summary of the Differences Between Suno AI’s Remix, Inspo, Mashup, and Sample Features

A comparison of Suno AI's four features — Remix, Inspo, Mashup, and Sample — with a table and flowchart explaining their inputs, behaviors, and when to use each one.

2026-01-23 02:52 (8 months ago)
Firefox: Setting to Prevent Exiting macOS Full Screen Mode with the ESC Key

An `about:config` tweak that stops the ESC key from exiting full-screen mode in Firefox on macOS.

2026-01-09 03:03 (8 months ago)
Exposing Chromium DevTools Protocol port 9222 from Docker — Chromium M113+ workaround

Since Chromium M113, `--remote-debugging-address=0.0.0.0` is forcibly remapped to 127.0.0.1, blocking external CDP connections. Workaround: forward 9222 to 127.0.0.1:9223 with `socat`.

2026-01-09 03:02 (8 months ago)
How to Ignore Changes to Tracked Files with `git skip-worktree`

Use Git's `skip-worktree` flag to hide specific local edits from `git status` — handy for tracked files you cannot `.gitignore` but want to keep modified locally.

2026-01-09 01:55 (8 months ago)
Parsing Claude Code stream-json output with jq — extract .event.delta.text in real time

Extract `.event.delta.text` from Claude Code's `--output-format=stream-json` using `jq -j` to avoid the per-fragment newline issue with `jq -r`. Includes a working one-liner.

2025-08-30 04:18 (13 months ago)
Headless UI Libraries for SvelteKit + Tailwind (2025)

I researched Headless UI libraries that can be used with Svelte and summarized them.

2025-08-24 14:31 (13 months ago)
Designing a Shared Store Library for Svelte 5’s Runes Mode

When trying to implement a shared store in Svelte 5’s Runes Mode, I couldn’t export $state, so I couldn’t write the code as intended and ended up creating a compromise solution.

AWS
2025-07-16 12:03 (14 months ago)
Resolving the BODY_SIZE_LIMIT for File Uploads on AWS Amplify Hosting with SvelteKit SSR

I resolved an issue in an app deployed to AWS Amplify using SvelteKit + amplify-adapter that was causing the upload error: "SvelteKitError: Content-length of 605227 exceeds limit of 524288 bytes."

Python
2025-05-27 08:55 (16 months ago)
[Outdated] Using Selenium Remote (Selenium Grid) with browser_use

This is sample code for using Selenium Remote Grid in headful mode with `browser_use`. The sample also includes specifying the browser window’s viewport size.

Python
2025-05-21 03:10 (16 months ago)
Obtain HttpOnly=True Session Cookies from Services Logged in via Browser-Use

Pitfalls when passing `--headless` or `-profile` to Selenium Firefox, and the right way to use `selenium.webdriver.FirefoxOptions`.

Python
2025-05-21 02:50 (16 months ago)
Fix: Python 3.13 SSL error 'Basic Constraints of CA cert not marked critical' (VERIFY_X509_STRICT)

Python 3.13 enabled VERIFY_X509_STRICT by default, triggering "SSL: CERTIFICATE_VERIFY_FAILED certificate verify failed: Basic Constraints of CA cert not marked critical" against self-signed CA certs. Workaround: disable VERIFY_X509_STRICT in SSLContext.