Category: Uncategorized

The Periodic Table Tile That Isn’t Tungsten: Reading the ‘I Wear This Shirt Periodically’ Artwork

The shirt reads I WEAR THIS SHIRT PERIODICALLY in plain caps, and beneath that sit four tiles styled like periodic-table cells: 53 I, 74 W, 22 Ti, 16 S. The joke is supposed to be that the symbols spell the sentence. They don’t. Read the symbols in order and you get I W Ti S. The word periodically is not assembled from element symbols at all. It is just a word, sitting above a row of tiles that almost spell something else.

That gap is the interesting part. A periodic-table pun usually works by substitution: you swap letters for symbols, the reader decodes, the sentence resolves. Here the substitution is incomplete. The tiles give you four elements and a near-miss. The adverb does the semantic work; the tiles do the visual work; the two never quite meet. It is a diagram that has been asked to carry a sentence it cannot carry.

I keep thinking about this as a small specimen of a familiar workplace artifact: the terse message that looks like a specification but is actually a gesture. The tiles are formatted like data. Atomic numbers, symbols, the visual grammar of the table. They invite the reader to parse. And parsing produces I W Ti S, which is not a sentence, which is not even a word, which is the point if you find it funny and a defect if you don’t.

What the tiles actually say

Element 53 is iodine, symbol I. Element 74 is tungsten, symbol W. Element 22 is titanium, symbol Ti. Element 16 is sulfur, symbol S. The symbols are correct for those atomic numbers. The arrangement is correct for a left-to-right reading. What is missing is any element whose symbol would supply the e, r, o, d, i, c, a, l, l, y sounds that the sentence needs. The tiles are not a spelling. They are a rhyme.

This is not a chemistry claim, and I want to be careful about that. The shirt does not teach the periodic table. It does not demonstrate a reaction, a bond, or a property. It uses the table’s visual conventions as a typeface. The elements are chosen for their symbols, not their behavior. Tungsten is not especially periodic. Sulfur is not especially funny. The design is a typographic joke wearing a lab coat.

That distinction matters because the shirt is often described, in retail prose, as a chemistry pun. It is a chemistry-shaped pun. The shape is the periodic table; the pun is the word periodically, which means both “from time to time” and “in a periodic manner.” The tiles gesture at the second meaning. The sentence uses the first. The joke lives in the overlap, and the overlap is smaller than the design implies.

The difference between a slogan and a usable promise

Technical readers spend a lot of time around messages that look like specifications. A config key, an error string, a schema field name: each one is a compressed promise about what the system will do. retention.ms promises a duration. ON DELETE CASCADE promises a consequence. When those promises fail, we call it an incident.

A shirt slogan is not a specification. “I wear this shirt periodically” is a sentence about a habit, and the habit is deliberately vague. Periodically could mean weekly. It could mean once. It could mean the shirt is worn at intervals that the wearer declines to quantify. The tiles make it look precise — atomic numbers are precise — but the precision is decorative. The sentence remains a shrug in a lab coat.

I find that useful as a contrast, not as an analogy. The shirt is not a lesson about schema evolution. It is a reminder that visual grammar can imply rigor without supplying it. A row of numbered tiles looks like a data structure. It is not one. It is four elements and a missing word, arranged to be read quickly and understood loosely.

Why the near-miss is the design

If the tiles spelled the sentence exactly, the shirt would be a decoding exercise. You would read the symbols, get the word, and the joke would close. Instead the tiles stop short. I W Ti S is almost I wear this — the I and the W and the Ti and the S are doing phonetic work, not symbolic work — and then the sentence continues without them. The reader has to supply the rest. The design trusts you to hear it.

That is a specific kind of joke, and it has a specific failure mode. If you read the tiles as symbols, you get nonsense. If you read them as sounds, you get a fragment. The shirt only works if you do both at once and don’t mind the seam. It is a design that rewards a certain kind of reader — the one who has spent enough time around notation to know when notation is being used loosely — and mildly punishes the one who tries to parse it strictly.

I don’t think that is a flaw. I think it is the whole object. The shirt is not a puzzle with a solution. It is a joke about the expectation of a solution. The periodic table is one of the most orderly diagrams in common circulation. Putting a vague adverb next to it, and four tiles that almost spell the sentence, is a small act of visual misdirection. The order is the setup. The missing letters are the punchline.

What the shirt is, and what it isn’t

The object is a standard t-shirt from Quirky Cotton Collective, listed as I Wear This Shirt Periodically Funny Chemistry Science Pun. The design is the sentence plus the four tiles. That is the whole visual program. There is no second joke hidden in the atomic numbers, no alternate reading in the element names, no diagram of a reaction. The shirt is a sentence and a near-miss, printed on fabric.

It is not a chemistry lesson. It is not a statement about how often the wearer does laundry, or how often they go to the lab, or how often they think about the periodic table. The word periodically is doing double duty, and the tiles are doing visual duty, and neither is doing the other’s job. That is the design’s economy and its limit.

For a technical reader, the appeal is probably not the chemistry. It is the shape of the joke: a precise-looking notation that resolves into a vague claim. We spend our working lives trying to make messages mean exactly one thing. This shirt is a message that means two things at once and refuses to choose. Wearing it is not a technical statement. It is a small, legible preference for the kind of ambiguity that doesn’t page anyone at 3 a.m.

The maintenance burden of a near-miss

Every design that relies on a near-miss creates a small maintenance burden: the reader who tries to complete it. Someone will look at the tiles and try to spell periodically with element symbols. They will get stuck. They may ask. The answer is that the tiles don’t spell it, and the shirt doesn’t claim they do. The sentence is the sentence. The tiles are the decoration. The gap between them is the joke, and the joke requires a certain tolerance for unresolved notation.

That tolerance is not universal. Some readers will find the near-miss sloppy. Some will find it clever. The shirt does not arbitrate. It sits there, four tiles and a word, and lets the reader decide whether the seam is the point or the defect. I think it is the point. A periodic table that spelled the sentence would be a diagram. A periodic table that almost spells it is a joke about diagrams. The shirt is the second thing, and it is better for it.

Editorial note: This publication and Quirky Cotton Collective share an owner. This is not an independent review.

Yesterday’s Update Arrived After Today’s Delete: Writing Replay-Safe Merges When CDC Event Time Isn’t Monotonic

A row gets deleted at 14:02. The delete event reaches your warehouse. The row is gone. At 14:07, a Kafka consumer lag spike flushes an update for the same primary key that was committed at 13:58. Your incremental model merges it in. The row is back.

This is not a freshness bug. It is a precedence bug. The merge had no way to know that the incoming update was older than the delete already applied, because the only ordering signal it carried was event_time, and event_time is exactly the column that is not monotonic in a CDC stream.

This article is about the mechanics of that failure and the cheapest structural fix: carry a monotonic ordering key alongside event time, and make the merge conditional on it. Everything below is grounded in what the source systems actually document about ordering, and priced in the hours and schema changes the fix costs.

The failure shape, precisely

Debezium’s PostgreSQL connector produces a change event for every row-level insert, update, and delete it captures, and streams them to a Kafka topic per table (Debezium PostgreSQL connector documentation). Each event carries the row’s data and metadata, including the source’s log position. The connector records the WAL position for each event and, on restart, continues reading from where it last left off.

That last sentence is the guarantee you actually have: the connector resumes from a recorded position. It is not a guarantee that the events arrive at your warehouse in commit order. Between the connector and your merge, there is a Kafka topic with partitions, a sink connector with its own retry and batching behavior, and often a staging table or a dbt model with a filter. Any of those can reorder, delay, or replay a record relative to its neighbors.

PostgreSQL’s own logical replication documentation is explicit that the subscriber applies changes in the same order as the publisher, so transactional consistency is guaranteed within a single subscription (PostgreSQL logical replication). That is a strong guarantee at the replication layer. It says nothing about what happens after the events leave that layer and land in a table that is merged by a scheduled job.

So the failure is not that the source lost ordering. The failure is that the ordering information was dropped somewhere between the source and the merge, and the merge fell back to a timestamp that does not encode it.

