正在加载内容...

963963 Chat Insights Portal Independent coverage of news

Common Mistakes When Evaluating News Fundamentals 4

By Robert Hayes · · 1252 words
Common Mistakes When Evaluating News Fundamentals 4

Data Pipelines: The interesting number is not the average, it is the 99th percentile. Data Pipelines: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Data Pipelines: Every abstraction you add is a place where behaviour can differ from intent.

The interesting number is not the average, it is the 99th percentile. That applies to release process as well. In practice, release process behaves differently: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Every abstraction you add is a place where behaviour can differ from intent. The same reasoning holds for release process.

Schema Migration: If a metric has no owner, it will drift until it causes an incident. Schema Migration: The cheapest optimisation is usually removing work nobody asked for. Schema Migration: Aggregating at write time trades flexibility for predictable read cost.

The first thing to settle is the failure mode, not the happy path. This is most visible in data pipelines. Consider data pipelines specifically. Measurements taken once are anecdotes; you need a baseline that repeats. Data Pipelines: Costs usually concentrate in a small number of operations, so find those first.

A direct question can make an unclear moment easier to navigate. People might ask, “Would you like to continue?”, “Is this okay?” or “Would you rather stop?” The answer should be given space. A person who hesitates, goes quiet, seems uncomfortable or does not respond clearly has not necessarily agreed. When the answer is uncertain, pausing and asking is safer than trying to interpret the moment.

Schema Markup: Configurations should be reviewable in a diff, not only in a console. The best time to add an index is before the table gets large. That applies to schema markup as well. In practice, schema markup behaves differently: Failures are usually correlated, so plan for the shared dependency.

Teams working on release process usually discover this the hard way. Serving static bytes is the cheapest thing you can do at the edge. A schema is an interface; changing it is a migration, not an edit. This is most visible in release process. Consider release process specifically. Track the denominator as carefully as the numerator.

Load Balancing: If a metric has no owner, it will drift until it causes an incident. Load Balancing: The cheapest optimisation is usually removing work nobody asked for. Load Balancing: Aggregating at write time trades flexibility for predictable read cost.

For crawl budget, the constraint matters more than the feature list. Periodic jobs should be safe to run twice, because they will be. Teams working on crawl budget usually discover this the hard way. You rarely need a new component to fix a boundary problem. The signal you want is often already logged, just not aggregated. This is most visible in crawl budget.

Schema Markup: Configurations should be reviewable in a diff, not only in a console. Schema Markup: The best time to add an index is before the table gets large. Schema Markup: Failures are usually correlated, so plan for the shared dependency.

Glass and stainless steel are rigid, nonporous materials when their surfaces are intact, and neither has the flexibility of silicone. Borosilicate glass is designed to handle temperature changes better than ordinary glass, but the product’s stated care limits still apply; a chip or crack is a reason to stop using the item and contact the seller about replacement. For steel, look for a stated grade, such as 304 or 316, rather than an unqualified “stainless” claim. Plating, paint or another finish can change the cleaning and wear profile, so check whether the surface is bare metal.

Separate a boundary from a preference where you can. A preference describes something you like or would choose; a boundary describes what you are not willing to do, or what you need in order to feel comfortable. Both are useful information, but a boundary should not be treated as an opening offer to negotiate. You can say, “I’m not comfortable with that,” without supplying a detailed reason.

Data Pipelines: Periodic jobs should be safe to run twice, because they will be. Data Pipelines: You rarely need a new component to fix a boundary problem. Data Pipelines: The signal you want is often already logged, just not aggregated.

Monitoring Alerts: Periodic jobs should be safe to run twice, because they will be. Monitoring Alerts: You rarely need a new component to fix a boundary problem. Monitoring Alerts: The signal you want is often already logged, just not aggregated.

A design that cannot be rolled back is a design that cannot be changed safely. That applies to schema markup as well. In practice, schema markup behaves differently: Latency budgets are easier to defend when every hop has a stated ceiling. Caching helps only until the invalidation rules become the bottleneck. The same reasoning holds for schema markup.

Search Indexing: You can often replace a coordination problem with an idempotency key. Search Indexing: Anything that grows without a bound will eventually hit one. Search Indexing: Documentation that is not tested tends to describe the previous version.

Teams working on storage tiers usually discover this the hard way. The interesting number is not the average, it is the 99th percentile. Adding a cache in front of a slow query is a fix; fixing the query is a cure. This is most visible in storage tiers. Consider storage tiers specifically. Every abstraction you add is a place where behaviour can differ from intent.

Monitoring Alerts: The interesting number is not the average, it is the 99th percentile. Monitoring Alerts: Adding a cache in front of a slow query is a fix; fixing the query is a cure. Monitoring Alerts: Every abstraction you add is a place where behaviour can differ from intent.

Queue Design: If the rollback plan needs a meeting, it is not a rollback plan. Queue Design: Small pages that stay small are easier to keep fast than large ones made fast. Queue Design: Write the invariant down; otherwise it lives only in someone's memory.

Edge Caching: A queue smooths spikes but also hides how far behind you are. Edge Caching: Retries without jitter turn a small outage into a large one. Edge Caching: Separating the reads from the writes buys room to change either side.

Schema Migration: The first thing to settle is the failure mode, not the happy path. Schema Migration: Measurements taken once are anecdotes; you need a baseline that repeats. Schema Migration: Costs usually concentrate in a small number of operations, so find those first.

Access Control: Configurations should be reviewable in a diff, not only in a console. Access Control: The best time to add an index is before the table gets large. Access Control: Failures are usually correlated, so plan for the shared dependency.

A design that cannot be rolled back is a design that cannot be changed safely. The same reasoning holds for observability. For observability, the constraint matters more than the feature list. Latency budgets are easier to defend when every hop has a stated ceiling. Teams working on observability usually discover this the hard way. Caching helps only until the invalidation rules become the bottleneck.

Consider load balancing specifically. Serving static bytes is the cheapest thing you can do at the edge. Load Balancing: A schema is an interface; changing it is a migration, not an edit. Track the denominator as carefully as the numerator. That applies to load balancing as well.

Related reading