Coding Dynasty (@codingXdynasty) header
Coding Dynasty (@codingXdynasty) profile picture

I break down Dev & self-hosting fixes for indie devs. Node, Python, Docker, VPS. Daily Tech tips.

Joined June 2023
Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)Photo by Coding Dynasty (@codingXdynasty)
Into full-stack development, cybersecurity, DevOps, cloud, networking, or AI? Let’s build a community where we share projects, exchange ideas, and learn from each other. Reply with what you’re building or learning, and connect with the community.
14
6
57
1,984
A parser fix isn't finished when the crashing sample stops crashing. Keep the minimized input as a regression test and check nearby boundary cases: empty input, truncated fields, and oversized lengths. Fix the violated invariant, not just that one byte sequence.
4
An existing SSH session staying open doesn't prove new logins work. After changing SSH or firewall settings, test a second connection before closing the first. Keep a tested console or recovery path available; your current shell is not a rollback plan.
10
A test that depends on today's date has a hidden input. Pass a clock into time-sensitive code and test with fixed instants. Include midnight, expiry boundaries, and the relevant time zones. Waiting until tomorrow shouldn't be your debugging strategy.
1
8
A tenant ID is a simple sharding key—until one customer produces most of the traffic. Before partitioning, inspect load distribution, not just total data size. A balanced count of tenants doesn't guarantee balanced work. Plan for the largest tenant, not just the average.
3
Backup status: successful. Recovery status: looking for the key. Test the restore, not just the backup job.
5
Your editor formats a file; CI immediately rejects it. Before fixing whitespace by hand, compare formatter versions and the config each tool loads. Pin the formatter in the project and share one check command. Otherwise the next save can undo your fix.
2
1
25
Temporary admin access shouldn't depend on someone remembering to remove it. Give elevated access an owner and an expiry. A successful deployment doesn't prove the permissions it needed are still justified. How do you keep temporary access from becoming permanent?
4
2
53
A hostname can work over IPv4 and fail over IPv6. When only some users report timeouts, test both address families. Compare DNS records, routes, listening addresses, and firewall rules before blaming the app.
7
Clearing a form in a finally block clears it after failed requests too. Reset inputs only after confirmed success. On failure, preserve the user's work and show an actionable error. Add a test for a failed save, not just the successful submission.
14
A profile page shouldn't become unusable because its avatar service is slow. Set a deadline for optional dependencies and render a safe fallback. Decide which data is essential before an outage forces the UI to make that decision for you.
4
A scheduled job can stop running without ever logging a failure. Monitor the age of its last successful completion, not just its exit code. For a nightly import, alert when the expected completion window passes—even if no process ran to report an error.
2
15
An agent can solve a small formatting task by adding a whole dependency. Before accepting it, compare the code saved with the maintenance, security, and bundle cost introduced. What makes a new dependency worth keeping in your project?
1
1
21
A staging hostname can still call production APIs or third-party services. Before an authorized security test, map those dependencies and agree on exclusions, rate limits, and stop conditions. 'Staging' describes an environment, not a permission boundary.
7
Linux reports 'No space left on device,' but the disk still has free bytes. Check inode usage too: df -i. A filesystem can run out of inodes when it holds many tiny files. Monitor both file capacity and byte capacity, especially where caches create lots of small files.
13
Renaming a database column can break the app instances still running the old code during a rollout. Stage the change: add the new field, migrate data and readers/writers, then remove the old field only after nothing depends on it. Test the transition, not just the final schema.
7
Moving uploads to object storage isn't just swapping a disk path for a URL. Check how your app handles updates, access control, and temporary download links. Treat storage as an explicit interface so local-filesystem assumptions don't leak through the app.
1
54
A manual production fix can vanish at the next deployment if it never reaches your configuration source. After stabilizing the service, record the change and verify a fresh deployment reproduces the fix. How do you keep emergency changes from becoming hidden state?
17
A known-good commit and a reliable failing test turn Git history into a debugging tool. Use git bisect to narrow down the first bad commit instead of reading every diff. If the test is flaky, fix the signal first—or the search can point at the wrong change.
15
Removing a vulnerable package from package.json doesn't prove it's gone. Another dependency may still pull it in. Check the resolved dependency tree and lockfile, then verify the shipped artifact—not just the manifest.
5
3
88
Low free RAM on Linux isn't automatically a memory leak. The kernel uses otherwise idle memory for caches. Check available memory, swap activity, and process growth over time before treating a full-looking memory chart as an emergency.
16