ytyng.com

Latest Articles

Page 1
2026-05-01 02:40 (2 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 (7 days ago)
Opening a specific 1Password item from the CLI 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 (36 days 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 (36 days 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 (45 days 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 (2 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 (2 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 (2 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 (2 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 (2 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 (2 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 (2 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 (3 months ago)
Firefox: Setting to Prevent Exiting macOS Full Screen Mode with the ESC Key

If Firefox on macOS enters the system’s standard fullscreen mode and you find it annoying that pressing the Esc key exits fullscreen, this article explains how to prevent that by changing `browser.fullscreen.exit_on_escape` to `false` in `about:config`. Exiting fullscreen via F11 or the menu remains available.

2026-01-09 03:03 (3 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 (3 months ago)
How to Ignore Changes to Tracked Files with `git skip-worktree`

If you want Git to ignore local changes to files that are already tracked, use `git update-index --skip-worktree` rather than `.gitignore`. This article explains how to set it up, how to undo it, how to list skipped files, the differences from `assume-unchanged`, and what to do when pulling.

2026-01-09 01:55 (3 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 (8 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 (8 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 (9 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 (11 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.