DEV Community

Susumu Takahashi profile picture

Susumu Takahashi

Founder of Layerworks (solo). Years of maintaining client WordPress sites across Japanese hosts, now building tools for it. I post war stories from real WP maintenance.

Work

Solo developer & founder at Layerworks

pip Version Specifiers — What `==`, `>=`, and `~=` Actually Commit You To

pip Version Specifiers — What `==`, `>=`, and `~=` Actually Commit You To

1
Comments 1
4 min read

Want to connect with Susumu Takahashi?

Create an account to connect with Susumu Takahashi. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
Cache-Control vs. ETag: What Each One Actually Controls

Cache-Control vs. ETag: What Each One Actually Controls

1
Comments 1
4 min read
Exponential Backoff vs. Fixed-Interval Retries: When Growing Wait Times Actually Help

Exponential Backoff vs. Fixed-Interval Retries: When Growing Wait Times Actually Help

3
Comments
5 min read
Why SSH Key Authentication Beats Password Authentication — What Is Actually Being Proven

Why SSH Key Authentication Beats Password Authentication — What Is Actually Being Proven

2
Comments 1
4 min read
Unit Tests vs. Regression Tests: Why the Same Feature Gets Tested Twice

Unit Tests vs. Regression Tests: Why the Same Feature Gets Tested Twice

2
Comments
5 min read
How Desktop Apps Detect and Kill Stale Processes on Startup

How Desktop Apps Detect and Kill Stale Processes on Startup

2
Comments 1
5 min read
Semantic Versioning (SemVer): Why Version Numbers Have Three Parts

Semantic Versioning (SemVer): Why Version Numbers Have Three Parts

1
Comments
4 min read
How Symmetric Encryption (Fernet) Keeps Local Credentials Safe on Disk

How Symmetric Encryption (Fernet) Keeps Local Credentials Safe on Disk

1
Comments
5 min read
What `rsync -avz --delete` Actually Does

What `rsync -avz --delete` Actually Does

2
Comments 2
4 min read
HTTP Status Code Basics: What 200/301/403/500 Actually Mean for Maintenance Tools

HTTP Status Code Basics: What 200/301/403/500 Actually Mean for Maintenance Tools

1
Comments
4 min read
Reading `.htaccess` mod_rewrite Rules: A Real `RewriteBase` Trap From a Subdomain Migration

Reading `.htaccess` mod_rewrite Rules: A Real `RewriteBase` Trap From a Subdomain Migration

1
Comments
4 min read
wp-config.php Key Constants Explained: What WP_DEBUG, DISALLOW_FILE_EDIT, and WP_MEMORY_LIMIT Actually Do

wp-config.php Key Constants Explained: What WP_DEBUG, DISALLOW_FILE_EDIT, and WP_MEMORY_LIMIT Actually Do

1
Comments
4 min read
WordPress REST API Basics: What Can You Do With `/wp-json/`?

WordPress REST API Basics: What Can You Do With `/wp-json/`?

1
Comments
5 min read
What Is Visual Regression Testing? How Screenshot Diffing Catches Layout Breaks

What Is Visual Regression Testing? How Screenshot Diffing Catches Layout Breaks

1
Comments 1
5 min read
What are PyInstaller "hidden imports" — and why do only dynamic imports break?

What are PyInstaller "hidden imports" — and why do only dynamic imports break?

1
Comments 1
4 min read
Code signing basics — what Apple Notarization and Windows Authenticode actually certify

Code signing basics — what Apple Notarization and Windows Authenticode actually certify

1
Comments
4 min read
Running Flask's dev server as a desktop app's backend — what actually matters

Running Flask's dev server as a desktop app's backend — what actually matters

1
Comments
6 min read
Atomic writes — how tempfile + os.replace prevent corrupted JSON

Atomic writes — how tempfile + os.replace prevent corrupted JSON

2
Comments
5 min read
Cross-platform file locking in Python — fcntl vs msvcrt from scratch

Cross-platform file locking in Python — fcntl vs msvcrt from scratch

1
Comments
5 min read
Crontab syntax basics, and how it differs from WP-Cron

