---
type: "blog_post_list"
url: "https://www.ytyng.com/en"
page: 1
per_page: 20
total: 342
lang: "en"
---

# Blog posts

- [ytyng.com Was Featured on FreelanceHub](https://www.ytyng.com/en/blog/featured-on-freelance-hub)

  _2026-05-11T00:15:43.023Z_

  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.

- [Differences between ULID and UUIDv7](https://www.ytyng.com/en/blog/ulid-vs-uuidv7-django-primary-key)

  _2026-05-09T03:00:26.279Z_

  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.

- [Building a WebView screensaver on macOS 26 without Xcode](https://www.ytyng.com/en/blog/macos-26-screensaver-webview-without-xcode)

  _2026-05-06T11:33:13.576Z_

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

- [When CSS opacity transition silently fails inside WKWebView](https://www.ytyng.com/en/blog/wkwebview-opacity-transition-not-working)

  _2026-05-06T11:28:21.114Z_

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

- [EmDash is slow (as of v0.9.0)](https://www.ytyng.com/en/blog/emdash-is-slow-as-of-v0-9-0)

  _2026-05-06T07:48:35.191Z_

  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.

- [Sending email from EmDash with Brevo](https://www.ytyng.com/en/blog/emdash-brevo-email-plugin)

  _2026-05-06T03:11:23Z_

  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.

- [Building a single-file portable Python script with embedded dependency management](https://www.ytyng.com/en/blog/portable-python-script-with-pep723-and-uv)

  _2026-05-01T02:40:27.986Z_

  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.

- [Opening a specific 1Password item from the CLI in the 1Password desktop app](https://www.ytyng.com/en/blog/open-1password-item-from-cli)

  _2026-04-26T05:38:58.961Z_

  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.

- [Claude Code agent instructions & skills in Gemini CLI, Codex CLI, Copilot CLI — portability check](https://www.ytyng.com/en/blog/claude-code-config-sharing-with-gemini-codex-copilot)

  _2026-03-27T15:00:00Z_

  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.

- [Playwright CLI vs agent-browser vs Claude in Chrome — AI browser automation token benchmark (2026)](https://www.ytyng.com/en/blog/ai-browser-automation-tools-comparison-2026)

  _2026-03-27T15:00:00Z_

  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.

- [EKS Max Pods per Instance Type and Cost Performance Analysis (Tokyo Region)](https://www.ytyng.com/en/blog/eks-cost-performance-max-pods-per-instance-type)

  _2026-03-18T12:00:00Z_

  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.

- [Adding Cache-Control headers to static files when running SvelteKit with adapter-node in Docker](https://www.ytyng.com/en/blog/sveltekit-adapter-node-static-cache-control-header)

  _2026-03-01T23:35:10Z_

  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.

- [Skill + CLI over MCP: Replacing Sentry MCP with a multi-profile CLI wrapper](https://www.ytyng.com/en/blog/sentry-cli-multi-profile-zsh-wrapper)

  _2026-02-22T03:38:29.138Z_

  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.

- [Turning a Raspberry Pi into digital signage — maximizing Chromium with Playwright automation](https://www.ytyng.com/en/blog/raspberry-pi-signage-playwright-chromium-kiosk)

  _2026-02-18T03:00:00Z_

  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`.

- [Docker 29 breaks docker push to ECR with 403 Forbidden on GitHub Actions](https://www.ytyng.com/en/blog/docker-29-ecr-push-403-forbidden-containerd-image-store)

  _2026-02-13T02:34:24Z_

  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.

- [How to Add "Copy Full File Path to Clipboard" to Finder's Services Menu](https://www.ytyng.com/en/blog/finder-copy-full-path-to-clipboard-service)

  _2026-02-10T23:29:53.164Z_

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

- [How to turn Orange Pi Zero 2W into a Web Signage Display](https://www.ytyng.com/en/blog/orangepi-zero2w-web-signage)

  _2026-02-09T09:34:38Z_

  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.

- [Summary of the Differences Between Suno AI’s Remix, Inspo, Mashup, and Sample Features](https://www.ytyng.com/en/blog/suno-ai-remix-inspo-mashup-sample-differences)

  _2026-02-08T08:40:16Z_

  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.

- [Firefox: Setting to Prevent Exiting macOS Full Screen Mode with the ESC Key](https://www.ytyng.com/en/blog/firefox-macos-esc-fullscreen)

  _2026-01-23T02:52:11.404Z_

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

- [Exposing Chromium DevTools Protocol port 9222 from Docker — Chromium M113+ workaround](https://www.ytyng.com/en/blog/docker-chromium-cdp-port)

  _2026-01-09T03:03:09.654Z_

  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`.
