NULL rendering

An empty cell is never empty. In SQL, an absent value (NULL) is categorically different from an empty string ('') or a zero — and mistaking one for the other has cost data teams more hours than any other boring bug. SeeKi renders a NULL cell with a diagonal hatched pattern. You cannot scroll past one and think the cell is blank.

The hatched NULL cell. Pattern is baked into --sk-hatch; the label is italicised and subtle so the pattern does the talking.

In context

Row 4820 is still driving — returned_at is genuinely absent. Row 4818 has an empty notes string (legitimately blank) but a null rating — the two render differently, so the distinction survives.

NULL vs empty string vs zero

NULL (absent)

NULL

The value was never set, or was set to SQL NULL.

Empty string

The column is a string and is equal to "". Cell is blank, no hatching.

Zero (numeric)

0

A genuine numeric zero. Renders as 0, right-aligned with other numbers.

Whitespace

· · ·

A string of spaces. Renders as-is; mid-dots are shown here only for illustration.

The pattern, defined

The hatched fill is a single CSS variable (--sk-hatch) so the design can evolve in one place and every NULL cell, null badge, and null swatch follows:

/* assets/css/site.css */
--sk-hatch: repeating-linear-gradient(
  135deg,
  transparent 0 4px,
  oklch(70% 0.020 240 / 0.30) 4px 5px
);

The 135° angle, 4px + 1px rhythm, and 30% opacity are intentional: visible enough to never miss, subtle enough that a column full of NULLs doesn’t vibrate. In dark mode the lightness flips but the geometry stays the same — so screenshots across themes still read as “the same pattern.”

As a badge

When a NULL appears inline in prose or outside a table, SeeKi uses the badge form with the same hatch:

A row where the operator left the note field blank looks like NULL in a rendered report, not a bare blank.

Filtering for NULL

In a column’s menu, the filter input accepts these as the “only rows where this is null” predicate:

InputMatches
is nullrows where the cell is NULL
is not nullrows where the cell has any value (including empty string)
null (bare)also matches is null — common-case shortcut

Why hatch, not colour?

Colour would compete with the semantic palette — accent orange, yes green, no red. A pattern is colour-independent: it survives the dark theme, the light theme, a printed report, and a monochrome screenshot. It is the single visual detail the brief (.impeccable.md) calls out as “do not replace.”

Related