Crontab syntax basics, and how it differs from WP-Cron

2
Comments
4 min read
Organizing per-host settings with `~/.ssh/config` — a standard practice for anyone managing multiple servers

Organizing per-host settings with `~/.ssh/config` — a standard practice for anyone managing multiple servers

1
Comments
4 min read
SSH key types (RSA / ED25519 / ECDSA) — what actually differs, and which one to pick

SSH key types (RSA / ED25519 / ECDSA) — what actually differs, and which one to pick

2
Comments
4 min read
How the WordPress transient API works, and when `wp transient delete` actually helps

How the WordPress transient API works, and when `wp transient delete` actually helps

2
Comments
4 min read
`wp db check` / `wp db optimize` — the database health commands that get overlooked

`wp db check` / `wp db optimize` — the database health commands that get overlooked

2
Comments
3 min read
Using WP-CLI aliases to switch between multiple WordPress environments safely

Using WP-CLI aliases to switch between multiple WordPress environments safely

1
Comments 2
4 min read
Comparing pricing models across four WordPress maintenance tools — what the shape of a price reveals about cost structure

Comparing pricing models across four WordPress maintenance tools — what the shape of a price reveals about cost structure

2
Comments 1
4 min read
A tabbed form that silently refused to submit — required fields hidden behind another tab

A tabbed form that silently refused to submit — required fields hidden behind another tab

8
Comments 10
4 min read
UTF-8 vs. cp932: Why Some Bugs Only Show Up on Japanese Windows

UTF-8 vs. cp932: Why Some Bugs Only Show Up on Japanese Windows

2
Comments
4 min read
Verifying a WordPress major upgrade — a 7-step post-upgrade checklist

Verifying a WordPress major upgrade — a 7-step post-upgrade checklist

2
Comments
6 min read
Greedy vs. Non-Greedy Regex: Why the Same Pattern Can Match Differently

Greedy vs. Non-Greedy Regex: Why the Same Pattern Can Match Differently

2
Comments
5 min read
Log Level Design and Rotation: Why Apps Use DEBUG/INFO/WARNING/ERROR

Log Level Design and Rotation: Why Apps Use DEBUG/INFO/WARNING/ERROR

1
Comments
5 min read
Site list scrolls to top on every delete — fixing the missing keepScroll argument across 6 call sites

Site list scrolls to top on every delete — fixing the missing keepScroll argument across 6 call sites

1
Comments
2 min read
The Principle of Least Privilege: Why File Permissions Like 600/644/755 Exist

The Principle of Least Privilege: Why File Permissions Like 600/644/755 Exist

1
Comments
5 min read
The excluded-plugin setting that Playwright ignored — fixing browser-mode updates and false residual warnings

The excluded-plugin setting that Playwright ignored — fixing browser-mode updates and false residual warnings

1
Comments
3 min read
The cp932 crash in the build gate that only happened on Windows — static detection, behavioral testing, and a negative check

The cp932 crash in the build gate that only happened on Windows — static detection, behavioral testing, and a negative check

1
Comments
3 min read
Placing corrections exactly where an LLM is tempted to sound plausible instead of right

Placing corrections exactly where an LLM is tempted to sound plausible instead of right

1
Comments
3 min read
A support chatbot needs to be designed for what it won't answer, not just what it will

A support chatbot needs to be designed for what it won't answer, not just what it will

1
Comments
2 min read
The free plan wasn't actually "no registration required" — fixing a landing page claim that contradicted itself

The free plan wasn't actually "no registration required" — fixing a landing page claim that contradicted itself

2
Comments 1
3 min read
Resuming email verification after the app is closed — the pending_email state that prevents re-sending

Resuming email verification after the app is closed — the pending_email state that prevents re-sending

1
Comments
4 min read
SPF, DKIM, and DMARC together — why the missing DMARC record was blocking registration emails

SPF, DKIM, and DMARC together — why the missing DMARC record was blocking registration emails

1
Comments
3 min read
When maintenance ends with an error, the plugin update badge disappears — designing a backend marker and frontend count sync

