Pains
726 pains collected
Corrupted or malicious npm package code breaking builds worldwide
9Popular npm libraries like Faker.js and Colors.js have had their source code corrupted by maintainers, causing widespread build failures across millions of dependent projects. When heavily-used small modules maintained by 1-2 people break, the impact cascades globally.
Poor page rendering performance at scale
9Next.js exhibits slow page rendering performance in production: basic pages take 200-400ms, large dynamic pages exceed 700ms, and crawlers hitting multiple pages simultaneously cause site crashes. Caching is unpredictable across replicas.
Insecure default configurations enabling privilege escalation
9Deploying containers with insecure settings (root user, 'latest' image tags, disabled security contexts, overly broad RBAC roles) persists because Kubernetes doesn't enforce strict security defaults. This exposes clusters to container escape, privilege escalation, and unauthorized production changes.
API Route Security Issues in Next.js
9Next.js API routes are vulnerable to injection attacks (SQL, NoSQL, command injection), rate limiting bypass, information disclosure through error messages, and missing input validation.
Hardcoded backend configuration leads to destructive state file mismatches
9When copying root modules without updating backend configuration (key/prefix), Terraform can reference the wrong state file, resulting in destructive plans that delete infrastructure belonging to another environment or project.
Cross-Site Scripting (XSS) Vulnerabilities in Next.js
9XSS attacks can occur in Next.js through improper use of dangerouslySetInnerHTML, unvalidated user input in dynamic content, third-party scripts, and server-side rendering of malicious content.
Authentication and Authorization Flaws in Next.js
9Common vulnerabilities include insecure session management, weak token validation, missing authorization checks on API routes, and client-side only authentication without server-side validation.
Sensitive data exposure in state and plan artifacts
9Terraform stores real secret values (API tokens, database passwords) in plaintext state files and plan output despite showing (sensitive value) in the CLI. When plan files are uploaded as CI/CD artifacts, they become security liabilities if accessible to unauthorized parties.
Local state files without remote backends cause team collaboration and disaster recovery issues
8State files stored locally (default) instead of on remote backends (S3, GCS) prevent team collaboration, create single points of failure, and make disaster recovery impossible. Developers must manually manage state file access.
Unsafe plan review and hidden destructive changes in large changesets
8Terraform plans with hundreds or thousands of changes are difficult for humans to review reliably. Destructive actions (resource deletion/recreation) hide in the noise of benign changes, making it easy to miss critical issues during code review.
Shared Kernel Isolation False Security in Containers
8Docker containers rely on Linux kernel namespaces and cgroups for isolation rather than hardware virtualization. This creates a false sense of isolation—if a kernel vulnerability exists, all running containers inherit it. Container security is critically dependent on timely kernel updates to mitigate container escape vulnerabilities.
No In-Place Major Version Upgrades
8PostgreSQL does not support in-place major version upgrades. Upgrades require either dumping and restoring the entire dataset or setting up logical replication, with rigorous application compatibility testing required. Delaying upgrades increases complexity and risk, as outdated versions miss critical security patches, transforming routine maintenance into a complex, high-risk migration project.
Table corruption issues in PostgreSQL
8PostgreSQL experiences table corruption problems that can result in data integrity issues. This was significant enough to motivate organizations like Uber to evaluate alternative databases.
Resource refactoring is destructive and risky
8Renaming or reorganizing resources in Terraform code causes them to be destroyed and recreated rather than updated, risking catastrophic downtime and data loss for stateful resources like databases. There is no native refactoring capability.
Multi-cluster visibility and context gaps
8Production Kubernetes deployments span multiple clusters across clouds, regions, and environments without centralized visibility. When incidents occur, teams lack context on what broke and where, leading to slower incident detection, configuration drift, and higher outage risk.
Ecosystem fragmentation and dependency management chaos
8PyPI security breaches forced strict corporate policies, fragmented package management (pip/conda), and critical libraries like NumPy and Pandas struggle with GPU demands, creating incompatible forks and version conflicts.
Enforcing consistent security posture across hybrid multi-cloud
8Maintaining consistent security posture, audit trails, and supply-chain guarantees across cloud and on-premises environments with multiple vendor distributions and custom images is extremely difficult. Kubernetes distributions and custom images fragment security enforcement.
Complex surrounding infrastructure requiring deep expertise
8The real challenge in Kubernetes deployment goes beyond cluster setup to configuring RBAC, secrets management, and infrastructure-as-code. Teams without prior experience make decisions that require painful redesigns later, as shown by organizations requiring 50% of their year dedicated to cluster maintenance.
Required checks cannot dynamically match triggered workflows in monorepos
8GitHub Actions requires explicitly naming required status checks, but in monorepos with dynamic pipelines, only relevant checks should be mandatory. If a PR only touches `api1` but `web-app1` checks aren't triggered, the PR cannot merge even though all relevant checks passed. This forces developers to run unnecessary pipelines just to satisfy merge requirements.
Python's Global Interpreter Lock (GIL) limits concurrent performance
8The GIL remains unresolved, forcing developers to use workarounds like multiprocessing or rewrite performance-critical code in other languages. This blocks real-time applications and makes Python non-competitive for high-concurrency workloads.
Missing database indexes and unoptimized queries cause severe production slowdowns
8Common mistakes include missing database indexes on frequently queried columns, fetching entire tables instead of specific rows, and not using connection pooling. Queries that work fine in development with 100 rows can take 3+ seconds in production with 50,000 rows and no indexes instead of 30 milliseconds.
Running outdated, unsupported Kubernetes versions
831% of organizations still run unsupported Kubernetes versions, missing vital security and performance patches. Each skipped release compounds technical debt and increases API breakage risks when eventually upgrading.
IAM misconfiguration and access control vulnerabilities
8Misconfigured IAM roles and permissions leave AWS environments vulnerable to unauthorized access. Developers must carefully manage user access and permissions to prevent security breaches.
GitHub Actions log viewer crashes on large logs
8The GitHub Actions log viewer is unreliable and crashes browsers when viewing long build logs or searching through them. Developers report that Chrome crashes repeatedly when trying to debug failed builds, making it the only major CI system with this critical usability issue.