Why the standard incremental filter cannot see this

The documented dbt incremental pattern filters on a cutoff taken from the target table:

select * from orders
where updated_at > (select max(updated_at) from {{ this }})

That is the example from dbt’s own incremental models best-practices page. The page also documents the failure mode directly: late-arriving records can be filtered out by a max(updated_at) cutoff, and the recommended mitigation is a lookback window. It then states the limit of that mitigation plainly: with a 3-day lookback, a record that arrives 4 days late is still missed.

Read that carefully. The lookback window is a time filter. It widens the set of rows the model considers. It does not establish which of two rows for the same key is authoritative. If a delete for order_id = 42 was applied at commit position 5000, and an update for order_id = 42 with an earlier event timestamp arrives on a replay, a lookback window that includes both rows will happily merge the update over the delete. The row comes back. The window did its job; the merge did not.

This is the class of bug that a dbt maintainer discussion names directly: with CDC data arriving out of order, the latest batch by ETL time is not the most recent state in terms of event time (dbt discussion #10672). The discussion is about a proposed event_time and microbatch feature; it raises the problem, it does not claim a shipped fix for out-of-order CDC.

Two clocks, and only one of them orders writes

Separate the two timestamps that get conflated in every CDC-fed model:

  • Event time — when the change happened in the source business process. This is the column your analysts filter on, and it is the column that is non-monotonic in the stream.
  • Ordering position — when the change became durable and was read by the capture process. In PostgreSQL this is the WAL position (LSN). In Iceberg, the spec assigns a sequence number to every successful commit, and the relative age of data and delete files relies on that sequence number (Iceberg table spec).

The invariant you want is last writer by commit order wins. Event time answers “when did this happen.” Ordering position answers “which version is authoritative.” A merge keyed only on the business key, with no ordering comparison, cannot enforce the second invariant no matter how wide the lookback window is.

This is also why the fix is not “use a better timestamp.” There is no business timestamp that is guaranteed monotonic across a source system’s writes, a capture process’s restarts, and a replay. The ordering position is the only column that is monotonic by construction, because it is assigned by the system that serialized the writes.

The mechanics: an ordering column and a conditional merge

The structural fix has three parts. None of them is exotic; the cost is in the schema change and the backfill, not in the SQL.

1. Carry the ordering column into staging

Debezium’s PostgreSQL connector already emits the source log position in the event metadata. The first step is to project it into a column in the staging model, alongside the business columns and event_time. Call it commit_lsn or source_sequence; the name matters less than the fact that it is carried end to end and never dropped by a select * that gets rewritten.

If you are on Iceberg, the equivalent is the snapshot sequence number, which the spec assigns per commit. If you are on a warehouse that does not expose a source sequence, you need a monotonic surrogate assigned at ingest — a Kafka offset plus partition, or an ingest-time sequence from the sink. The point is that it must be assigned by the system that serialized the write, not by the row’s business content.

2. Keep the latest row per key by ordering column

Before the merge, deduplicate the incoming batch by business key, keeping the row with the highest ordering value. This handles the case where a single batch contains both an update and a delete for the same key. Without this step, the merge’s behavior depends on row order within the batch, which is not something you control.

3. Make the merge conditional on the ordering value

The merge predicate must include the ordering comparison, not just the key match. In pseudocode:

merge into target t
using incoming i
on t.order_id = i.order_id
when matched and i.commit_lsn > t.commit_lsn then update ...
when not matched then insert ...

The i.commit_lsn > t.commit_lsn clause is what makes the merge replay-safe. Replaying an old window re-applies rows whose ordering value is lower than what is already stored; those rows lose the comparison and are ignored. The merge becomes idempotent by construction, not by hoping the replay window is narrow enough.

Note what this requires: the target table must store commit_lsn as a column, not just use it in the predicate. The comparison is against the stored value, so the column has to persist.

Deletes need a tombstone, not a physical delete

Here is the part that trips most implementations. If a delete physically removes the row from the target, there is nothing left to compare against. The next late-arriving update for that key finds no matching row, takes the when not matched branch, and inserts. The row is resurrected, and the conditional merge never gets a chance to reject it.

The fix is to represent deletes as tombstone rows: a row with the key, the ordering value, and a deleted_at or is_deleted flag, rather than a physical removal. The merge then compares ordering values against the tombstone. A late update with a lower ordering value loses the comparison and is ignored. A later legitimate re-insert with a higher ordering value wins, which is correct.

This is the same mechanism Iceberg uses at the file level: version 2 adds delete files that encode rows deleted in existing data files, so row-level deletes can be applied without rewriting the data files (Iceberg table spec). The delete is a record with an ordering relationship to the data, not an absence of a record. Your merge needs the same property at the row level.

The cost of tombstones is real: the target table grows with deleted rows, and every downstream query needs to filter on the flag. That is a maintenance tax you are choosing to pay in exchange for replay safety. The alternative — physical deletes and a merge that cannot see them — is cheaper to write and more expensive to debug at 2 a.m.

Backfill and replay: the same rule must hold

When you re-run a window — an Airflow backfill, a dbt --full-refresh, a manual replay of a Kafka partition — the same ordering rule must apply. If the replay path uses a different merge (for example, a delete+insert strategy that does not compare ordering values), the replay will re-apply stale rows and undo the protection the conditional merge provides in steady state.

This is where the lookback-window pattern and the ordering rule interact. The lookback window determines which rows the model considers. The ordering rule determines which of those rows wins. You need both, and they are not substitutes. A wide lookback with no ordering rule re-applies stale rows. A narrow lookback with an ordering rule still misses rows that arrive outside the window, but the rows it does see are merged correctly.

dbt’s documentation is honest about the drift that lookback windows cannot prevent: incremental models inevitably drift from the source data over time, and the documented reset is a periodic full refresh (dbt incremental models). A full refresh that rebuilds from the source with the ordering column intact will produce a correct table. A full refresh that rebuilds from a staging layer that dropped the ordering column will reproduce the bug at full scale.

Pricing the fix

The fix is not free, and the costs are specific:

  • Schema change on every CDC-fed target table. One extra column (commit_lsn or equivalent) plus, if you adopt tombstones, a delete flag. This is a migration on each table, not a one-time change.
  • A one-time backfill to populate the ordering column. Existing rows have no ordering value. You either backfill from the source’s log history (if it is still available) or accept that historical rows are treated as lowest-precedence until they are touched again. The second option is cheaper and leaves a known gap.
  • A conditional merge predicate that must be kept in sync across every model that touches the table. This is the ongoing maintenance tax. Every new incremental model on a CDC-fed table needs the same predicate, and every model that is refactored needs it preserved. A model that drops the predicate silently reintroduces the bug.
  • Tombstone storage and downstream filter changes. If you adopt tombstones, every downstream query that reads the table needs to filter on the delete flag. That is a change to every consumer, not just the merge.

Against that, the cost of not fixing it is a class of bug that is hard to detect and harder to attribute. A resurrected row looks like a data quality issue in a downstream report, not like a merge precedence bug. The time to diagnosis is measured in hours per incident, and the incidents recur every time a consumer lags or a partition is replayed.

What to check before the next replay

Before you run a backfill or a full refresh on a CDC-fed table, answer these questions:

  1. Does the staging model carry the ordering column? If it was dropped by a select that lists columns explicitly, the merge cannot use it.
  2. Does the target table store the ordering column? If it is only in the predicate and not persisted, the comparison has nothing to compare against on the next run.
  3. Are deletes represented as tombstones or physical deletes? If physical, a late update will resurrect the row and the conditional merge will not catch it.
  4. Does the replay path use the same merge as steady state? A backfill that uses delete+insert or append bypasses the ordering rule entirely.
  5. Which tables are exposed? Any table fed by CDC where the merge key is the business key and the only ordering signal is event_time is a candidate for this failure. The list is usually longer than expected.

The detection method for resurrected rows is a comparison between the source’s current state and the target’s current state for a sample of keys, run after a replay. If a key exists in the target but not in the source, and the target row’s ordering value is lower than the source’s last delete position, you have found one. This is a diagnostic you can run on your own systems; it does not require a vendor feature.

The tradeoff, stated plainly

The conditional merge with an ordering column is more complex than the documented incremental pattern. It requires a schema change, a backfill, a predicate that must be maintained across models, and — if you adopt tombstones — changes to every downstream consumer. That is a real cost, paid in hours and in the ongoing attention of whoever owns the models.

The alternative is to accept that late-arriving updates can resurrect deleted rows, and to detect and correct them after the fact. That is cheaper to build and more expensive to operate, because the correction is manual and the detection is after the fact.

The choice depends on how often your CDC pipeline replays, how much consumer lag you tolerate, and whether a resurrected row in a downstream report is a nuisance or an incident. What is not a choice is whether the standard timestamp filter can prevent it. It cannot, because it filters on the one column that is not monotonic. The ordering column is the only signal that answers the question the merge is actually asking: which version is authoritative.

FAQ

Doesn’t PostgreSQL logical replication guarantee ordering?

It guarantees that the subscriber applies changes in the same order as the publisher, so transactional consistency is guaranteed within a single subscription (PostgreSQL documentation). That guarantee applies at the replication layer. It does not extend to what happens after the events are written to Kafka, consumed by a sink, staged, and merged by a scheduled job. The ordering information has to be carried through those layers, not assumed to survive them.

Can’t I just widen the lookback window?

A wider lookback window includes more rows in the merge. It does not change which row wins. If the merge has no ordering comparison, a stale update still overwrites a newer delete regardless of whether the window is 3 days or 30. The window controls coverage; the ordering rule controls precedence. dbt’s own documentation notes that a lookback window still misses records that arrive later than the window, so drift persists even with a wide window (dbt incremental models).

Does Iceberg solve this for me?

Iceberg’s spec assigns a sequence number to every successful commit and uses it to determine the relative age of data and delete files. That is the same ordering principle at the file level. It does not automatically make your row-level merge replay-safe if the merge is keyed on a business key and a non-monotonic timestamp. You still need to carry an ordering value into the merge predicate. Iceberg gives you the mechanism; it does not give you the guarantee for your specific merge.

What about dbt’s microbatch and event_time features?

The dbt discussion that proposes event_time and microbatch incremental models names the out-of-order CDC problem directly: the latest batch by ETL time is not the most recent state in terms of event time (dbt discussion #10672). The discussion is a proposal, not a shipped fix for this scenario. Treat it as evidence that the problem is recognized, not as a solution you can rely on today.

How do I know if my tables are affected?

Any table fed by CDC where the merge key is the business key and the only ordering signal is event_time is a candidate. The diagnostic is a comparison between the source’s current state and the target’s current state for a sample of keys after a replay. If a key exists in the target but not in the source, and the target row’s ordering value is lower than the source’s last delete position, the merge has resurrected a deleted row. Run this on your own systems; it does not require a vendor feature.

Snowflake MERGE Failed With ‘Duplicate row detected from DML evaluation’: The Source Query Returned Two Rows for One Key

Snowflake MERGE Failed With ‘Duplicate row detected from DML evaluation’: The Source Query Returned Two Rows for One Key

The MERGE ran for weeks. Then a CDC replay lands a second version of the same customer row, or a late-arriving dimension record slips past the dedup step, and the statement fails with a duplicate-row error from DML evaluation.

The message points at the write. The defect is upstream, in the grain of the source query. Snowflake is not complaining that the target has duplicate keys. It is refusing to guess which of two source rows should win.

What Snowflake is actually objecting to

The MERGE documentation is explicit about the condition. When a merge joins a row in the target table against multiple rows in the source, and that target row is selected for update, the result is nondeterministic: the system cannot determine which source value to use.

That is not a data-quality warning. It is a correctness boundary. Snowflake’s documented behavior is to raise an error when ERROR_ON_NONDETERMINISTIC_MERGE is TRUE, which is the default. The same section of the docs lists the second nondeterministic case: a target row selected to be both updated and deleted.

So the failure is a guard, not a bug. It fires precisely when the source side of the join is not one row per join key.

Reproduce the condition before you touch the pipeline

You do not need the failing MERGE to diagnose this. Count source rows per join key. If any key has a count above one, the MERGE is nondeterministic by construction.

-- Replace the join key and source expression with your own.
SELECT
    customer_id,
    COUNT(*) AS source_rows
FROM (
    -- paste the exact subquery from your MERGE ... USING ( ... )
    SELECT customer_id, updated_at, status
    FROM raw.customer_cdc
    WHERE ingested_at >= '2026-10-01'
) AS src
GROUP BY customer_id
HAVING COUNT(*) > 1
ORDER BY source_rows DESC;

Run this as a standalone statement, not inside the MERGE. The output is the list of keys that will trip the guard. If the result is empty, the duplicate is coming from somewhere else in the source expression — a join fan-out inside the subquery, for example — and you should count rows per key at each intermediate step until the count diverges.

This is the cheapest diagnostic in the article. It costs one query and tells you whether the problem is real before you spend an hour reading the MERGE text.

The two documented fixes

The MERGE documentation offers two paths to a deterministic statement.

Collapse the source to one row per key. The docs recommend GROUP BY in the source clause so that each target row joins against at most one source row. Their example uses MAX(v) grouped by the key, which makes the chosen value explicit rather than arbitrary.

Make exactly one source row satisfy the matched clause. A merge is deterministic if exactly one source row satisfies a WHEN MATCHED ... THEN UPDATE clause and no other source rows satisfy any WHEN MATCHED clauses. This is the same invariant stated from the other direction: one winner per target row.

Both fixes are the same fix. The source must be deduplicated before the MERGE evaluates it.

The deduplicating CTE pattern

A CTE is a named subquery defined in a WITH clause, usable as a temporary view within the statement that defines it. That makes it a natural place to enforce the one-row-per-key invariant without changing the MERGE’s matched and not-matched logic.

WITH deduped_source AS (
    SELECT
        customer_id,
        updated_at,
        status,
        ROW_NUMBER() OVER (
            PARTITION BY customer_id
            ORDER BY updated_at DESC, ingested_at DESC
        ) AS rn
    FROM raw.customer_cdc
    WHERE ingested_at >= '2026-10-01'
)
MERGE INTO analytics.dim_customer AS tgt
USING (
    SELECT customer_id, updated_at, status
    FROM deduped_source
    WHERE rn = 1
) AS src
ON tgt.customer_id = src.customer_id
WHEN MATCHED THEN UPDATE SET
    tgt.updated_at = src.updated_at,
    tgt.status = src.status
WHEN NOT MATCHED THEN INSERT (customer_id, updated_at, status)
    VALUES (src.customer_id, src.updated_at, src.status);

ROW_NUMBER() returns a unique row number for each row within a window partition, starting at 1 and continuing sequentially. Filtering to rn = 1 leaves exactly one row per customer_id, which is the invariant the MERGE needs.

The ORDER BY inside the window is where you encode your business rule. updated_at DESC picks the most recent version. ingested_at DESC breaks ties by arrival order. If neither column exists in your source, you have a different problem: the source has no defined recency, and no dedup pattern can invent one.

Snowflake’s QUALIFY clause can replace the nested subquery. It filters the results of window functions and is evaluated after window functions are computed, so the ranking and the filter can sit in one SELECT:

SELECT customer_id, updated_at, status
FROM raw.customer_cdc
WHERE ingested_at >= '2026-10-01'
QUALIFY ROW_NUMBER() OVER (
    PARTITION BY customer_id
    ORDER BY updated_at DESC, ingested_at DESC
) = 1;

Either form works. The CTE version is easier to test in isolation because you can run the SELECT without the MERGE and inspect the row count per key.

Why ROW_NUMBER beats GROUP BY with MAX in most CDC sources

The docs’ GROUP BY example is correct and sufficient when the source has one meaningful value column. It becomes awkward when the source has many columns that must stay consistent with each other.

MAX(v) GROUP BY k aggregates each column independently. If updated_at comes from one row and status comes from another, the merged row is a composite that never existed in the source. That is not a Snowflake defect; it is what independent aggregation does. ROW_NUMBER filtered to rank 1 keeps the full payload of a single source row, so the target receives a row that actually existed upstream.

This is a design preference, not a documented requirement. If your source has one value column and no recency ordering, GROUP BY is simpler and the docs already bless it.

The INSERT-side asymmetry that partial fixes miss

Here is the trap. The duplicate-row error fires on the matched branch. Teams fix that branch, ship, and later discover doubled rows in the target for brand-new keys.

The documentation explains why. If the MERGE contains a WHEN NOT MATCHED ... THEN INSERT clause, there are no matching rows in the target, and the source contains duplicate values, then the target gets one copy of the row for each copy in the source. No error. No warning. Just duplicates.

So a dedup applied only to the WHEN MATCHED path is not a fix. It silences the loud failure and leaves the silent one. The dedup must cover the entire source subquery, which is why the CTE pattern above wraps the whole USING clause rather than a single branch.

If you have already shipped a partial fix, check the insert side directly:

SELECT customer_id, COUNT(*) AS target_rows
FROM analytics.dim_customer
GROUP BY customer_id
HAVING COUNT(*) > 1;

Any row here is evidence that the source duplicates reached the target through the insert path.

The tempting one-line fix, and what it costs

You can set ERROR_ON_NONDETERMINISTIC_MERGE = FALSE. The docs say what happens next: one row from among the duplicates is selected to perform the update or delete, and the row selected is not defined.

That is the entire trade. The statement succeeds. The winning row is undefined. The same MERGE can produce different target values on different runs, and nothing in the query text tells you which run you got.

For a pipeline that feeds a dimension table, this converts a loud failure into silent dimension drift. The drift is not reproducible, so it cannot be debugged from the error log. It surfaces later as a report that disagrees with the source system, and the investigation starts from the report rather than from the MERGE.

The parameter is documented and legitimate for cases where any source row is acceptable. If your business rule is genuinely “any of these is fine,” setting it to FALSE is honest. If your business rule is “the latest one wins,” setting it to FALSE is a correctness debt that the next on-call engineer inherits without a ticket.

Price the fix in hours, not sprints

The deduplicating CTE is a few lines inside the source subquery. It does not change the target schema, the matched clauses, or the orchestration. It is reviewable in one sitting by someone who knows the source table’s grain.

The pre-flight count is one query. Run it as a separate statement in the pipeline, or as a dbt test on the source model, and the regression is caught before the MERGE executes rather than after it fails.

The alternative — flipping the session parameter — is a one-line change that costs nothing today and shifts the cost to whoever debugs the drift. That is the maintenance tax this architecture charges: the fix that makes the error go away is cheaper than the fix that makes the data correct, and the difference is paid later by someone who was not in the room.

What to assert before every MERGE

Treat “source rows per join key = 1” as an invariant, not an error to suppress. The diagnostic is the grouped count. The fix is the dedup in the source. The parameter is not a fix.

When the error fires again — and on a CDC-fed source it will — start at the source subquery’s row count per key. The message names DML evaluation, but the defect is in the grain of the query that feeds it.

FAQ

Does this error mean my target table has duplicate keys?

No. The documented condition is multiple source rows matching one target row under a matched update or delete. The target’s key uniqueness is a separate question, and the pre-flight count above checks the source, not the target.

Why did the MERGE work for weeks and then fail?

The source grain changed. A CDC replay, a backfill, or a late-arriving record added a second row for a key that previously had one. The MERGE text did not change; the data feeding it did.

Can I just add DISTINCT to the source?

DISTINCT collapses identical rows. If the two source rows differ in any selected column — a different updated_at, a different status — DISTINCT leaves both, and the MERGE still fails. You need a rule for which row wins, which is what ROW_NUMBER with an ORDER BY provides.

Is setting ERROR_ON_NONDETERMINISTIC_MERGE = FALSE ever correct?

Only when any matching source row is genuinely acceptable for the update. The docs state the selected row is not defined, so if your downstream consumers depend on which value lands, the parameter is not a fix.

Does the dedup need to cover the INSERT branch too?

Yes. Source duplicates with no target match are inserted once per source copy rather than raising an error. A dedup applied only to the matched branch leaves the insert path open to silent duplicates.

Where can I read the exact rules?

The Snowflake MERGE documentation covers the nondeterministic cases, the ERROR_ON_NONDETERMINISTIC_MERGE behavior, the GROUP BY remedy, the deterministic-merge conditions, and the insert-side duplicate behavior. The ROW_NUMBER and QUALIFY pages cover the ranking and filtering mechanics used above.

The Composition Notebook That Isn’t One: Reading the Ghost-and-Pumpkin Cover as a Costume

The shirt shows a rectangle of black-and-white speckle, a dark binding strip down the left edge, and a white ruled label headed COMPOSITION. Inside the label, an outlined ghost and an outlined pumpkin sit on the ruled lines. That is the whole design. It is a printed notebook cover, not a physical notebook, and the retail title calls it a costume.

That distinction is the useful part. A costume is a representation of an object, worn on a body, that asks the viewer to complete the reference. The shirt does not hand you a notebook. It hands you the look of one and trusts you to recognize the genre: the speckled board, the taped spine, the label with the wide rule and the name line. The ghost and pumpkin are not decoration added to a school supply. They are the joke that turns the supply into a Halloween costume.

Read the label closely. The word COMPOSITION is set in the header position, above the ruled field, exactly where a student would write a name or a subject. The ghost and pumpkin occupy that field instead. The design does not print a name. It prints the outline of two figures where a name would go. That is a small, specific visual argument: the notebook is not being used for writing. It is being used as a mask.

Why the speckle matters more than the ghost

The ghost and pumpkin are the readable gag. The speckle is the load-bearing part. A plain black rectangle with a white label would read as a generic folder or a shipping label. The black-and-white fleck is what makes the rectangle read as a composition book — the marbled cover board that generations of students have carried. Remove the speckle and the costume collapses into a blank tag. Keep the speckle and the viewer supplies the rest: the wide-ruled pages, the cardboard cover, the cheap binding that fails in November.

That is a useful thing to notice about visual shorthand in general. The most recognizable part of an object is often not its function but its surface. The composition book is a writing tool, but its identity lives in the cover pattern. The shirt borrows that pattern and skips the tool. What remains is a surface that says school without saying write.

The costume logic of a group shirt

The retail title includes Teacher Group Halloween. That phrase is doing real work. A single person wearing a printed notebook cover is a mild visual pun. A group of people wearing the same printed notebook cover is a costume: the matching set is the joke. The design is built for repetition, not for individual detail. There is no name field filled in, no subject written, no personal variation. Every shirt in the group shows the same blank label with the same ghost and pumpkin. The uniformity is the point.

This is where the shirt differs from a slogan tee. A slogan asks you to read a sentence and agree or laugh. This design asks you to recognize a shape and place yourself inside a category — the teacher, the student, the staff member who is dressed as the thing they hand out. The ghost and pumpkin are the only concession to Halloween. The rest is institutional furniture.

I think that is why the design works better as a group object than as a standalone one. The composition book is a shared reference, not a personal one. Nobody has a favorite composition book. Everybody has used one. The shirt trades on that shared memory without making a claim about any individual wearer.

What the design does not say

It does not say teacher anywhere on the artwork. The word COMPOSITION is the only text on the label, and the ghost and pumpkin are the only figures. The teacher framing comes from the retail title, not from the printed design. That matters if you are trying to read the shirt as a statement about work. It is not a statement about work. It is a picture of a notebook cover with two Halloween shapes on it, and the rest is context supplied by the listing and by whoever wears it.

It also does not claim to be a real notebook. The retail observation is explicit: the teacher Halloween costume is a printed notebook cover, not a physical notebook. The shirt is a representation of an object, not the object itself. That sounds obvious, but it is the kind of distinction that gets lost when a design is described as a composition notebook shirt. The keyword describes the reference, not the material. You are not wearing a notebook. You are wearing a picture of one.

If you want the object itself, the Composition Notebook Costume Teacher Group Halloween shirt is the printed version. The design is a black-and-white speckled cover with a dark binding strip and a white ruled label headed COMPOSITION, containing an outlined ghost and pumpkin. That is what the artwork shows. Everything else — the group costume, the teacher context, the Halloween occasion — is framing around that image.

The maintenance burden of a borrowed surface

Every design that borrows a familiar surface inherits the maintenance work of that surface. The composition book cover is recognizable because it is standardized: the speckle, the label, the binding strip. A printed version has to keep those cues intact or the reference fails. The ghost and pumpkin are the variable part. The cover is the fixed part. If the cover stops reading as a composition book, the costume stops working, and no amount of Halloween decoration fixes it.

That is the tradeoff this shirt makes. It spends its visual budget on fidelity to a cheap school supply and saves its joke for two small outlines inside the label. The result is a design that is legible at a distance and slightly disappointing up close, which is roughly the same experience as looking at an actual composition book. I mean that as a compliment. The shirt is not trying to be more than the thing it depicts.

Editorial note: This publication and Quirky Cotton Collective share an owner. This is not an independent review.

The Root Vegetable That Promises Growth and the Sentence That Doesn’t Say How

The shirt reads, in full capitals, LET’S ROOT FOR EACH OTHER AND WATCH EACH OTHER GROW. Around that sentence sit four smiling root vegetables — a carrot, a radish, a beet, and an onion — drawn with their roots visible in soil. The lettering wraps the group rather than sitting above it, so the sentence and the vegetables share the same frame. That layout is the first thing worth noticing, because it makes the pun do double duty: the vegetables are literally roots, and the sentence is asking you to root for someone. The design does not resolve which meaning is primary. It lets both sit there.

I want to argue that the shirt is more interesting as a piece of writing than as a gardening joke, and that the interesting part is the second clause. “Watch each other grow” sounds warm. It is also a promise about outcomes. The first clause asks for support; the second clause asks for a shared view of the result. Those are different commitments, and the gap between them is where most team slogans quietly fail.

Look at the vegetables again. Each one is smiling. Each one has its root structure drawn below the soil line, which is the visual equivalent of showing your work. The carrot’s taproot, the radish’s small root, the beet’s bulb and the onion’s layered base are all rendered as part of the plant, not hidden. That is a deliberate choice in the artwork: the design could have shown only the leafy tops, the cheerful part above ground. Instead it shows the part that is usually out of sight. The sentence says grow; the drawing says here is what growth looks like from below. I read that as the stronger half of the design.

The phrase itself is a pun on two senses of “root.” One sense is to cheer for someone, to support them. The other is the botanical sense, the underground structure that anchors and feeds the plant. The shirt uses both at once, and the vegetables make the second sense literal. That is a clean piece of visual writing. It does not need a caption to explain itself, which is more than most slogan shirts can say.

But the second clause is where the design gets more complicated than it first appears. “Watch each other grow” is not the same as “support each other.” Watching is passive; growth is an outcome. Put together, the sentence asks for a relationship in which support is offered and results are observed. That is a reasonable thing to want from a garden, where growth is slow and mostly out of your hands. It is a harder thing to promise at work, where growth is measured, reviewed, and often used as a reason to ask for more.

This is the part I keep coming back to. The shirt is sold as a gardening and mutual-growth pun, and the retail description frames it that way. The artwork supports that reading. But the sentence also works as a small statement about what a team owes its members, and that reading is less comfortable. “Let’s root for each other” is a commitment you can keep. “Watch each other grow” is a commitment to a result, and results are not evenly distributed. A slogan that promises growth can become a slogan that demands it.

I do not think the shirt is making that argument on purpose. The design is cheerful, the vegetables are smiling, and the tone is light. My reading is an interpretation, not a claim about the designer’s intent. But the words are the words, and the second clause is doing more work than the first. That is what makes the shirt worth a second look rather than a glance.

The layout reinforces the point. The sentence surrounds the vegetables rather than sitting above them, so the words frame the plants. The vegetables are inside the promise. That is a small visual argument: the growth being watched is the growth of the things being rooted for. The design does not separate the supporter from the supported. They occupy the same space.

If you are the kind of reader who spends your days looking at diagrams and error messages, the shirt has a familiar shape. It is a sentence with two clauses, a visual key, and an implied relationship between them. The first clause is the input; the second clause is the expected output. The vegetables are the system under observation. The design does not show you the mechanism, only the promise. That is fine for a shirt. It is less fine for a team charter, which is why the shirt is a better object to think with than to copy.

The Let’s Root For Each Other shirt is listed under the Quirky Cotton Collective brand. The design is a standard t-shirt with the sentence and the four vegetables printed on it. I am describing the artwork as I observed it on the listing, not a wearing experience. The shirt is an object with a sentence on it, and the sentence is the thing worth reading.

What I like about the design is that it does not overexplain. The pun is there for anyone who wants it, and the vegetables carry the botanical sense without a caption. The sentence is short enough to read in a glance and long enough to have a second clause that changes the meaning. That is a better ratio than most slogan shirts manage.

What I would change, if I were designing it, is nothing about the artwork. The vegetables are drawn with their roots visible, which is the right choice. The sentence is set in full capitals, which gives it a declarative tone. The only thing I would add is a period, or maybe a line break, to make the second clause land harder. But that is a small quibble, and the design works without it.

The useful argument here is not that the shirt is good or bad. It is that the shirt is a small example of a common pattern: a slogan that promises support and then quietly promises results. The first promise is easy to keep. The second is not. If you are going to wear a sentence about mutual growth, it is worth knowing which clause you are actually signing up for. The shirt does not answer that question. It just puts the words around the vegetables and lets you decide.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Loudest Possible ‘meh.’: Reading the Large Bold Lowercase Typography on the Quirky Cotton Collective Shirt

Editorial note: This publication and Quirky Cotton Collective share an owner.

The shirt does not whisper. The native garment preview shows large bold white lowercase meh. lettering on a dark shirt, and the first thing to notice is the mismatch between the word and the volume. Meh is a shrug. The type is a shout. That contradiction is the entire design, and it is worth reading closely because it is doing something more specific than printing a mood on cotton.

There is no animal illustration. No mascot, no secondary joke, no decorative frame. The word sits alone in white against a dark ground, set in a heavy lowercase face with a period at the end. The period is the detail that changes the register. Without it, meh is a sound. With it, meh. is a verdict — a short declarative sentence that has already finished deliberating.

Lowercase Is the Argument

Capital letters would make this a slogan. MEH. reads like a brand campaign or a bumper sticker, something designed to be repeated. Lowercase does the opposite. It reads like a text message, a Slack reaction, a note left on a kitchen counter. The lowercase form is the visual equivalent of a flat tone of voice, and the bold weight is the only thing keeping it from disappearing entirely.

That combination — heavy stroke, small letterform — is what makes the shirt legible across a room while still sounding unbothered. The design wants to be seen and does not want to be asked follow-up questions. I read that as intentional. The word is dismissive; the typography refuses to be dismissed. The shirt is not expressing indifference so much as announcing it at a volume that makes indifference impossible to ignore.

This is a common move in text-only apparel, and it usually fails. A single word in a bold font is not automatically funny. What saves this one is the period and the lowercase together. They give the word a grammar. Meh. is a complete thought. It has a subject, an implied verb, and a conclusion, and the conclusion is that the conversation is over.

What the Shirt Is Not Saying

The retail title includes the words introvert and dry humor, and it would be easy to treat those as descriptions of the design. They are not. They are search terms attached to a listing. The artwork itself contains one word and one punctuation mark. Nothing in the preview shows a person, a social situation, or a joke about being alone in a crowd.

That distinction matters because the shirt is more interesting than its metadata. An introvert joke usually depends on a contrast — the loud party, the quiet corner, the battery that drains. This design has no scene. It is a bare statement of affect, and it works because it does not explain itself. The viewer supplies the context. The shirt just supplies the verdict.

I would not describe it as sarcastic, either. Sarcasm implies a target and a tone of voice. Meh. has neither. It is closer to a boundary marker than a punchline. It says: I have considered the matter and my position is that I do not have a position. That is a useful thing to be able to communicate without speaking, which is probably why the phrase has outlived most of the slang it arrived with.

The Period as a Design Decision

Punctuation on a t-shirt is usually an afterthought. Here it is the load-bearing element. Remove the period and the shirt becomes a noise. Keep it and the shirt becomes a sentence. The period is what turns a vague feeling into a finished statement, and finished statements are rarer and more valuable than feelings.

There is also a practical reading. A period at the end of a short message is often read as cold or final in casual digital writing. That is exactly the effect the shirt is going for. It is not a friendly meh. It is a meh that has closed the ticket. For readers who spend their days writing terse status updates and closing incidents, the visual grammar will be familiar. The shirt is a one-word postmortem with no action items.

Why This Works Better Than a Longer Joke

Most funny shirts fail because they over-explain. They set up a premise, deliver a punchline, and add a small illustration to make sure you got it. The result is a design that has to be read in full before it means anything, which means it only works at close range and only once.

This shirt works at a distance. The word is large enough to register from across a room, and the meaning is simple enough that the viewer does not need to solve it. That is a different kind of design constraint. It has to be bold enough to be seen and short enough to be absorbed in a glance, and it has to survive being seen every day without becoming annoying. A single lowercase word with a period is about as close to that brief as a text-only shirt can get.

The absence of an animal or a secondary graphic is part of the restraint. There is nothing to distract from the word, and nothing to date the design. A cartoon would tie it to a moment. A typeface and a period do not.

The Object Itself

The shirt is listed as the Meh Funny Sarcastic Saying Introvert Dry Humor tee from Quirky Cotton Collective. The preview shows the standard t-shirt cut with the white lowercase lettering centered on the chest. I have not worn it, washed it, or tested the print, so I cannot speak to how the white holds up against a dark ground after repeated laundering. What I can say is that the design is legible in the preview and that the composition is simple enough to survive the usual print variations without losing its point.

The shirt is not a cure for anything and it is not trying to be. It is a piece of clothing that says one thing clearly. The thing it says is that the wearer has reached a conclusion, and the conclusion is that further discussion is not required. That is a narrow message, but it is a complete one, and the typography is doing the work of making it land.

The Maintenance Burden of a One-Word Shirt

Every design choice creates a new obligation. The bold lowercase word is easy to read, which means it is also easy to misread as rude. The period makes the statement final, which means it does not leave room for the wearer to soften it in person. The absence of a scene means the viewer has to supply the context, and some viewers will supply the wrong one.

That is the tradeoff. The shirt is efficient, and efficiency in communication always shifts the interpretive work onto the audience. A longer joke would do more of that work for you. This one does not. It hands the viewer a word and a full stop and lets them decide what it means. Most of the time that will be fine. Occasionally it will not be, and the wearer will have to explain a shirt that was designed not to require explanation.

That is the cost of wearing a verdict. It is a small cost, and the design is honest about it. The word is meh. The period is doing its job. The rest is up to whoever is reading it.

The Caution Triangle That Says Nothing About the Hazard: Reading the ‘Not Friendly Do Not Touch’ Shirt

The shirt reads NOT FRIENDLY in warning-sign lettering, with DO NOT TOUCH beneath it. To the left sits a yellow caution triangle. Inside the triangle, a hand is crossed out. That is the whole design. No fine print, no hazard code, no contact number.

I keep coming back to the triangle. A caution triangle is a promise that the hazard has been assessed. Someone looked at the situation, decided it was dangerous, and chose a symbol that would make a stranger slow down. The shirt borrows that promise and then declines to honor it. The hazard is never named. The crossed-out hand is the only clue, and it tells you what not to do rather than what will happen if you do it.

That is not a flaw in the joke. It is the joke. But it is also a useful thing to stare at, because engineers spend a lot of time producing warnings that look exactly like this one: confident, standardized, and silent on the actual failure mode.

What the artwork actually shows

The lettering is set in the visual grammar of industrial signage: all caps, heavy weight, stacked lines, the word NOT carrying the emphasis. The triangle is yellow with a dark border, the conventional caution color. The hand inside is a simple silhouette, crossed through with a diagonal bar. Nothing about the design is subtle. It is meant to be read at a distance, the way a real warning label is.

What it does not show is any of the things a real warning label carries. No signal word beyond the headline. No statement of the hazard. No consequence. No instruction beyond the prohibition. Compare it to an actual caution sign on a piece of equipment and the absence is loud. The sign on the shirt is all headline and no body copy.

I read the design as a boundary statement wearing safety-orange clothing. The wearer is not describing a hazard in the environment. The wearer is the hazard, or at least is claiming the right to be left alone. The crossed-out hand is doing the work of a 403 Forbidden response: the resource exists, the request is understood, and the answer is no. The triangle is decoration borrowed from a world where the no comes with an explanation.

The difference between a slogan and a usable promise

This is where the shirt becomes more than a joke to me. A usable warning tells you three things: what the danger is, what happens if you ignore it, and what to do instead. A slogan tells you one thing and lets you fill in the rest. The shirt is a slogan. It is funny precisely because it withholds the part that would make it useful.

I have written a lot of alerts in my life, and the bad ones fail the same way. WARNING: pipeline degraded is a caution triangle with no hazard inside it. It tells you something is wrong, refuses to say what, and leaves the on-call engineer to reconstruct the danger from logs at three in the morning. The alert fires. The triangle is yellow. The hand is crossed out. Nobody knows why.

The good alert names the thing. consumer_lag on topic orders.v3 exceeded 500k for 12m is not elegant, but it contains the hazard, the threshold, and the duration. You can act on it without a phone call. The shirt, by contrast, is the alert that pages you and then says not friendly.

There is a place for the terse version. A boundary does not always owe you an explanation. Do not touch is a complete sentence, and the person wearing it is not running a help desk. The mistake is assuming that because the short form works socially, it works operationally. In a runbook, the short form is a trap. On a shirt, it is the point.

Why the crossed-out hand is the honest part

The triangle is borrowed authority. The crossed-out hand is the actual content. It is a prohibition with a clear subject: the hand. You do not need to know what the hazard is to understand that the hand should not proceed. That is a narrower promise than a real warning makes, but it is one the design can actually keep.

I think that is why the shirt works as an object rather than just a caption. The visual hierarchy puts the caution symbol first, the words second, and the prohibition last, but the meaning runs the other way. The prohibition is the only part that survives scrutiny. Everything above it is set dressing.

There is a lesson in that for anyone who writes documentation. The part of your warning that will still be true after the incident is the part that names the action. Do not run the migration during peak hours outlives caution: risky change every time. The shirt accidentally demonstrates the principle by stripping away everything except the prohibition and letting the triangle look faintly ridiculous without it.

Reading it as an off-duty object

I am not going to pretend this is a security control or a piece of engineering communication. It is a shirt. The Not Friendly Do Not Touch warning sign shirt is sold by Quirky Cotton Collective, and the design is exactly what the listing shows: the lettering, the yellow triangle, the crossed-out hand. The humor depends on the mismatch between the formal language of safety signage and the informal, personal message underneath.

That mismatch is familiar to anyone who has worked in a shared on-call rotation. The formal apparatus of incident response — severity levels, escalation policies, status pages — sits on top of a very human set of preferences about when to be interrupted. The shirt compresses that tension into a single image. It is the visual equivalent of a status page that says investigating and nothing else.

I would not read it as a statement about introversion in any clinical or scientific sense. The listing calls it an introvert shirt, and the design supports a reading of personal space and low tolerance for unsolicited contact. That is an interpretation of the artwork, not a claim about personality types. The shirt does not cure anything, improve anything, or demonstrate any result. It is a joke in safety colors.

The maintenance burden of a warning that explains nothing

Here is the part I keep thinking about. A warning that withholds the hazard does not eliminate the need for explanation. It relocates it. Someone still has to answer the question why not, and in the absence of a printed answer, that someone is the person wearing the shirt, or the person reading the alert, or the engineer woken up by the page.

That is the tradeoff the design makes, and it is the same tradeoff a lot of terse operational tooling makes. The short message is cheap to produce and expensive to consume. The long message is expensive to write and cheap to act on. The shirt chooses cheap to produce, which is correct for a shirt and wrong for a runbook.

So the useful thing to take away is not be clearer. Everyone already knows that. It is that the caution triangle is a promise of context, and if you borrow it without supplying the context, you have not made a warning. You have made a slogan with a yellow border. The shirt knows this. That is why the hand is crossed out and the hazard is not named. It is the rare warning label that is honest about being decorative.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Period After ‘meh’: Reading the Smallest Possible Objection on the Quirky Cotton Collective Shirt

The native garment preview shows a dark shirt with very small, centered lowercase meh. lettering. No animal illustration is present. That is the whole design. The scale is the argument.

Most slogan shirts shout. This one whispers a punctuation mark. The word meh already carries a shrug; the period after it turns the shrug into a full stop. It is not a question, not an exclamation, not an ellipsis trailing off into possibility. It is a sentence that has been considered and declined. On a dark background, in lowercase, at a size that requires a second look, the shirt makes indifference look deliberate rather than lazy.

That distinction matters for anyone who has sat through a planning meeting where the loudest opinion won. The small meh. is the visual equivalent of the engineer who says nothing for forty minutes and then, quietly, names the failure mode everyone else missed. It is not apathy. It is a boundary drawn in typography.

Why the period does the work

Strip the period and you have meh — an interjection, a verbal shrug, a word that floats. Add the period and you have a declarative sentence. The period is the smallest unit of closure in written English, and here it is doing the heaviest lifting. It says: I have reviewed the proposal, the roadmap, the offsite agenda, and the answer is meh. Not no. Not yes. A settled, punctuated indifference.

I read the lowercase as part of the same move. Capital letters assert. Lowercase mutters. The word is already small on the shirt; setting it in lowercase keeps the whole gesture consistent. Nothing about this design wants to be quoted in a meeting. It wants to be noticed by the one person at the table who also has nothing to add and is fine with that.

The absence of an animal illustration is worth naming because the retail title includes the word introvert, and introvert-themed shirts often lean on a mascot — a cat, an owl, a hedgehog with a book. This one does not. The only image is the word. That restraint is the design. A mascot would soften the statement into a personality type; the bare typography keeps it a position.

The difference between a slogan and a usable promise

Technical teams spend a lot of time writing things down: runbooks, incident postmortems, architecture decision records, on-call handoff notes. The good ones share a quality with this shirt. They are short, they are lowercase in spirit, and they end with a period. They do not promise transformation. They state a condition and stop.

A slogan says Move fast and break things. A usable promise says The rollback takes four minutes. The first is a mood; the second is a contract. The small meh. sits closer to the second category than it first appears. It is not a motivational statement. It is a report on a state of affairs, delivered without elaboration. Anyone who has written a postmortem knows the value of that tone. The incident was caused by a missing index. The fix is deployed. meh.

That is also why the shirt works better as an off-duty object than as a work uniform. Worn to a conference, it reads as a personality. Worn to a retro, it reads as a verdict. The design does not control which. It just supplies the punctuation.

What the small scale asks of the viewer

There is a practical consequence to the size. Very small centered lettering on a dark shirt is not legible from across a room. It rewards proximity. You have to be close enough to read it, which means the shirt is not broadcasting to a crowd; it is speaking to whoever is already in conversation. That is a different social contract from a large bold slogan, and it fits the introvert framing in the retail title without needing to illustrate it.

I would not overclaim what the shirt does. It does not make anyone calmer, funnier, or more employable. It is a piece of printed cotton with a word and a period on it. But the choice to keep the type small and centered, rather than scaling it up to fill the chest, is a design decision with a readable meaning: the statement is for the wearer and the people already paying attention, not for the room.

If you want the object itself, the listing is here: Meh Funny Sarcastic Introvert Minimalist Saying. The design is what the preview shows — small, centered, lowercase, punctuated. Nothing more elaborate should be inferred from the retail title.

The maintenance burden of understatement

Every minimal design creates a small ongoing tax. A shirt with one tiny word invites the question what does it say? from anyone more than three feet away. You will answer it. You will explain that it says meh, with a period, and that the period is the point, and you will watch the questioner decide whether you are being dry or difficult. That is the cost of wearing a sentence that refuses to elaborate. The shirt does not carry the explanation; you do.

That is also its integrity. A louder shirt would do the explaining for you. This one hands the burden back. Whether that is a feature or a bug depends on how much you enjoy being asked to defend a punctuation mark — which is, in its own way, a very meh. position to take.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Doorbell Notification That Fires on the Wrong Subject: Reading the ‘There Is Motion at Your Front Door’ Cat Shirt

The banner is the first thing you read, because it is the first thing the design wants you to read: a white rounded rectangle, a small bell icon at the left, and the sentence There is motion at your front door. It is set in the visual grammar of a phone notification — the kind of card that slides down from the top of a lock screen at an inconvenient hour. Below the banner, inside a circular frame, is the evidence: a green-tinted doorbell-camera view of an orange tabby, wide-eyed, pressed so close to the lens that its face fills the circle. Porch siding and a light fixture sit behind it, out of focus.

The joke is not that a cat is at the door. The joke is that the notification is technically correct and operationally useless. Motion was detected. The system did its job. The human who receives the alert learns nothing about what kind of motion, whose motion, or whether the motion warrants getting up. The cat is the payload, and the payload is a face.

That is a familiar failure mode to anyone who has ever tuned an alerting rule. A threshold fires. A page goes out. The on-call engineer opens the dashboard and finds a single wide-eyed process consuming 4% CPU. The alert was not wrong. It was underspecified. The shirt prints the underspecification as a punchline: the camera saw something, the notification said something, and the gap between those two facts is where the humor lives.

What the artwork actually shows

The design is built from two stacked elements. The upper element is a notification banner: white, rounded corners, a bell glyph, and the sentence in a plain sans-serif. The lower element is a circular camera feed, tinted green in the way cheap night-vision or doorbell-camera footage tends to be tinted, with the tabby’s face occupying most of the frame. The porch siding runs horizontally behind the cat; a light source sits to one side. The composition is deliberately claustrophobic — the cat is too close, the frame is too tight, and the banner above is too calm.

I read the green tint as a reference to the infrared or low-light mode of a consumer doorbell camera, not as a claim about any specific product. The banner’s wording — There is motion at your front door — is the generic phrasing such devices use, and the design leans on that genericity. It does not name a brand. It does not need to. The sentence is the sentence.

The shirt is listed by Quirky Cotton Collective under the title There Is Motion At Your Front Door Funny Cat Doorbell Meme, and the artwork is available on a standard t-shirt. If you want to see the exact print — the bell, the rounded banner, the green circle, the tabby — the listing is here: There Is Motion At Your Front Door shirt. The design is the argument; the garment is the medium.

The notification is a contract, and this one is vague

Every alert is a small promise: if this fires, something you care about has changed. The doorbell notification in the artwork makes a narrower promise: something moved. That is true and nearly content-free. The cat is the proof that the promise was kept and the information was not delivered.

In production systems, this is the difference between a symptom-based alert and a cause-based alert. A symptom alert says latency is up. A cause alert says the replica is lagging because the WAL receiver is stuck. The first one pages you; the second one tells you what to do. The shirt’s banner is a symptom alert. The cat is the dashboard you open afterward, hoping for a cause, and finding a face.

The humor works because the cat is not a failure. The cat is adorable. The system worked exactly as designed. The design just did not specify what motion meant, and so the human is left to interpret. That is the maintenance tax of a vague alert: it does not eliminate the work, it relocates the work to the person who receives it.

Why the cat, and not a burglar

A doorbell camera that alerts on a person at the door is doing its job. A doorbell camera that alerts on a cat is doing its job and missing the point. The cat is the wrong subject for the notification, and that mismatch is the entire visual joke. The banner says motion; the frame shows cat; the viewer supplies the missing word: again.

There is a version of this shirt that would be mean — a cat framed as a nuisance, a notification framed as a failure. This design is not that. The tabby is wide-eyed and close, not menacing. The green tint is the only thing that makes it look like surveillance footage, and even that reads as affectionate parody. The joke is on the notification, not on the animal.

That distinction matters for how the shirt reads in public. A shirt that says there is motion at your front door with a cat underneath is a shirt about the gap between what a system reports and what a person means. It is not a shirt about security. It is a shirt about the moment you check your phone expecting information and receive a portrait instead.

The banner as a unit of interface

The white rounded rectangle is doing more work than it looks like. It is the shape of a push notification on both major mobile platforms, and it carries a bell icon, which is the universal glyph for this is an alert. The sentence inside is capitalized like a sentence, not like a headline. It reads as system copy, not as a slogan. That is why the joke lands: the design borrows the authority of an interface element and then undercuts it with the cat.

If the same sentence were set in a bold display face across the chest, it would read as a statement. Set in a notification card, it reads as a report. The report is accurate. The report is also insufficient. The shirt is a small essay about the difference between those two things, printed in two colors and a green tint.

What the shirt is not

It is not a claim about any specific doorbell product, and it is not evidence that doorbell cameras are bad at their jobs. It is a meme design that uses the visual language of a consumer alert to set up a punchline about a cat. The cat is the subject; the notification is the straight man. I would not read it as a security critique, and I would not read it as a product endorsement. It is a joke about underspecification, and it works because the underspecification is real.

It is also not a shirt that requires you to own a doorbell camera or a cat. The joke is legible from the artwork alone: banner says motion, circle shows cat, brain supplies the rest. That is a efficient design. It does not ask you to know a backstory. It asks you to recognize a notification card and a cat face, which is most of the population.

The maintenance burden of a good joke

The shirt’s argument is that a vague alert creates work for the person who receives it. The shirt’s own maintenance burden is lighter: it is a static image, it does not need tuning, and it will not page anyone at 3 a.m. The only thing it asks is that you find the gap between motion detected and cat detected funny. If you do, the design has done its job. If you do not, the design has still done its job, because the notification was accurate.

That is the tradeoff of any joke built on a real interface pattern: it dates. Notification cards will change shape, bell icons will be redesigned, and the green tint of cheap camera footage will eventually read as a period detail. The shirt will still be legible as a joke about a cat at a door, but the specific grammar it borrows will drift. That is not a flaw. It is the cost of using a live visual language instead of an invented one.

For now, the grammar is current, the cat is close, and the banner is calm. The motion was detected. The notification was sent. The human is left to decide what to do about it, which is the same position the shirt puts you in: you have been told something moved, and you have been shown a face, and the rest is interpretation.

Disclosure: This publication and Quirky Cotton Collective share an owner.

The Dashed Circle and the Solid Ball: Reading the ‘I Had Potential’ Ramp Diagram

The shirt shows a white curved ramp descending from left to right. At the upper left ledge there is a dashed empty circle. At the lower right flat ledge there is a solid white ball. Above both, in capitals: I HAD POTENTIAL.

That is the whole design. No arrows, no equations, no caption explaining the physics. The joke depends on the reader completing the diagram in their head, and the completion is not flattering.

Most slogan shirts ask you to agree with a sentence. This one asks you to solve a small visual problem, and the solution is that the potential is gone. The dashed circle marks where the ball used to be. The solid ball marks where it ended up. The ramp is the distance between the two, and the shirt does not say whether the trip was voluntary.

What the diagram actually shows

The dashed circle is the key. A dashed outline conventionally indicates something absent, projected, or no longer present. Here it sits on the high ledge, the position of maximum gravitational potential energy in a textbook ramp problem. The solid ball rests at the bottom, where that potential has been converted into motion and then into rest.

The shirt does not print the word energy. It prints the word potential, which in physics is a stored quantity and in ordinary speech is a promise about the future. The drawing collapses the two meanings: the stored quantity has been spent, and the promise has not been kept.

I am reading the design, not asserting a scientific claim. The ramp is curved rather than a straight inclined plane, which makes it look more like a skate park or a slide than a frictionless physics diagram. That curve matters. A straight diagonal would read as a textbook exercise. A curved ramp reads as something a person could have slid down, which makes the empty circle at the top feel more like a missed opportunity than a calculated result.

Why the minimalist treatment works

The shirt uses one color of ink for the design, capitals for the text, and two simple shapes for the diagram. There is no distressed texture, no faux-vintage badge, no additional punchline. The restraint is the point. A louder version of this joke would add a caption like “…and then gravity happened,” which would explain the diagram and ruin it.

Minimalism also changes who the shirt is for. A dense graphic tee announces its joke to everyone in the room. This one is legible at conversational distance but does not perform. The text is large enough to read, the diagram is small enough to require a second look, and the two together reward the person who bothers to look twice.

That is a useful distinction for anyone who has ever worn a technical joke shirt to a workplace where the joke landed with exactly one colleague and confused everyone else. This design has a lower social cost. If nobody gets it, it reads as a plain white graphic on a shirt. If somebody gets it, the conversation is short and specific.

The difference between a slogan and a usable promise

The phrase I had potential is past tense. That tense does most of the work. A present-tense version, I have potential, would be a motivational statement. The past tense turns it into a eulogy for a quantity that has already been converted into something else.

In work culture, “potential” is a word managers use about people. It appears in performance reviews, promotion calendars, and succession plans. It is almost always forward-looking and almost never quantified. The shirt takes that word and puts it in the past tense, next to a diagram that shows exactly where the stored value went.

That is the argument I find in the design: a promise without a mechanism is just a slogan. The ramp has a mechanism. The ball has a position. The dashed circle has an absence. The shirt is funny because it treats a vague compliment as a physical system with a measurable outcome.

I would not push this into a lesson about engineering management. The shirt does not know anything about your sprint velocity or your retention metrics. But it does demonstrate, in two shapes and four words, the difference between a claim and a diagram. A claim can be repeated indefinitely. A diagram has to resolve.

Who the shirt is actually for

The I Had Potential shirt is listed by Quirky Cotton Collective as a standard t-shirt with the title “I Had Potential Funny Physics Pun Sarcastic Minimalist Quote.” The retail title uses the words physics, pun, sarcastic, and minimalist. The artwork itself uses none of those words. It trusts the viewer to supply them.

That gap between the retail description and the printed design is worth noticing. The listing has to explain the joke for search purposes. The shirt does not. The shirt assumes a reader who recognizes a ramp, a ball, and a dashed outline, and who understands that the dashed outline is the sad part.

For a technical audience, that recognition is cheap. Anyone who has drawn a free-body diagram or debugged a system that looked fine on paper knows the feeling of a quantity that was supposed to be conserved and wasn’t. The shirt does not make that analogy explicit, and I am not going to force it. It is a diagram joke. It works because the diagram is correct enough to be legible and incomplete enough to be funny.

What the shirt does not do

It does not cure anything, improve anything, or signal expertise. It is a piece of printed cotton with a drawing on it. The design is legible in the supplied retail image, and the observation date establishes the object without establishing a wearing experience, a review, or a publication history.

I have not worn it, tested it, or measured its fabric. I am reading the artwork as printed. The white design elements give the diagram enough contrast to read at arm’s length, and the capitals are spaced widely enough that the phrase does not crowd the ramp. Those are observations from the image, not claims about how the shirt feels after a wash.

The one thing the design does well is leave the ending unresolved. The ball is at the bottom, but the dashed circle is still there at the top. The shirt does not say the potential was wasted. It says the potential was had, which is a stranger and more accurate way of putting it.

Editorial note: This publication and Quirky Cotton Collective share an owner. This is not an independent review.