Archive: 2025-10 | Page 18
Archive: October 2025
-
Oct 10, 2025
A misconfigured ESLint setup either misses real type errors or slows down every commit with unnecessarily slow type-aware rules. With modern flat config, the typescript-eslint package, and a clear split between fast syntax linting and full type-checking, both goals are achievable at once: reliable error detection and a development workflow that stays fast.
-
Oct 10, 2025
Most tutorials present GraphQL as inseparable from Apollo Client or urql, complete with a normalized cache, codegen, and its own provider tree. For a single, self-contained Alpine component, that entire foundation is often overkill, because at its core GraphQL is just a request format over HTTP that can be addressed just as directly with the native fetch API as any REST endpoint. This article shows how to call a GraphQL query cleanly from an Alpine component, evaluate its result, handle it on failure, and where the limits of this lean approach sit compared to a real GraphQL client.
-
Oct 10, 2025
A shared Elasticsearch index often contains documents that not every user role should see in full. A product document, alongside public fields like name and description, frequently carries internal data such as purchase prices, supplier terms, or margin calculations meant only for certain departments. Maintaining separate indices for every visibility level is costly to operate and error-prone whenever roles or data models change. The Elasticsearch security API solves this directly at the role level with two complementary mechanisms: field-level security hides individual fields from the response for certain roles, while document-level security makes entire documents invisible through a query filter before they ever reach the result list. How both mechanisms are configured, how they combine, and which pitfalls lurk around aggregations and performance is what this article covers using a practical example with role-dependent purchase prices.
-
Oct 9, 2025
Starting a script in the background with & does not make it a daemon. A true daemon detaches completely from the terminal, prevents double starts through a PID file, reacts in a controlled way to signals like SIGTERM and SIGHUP, and writes its log somewhere that stays reachable even without a terminal.
-
Oct 9, 2025
JWT or sessions for Symfony REST APIs? The answer depends on scaling requirements, revocation needs, client type, and security model. Anyone who understands the difference between stateless and stateful authentication can make the right decision for their specific use case.
-
Oct 9, 2025
Read/write splitting routes writes to a single primary server and reads to several replicas in order to scale the database layer horizontally. In PHP that concretely means a connection routing layer that picks the right connection depending on the query type, and a deliberate way of handling replication lag so users do not suddenly see stale data right after a write.
-
Oct 9, 2025
Good onboarding into a TypeScript codebase differs from classic ramp up: the compiler is teacher and gatekeeper at once. Teams that structure onboarding around editor setup, a tsconfig walkthrough and guided pairing save weeks of silent confusion and get new teammates measurably productive faster.
-
Oct 8, 2025
Anyone debugging Magento errors constantly switches between PhpStorm and a terminal running tail -f exception.log. PhpStorm offers built-in ways to follow, filter and link log files with the source code directly in the IDE, without that context switch.
-
Oct 8, 2025
Anyone who needs to reconstruct the state of a row at an arbitrary point in the past classically builds a custom audit trail table with triggers or application code. The SQL:2011 standard defines a far more robust alternative: system-versioned tables, where the database itself automatically maintains a complete history with valid time periods on every UPDATE and DELETE, with no extra application code required. SQL Server and MariaDB already implement this concept in a production-ready way, with dedicated syntax for time-travel queries. This article shows how the mechanism actually works, how it differs from hand-built audit trails, and where its limits lie.
-
Oct 8, 2025
Once prices or visibility depend on customer group, a naive cache can serve the same response to different customers, with wrong prices in the worst case. This article explains how Magento's built-in GraphQL response cache already folds customer group into its cache key by default, where custom resolver-level caches can still get it wrong, and how this plays together correctly with Varnish and a CDN in front of it.