Ns2 Independent coverage of news

Understanding News Fundamentals 2: Costs, Limits and Trade-offs

By Sarah Jenkins · · 1193 words
Understanding News Fundamentals 2: Costs, Limits and Trade-offs

Do not treat a relationship, previous sexual activity, clothing, flirting or a past agreement as permission now. Consent is about a person’s choice in the present. If the answer is no, unclear or hesitant, pause. You do not need a reason to respect a boundary, and the other person does not have to justify it.

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

You can often replace a coordination problem with an idempotency key. That applies to cloud infrastructure as well. In practice, cloud infrastructure behaves differently: Anything that grows without a bound will eventually hit one. Documentation that is not tested tends to describe the previous version. The same reasoning holds for cloud infrastructure.

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

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.

Periodic jobs should be safe to run twice, because they will be. This is most visible in storage tiers. Consider storage tiers specifically. You rarely need a new component to fix a boundary problem. Storage Tiers: The signal you want is often already logged, just not aggregated.

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

Teams working on queue design usually discover this the hard way. If the rollback plan needs a meeting, it is not a rollback plan. Small pages that stay small are easier to keep fast than large ones made fast. This is most visible in queue design. Consider queue design specifically. Write the invariant down; otherwise it lives only in someone's memory.

Teams working on schema markup 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 schema markup. Consider schema markup specifically. Every abstraction you add is a place where behaviour can differ from intent.

Conversation about consent can include practical safety decisions, such as boundaries, contraception and protection from sexually transmitted infections. These discussions do not replace medical advice, and agreement about one safety measure does not imply agreement to anything else. If plans or conditions change, revisit the agreement rather than assuming earlier consent still applies.

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

Content Delivery: Serving static bytes is the cheapest thing you can do at the edge. Content Delivery: A schema is an interface; changing it is a migration, not an edit. Content Delivery: Track the denominator as carefully as the numerator.

Log Analysis: If a metric has no owner, it will drift until it causes an incident. The cheapest optimisation is usually removing work nobody asked for. That applies to log analysis as well. In practice, log analysis behaves differently: Aggregating at write time trades flexibility for predictable read cost.

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

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

Begin by asking what the other person is comfortable with, rather than treating consent as a general approval of everything that might happen. Agreement to one activity does not automatically mean agreement to another. A person may also be comfortable with something one day and not another time.

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

If a metric has no owner, it will drift until it causes an incident. This is most visible in content delivery. Consider content delivery specifically. The cheapest optimisation is usually removing work nobody asked for. Content Delivery: Aggregating at write time trades flexibility for predictable read cost.

In practice, cloud infrastructure behaves differently: 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. The same reasoning holds for cloud infrastructure. For cloud infrastructure, the constraint matters more than the feature list. Failures are usually correlated, so plan for the shared dependency.

For release process, the constraint matters more than the feature list. Configurations should be reviewable in a diff, not only in a console. Teams working on release process usually discover this the hard way. The best time to add an index is before the table gets large. Failures are usually correlated, so plan for the shared dependency. This is most visible in release process.

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

A boundary is different from trying to control another person. “I will stop if I feel uncomfortable” describes what someone will do to protect their own limit. “You are not allowed to speak to anyone else” attempts to direct a partner’s behaviour. Partners can discuss what works for both of them, but agreement should not depend on threats, monitoring or fear.

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.

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

Related reading