When maintenance ends with an error, the plugin update badge disappears — designing a backend marker and frontend count sync

2
Comments
4 min read
A csh bug we thought we fixed came back in a new feature — designing a login-shell-independent SSH command wrapper

A csh bug we thought we fixed came back in a new feature — designing a login-shell-independent SSH command wrapper

1
Comments
4 min read
Deploying and committing to git are not the same "done" — the trap of assuming uploaded means synced

Deploying and committing to git are not the same "done" — the trap of assuming uploaded means synced

1
Comments 1
3 min read
Checking that a count didn't change — a sanity check before writing a reorder API's result

Checking that a count didn't change — a sanity check before writing a reorder API's result

1
Comments
3 min read
A version bump that got left behind — fixing it with a single source of truth and a `--check` gate

A version bump that got left behind — fixing it with a single source of truth and a `--check` gate

1
Comments
4 min read
Don't show users a raw Playwright error — translating exceptions into friendly messages

Don't show users a raw Playwright error — translating exceptions into friendly messages

1
Comments
3 min read
When "select all" checkboxes don't actually select anything — verifying after `check()`, not just trusting it

When "select all" checkboxes don't actually select anything — verifying after `check()`, not just trusting it

1
Comments
3 min read
When `update-core.php` version scraping goes wrong — telling a plugin version number apart from WordPress core

When `update-core.php` version scraping goes wrong — telling a plugin version number apart from WordPress core

1
Comments
3 min read
Browser-based updates getting stuck on the "Confirm your admin email" screen — why Playwright stalls in wp-admin

Browser-based updates getting stuck on the "Confirm your admin email" screen — why Playwright stalls in wp-admin

1
Comments
3 min read
Why scheduled posts don't publish on time — inspecting WP-Cron with WP-CLI

Why scheduled posts don't publish on time — inspecting WP-Cron with WP-CLI

1
Comments
3 min read
Locked out of wp-admin? Why WP-CLI works when `wp-login.php` doesn’t

Locked out of wp-admin? Why WP-CLI works when `wp-login.php` doesn’t

1
Comments
4 min read
Why phpMyAdmin migrations break plugin settings — and why `wp search-replace` doesn’t

Why phpMyAdmin migrations break plugin settings — and why `wp search-replace` doesn’t

1
Comments
4 min read
Getting ready for WordPress 7.0 — three things to check now: PHP requirements, FSE migration, and editor extensions

Getting ready for WordPress 7.0 — three things to check now: PHP requirements, FSE migration, and editor extensions

2
Comments
5 min read
Running a WordPress major upgrade step by step with WP-CLI — commands and checkpoints for each stage

Running a WordPress major upgrade step by step with WP-CLI — commands and checkpoints for each stage

1
Comments
6 min read
Three site-list UX improvements: instant completion feedback, error highlighting, and auto-deselect

Three site-list UX improvements: instant completion feedback, error highlighting, and auto-deselect

1
Comments
3 min read
Why environment variables don’t suppress WP-CLI PHP Deprecated warnings — the phar + shebang path and a three-part structural fix

Why environment variables don’t suppress WP-CLI PHP Deprecated warnings — the phar + shebang path and a three-part structural fix

Comments
4 min read
When SSH to Xserver suddenly stops working, it's fail2ban — the official confirmation and a safer reconnection check

When SSH to Xserver suddenly stops working, it's fail2ban — the official confirmation and a safer reconnection check

Comments
3 min read
Five failure patterns from past WordPress major upgrades — what 5.0 Gutenberg through 6.0 FSE taught maintenance teams

Five failure patterns from past WordPress major upgrades — what 5.0 Gutenberg through 6.0 FSE taught maintenance teams

Comments
5 min read
Don't apply WordPress major releases on day one — the "x.0.1 rule" and a calibration framework

Don't apply WordPress major releases on day one — the "x.0.1 rule" and a calibration framework

Comments
4 min read
Seven things to check before a WordPress major upgrade — before "patch what breaks after" becomes a disaster

Seven things to check before a WordPress major upgrade — before "patch what breaks after" becomes a disaster

Comments
5 min read
loading...