heyrian.dev / the foundation

A familiar place
to think in patterns.

Quiet pages. Clear examples. Room to understand.
The visual language of heyrian.

Brand / The mark

One idea, two scales.

A layered folded-knot for the header, the tab, and wherever heyrian travels.

Header lockup

heyrian.dev
BrandMark + wordmark

Favicon at working sizes

16×16
32×32
64×64

The same connected geometry stays recognizable when it has only 16 pixels to work with.

Depth studies

Three ways to make the mark feel dimensional.

Stack is the active mark; Facet and Fold remain available as explorations.

01 / Facet

Cut planes

Shadowed faces make the mark feel machined and precise.

facet / front + side

02 / Stack

Active mark

Quiet extrusion

Offset layers give the existing geometry a subtle physical lift.

stack / back + face

03 / Fold

Ribbon turn

Overlapping strips suggest a continuous form turning through space.

fold / overlap + shadow

01 / Foundations

Color, type, and a little breathing room.

Neutral by default. Color has a job.

Canvas

--surface

The page beneath everything.

Raised

--surface-raised

Cards and open disclosures.

Subtle

--surface-sunken

Grouped controls and quiet areas.

Border

--border

Structure without visual weight.

Ink

--ink

Headings and primary content.

Language

--color-primary

An accent that follows your choice.

Typography

Start with the idea.Lexend · headings
Then make it concrete, one example at a time.Inter · reading
stack.push(next)System mono · code

Spacing & shape

4
8
12
16
24
32
sm
lg
xl
pill

02 / Components

Small pieces, shared everywhere.

Native controls with a consistent feel.

A language is a lens

The idea stays the same. The code and accent follow the language you choose.

Showing TypeScript in the example below.

Actions with a clear hierarchy

Filled for the main action, a soft accent for emphasis, and an outline for quieter choices.

Useful labels

PatternData structureConceptTrade-off
TypeScriptGoPython
Room for the extra detailOpen a disclosure

Keep the first explanation focused. An implementation detail or a longer example can sit one step deeper, ready when the reader needs it.

03 / Reading

An idea beside its implementation.

Stack

The last thing in is the first thing out.

Think about a history of changes. Add a new change to the top. When you undo, take the most recent change off first.

That order is what makes a stack a stack: last in, first out. The container and method names can change from one language to another.

  • push adds an item to the top.
  • pop removes and returns the top item.
  • An empty stack needs a deliberate response.

A short layout specimen for the lessons to come.

stack.ts
const history: string[] = [];

history.push('First change');
history.push('Latest change');

// The most recent item comes off first.
const latest = history.pop();
console.log(latest); // Latest change

04 / Workflow surfaces

Give the canvas the room.

Composition lives in the rails. Thinking lives in the path.

A sidebar can hold the vocabulary and the selected-node decisions. The canvas should stay wide enough for relationships to be read at a glance.

05 / Visualizations

Make the structure visible.

Data, relationships, and the steps between them.

Inspect a value. Follow a connection. Step through a process. Each view makes a different part of the idea visible.

Values & structuresPatterns & algorithmsConcepts & techniques

Memory has a shape

Select a cell to inspect it. In a linked list, follow the pointer to discover the logical order.

Adjacent values · address = base + index × 4 bytes

index 0 at 0x100 holds 12.

Schematic addresses, not a runtime memory capture. The array models four adjacent 32-bit values; linked nodes are shown in address order. Object headers, padding, and allocator details are omitted.

A tree, two ways through

Step through a traversal and watch the visit order change. Both use the same tree.

Ready to visit the root. 0 / 7

View connections as text
  • A: Root
  • B
  • C
  • D
  • E
  • F
  • G
  • A points to B
  • B points to D
  • B points to E
  • A points to C
  • C points to F
  • C points to G
Visit order
  1. Pending A
  2. Pending B
  3. Pending C
  4. Pending D
  5. Pending E
  6. Pending F
  7. Pending G
Ordered binary-tree specimen. Breadth-first visits by level; depth-first uses preorder, left child before right. Scroll the diagram horizontally on smaller screens.

Benchmarks with context

Compare values on a shared scale. Select a bar to inspect the reported value.

Sample dataMedian batch time · millisecondsLower is better

ms · zero baseline

Array-backed stack · push · 1.8 ms

What accompanies a real benchmark?

Record the source code and revision, language and runtime version, hardware, input size, warmup, sample count, summary statistic, and spread. Keep the raw measurements alongside the lesson.

Illustrative fixture — these numbers were invented to demonstrate the chart, not measured. No performance conclusion should be drawn from this example.

How work grows

Change the input range or isolate a curve. Points use their actual input sizes on a linear axis.

Growth of three mathematical functionsInput size (n) on the horizontal axis; Modelled work on the vertical axis. Exact values follow in the data table.Modelled work0125250375500016324864log₂ n: 1, 0log₂ n: 2, 1log₂ n: 4, 2log₂ n: 8, 3log₂ n: 16, 4log₂ n: 32, 5log₂ n: 64, 6n: 1, 1n: 2, 2n: 4, 4n: 8, 8n: 16, 16n: 32, 32n: 64, 64n log₂ n: 1, 0n log₂ n: 2, 2n log₂ n: 4, 8n log₂ n: 8, 24n log₂ n: 16, 64n log₂ n: 32, 160n log₂ n: 64, 384Input size (n)
  • log₂ n
  • n
  • n log₂ n
View data table
Growth of three mathematical functions — exact plotted values
SeriesInput size (n)Modelled work
log₂ n10
log₂ n21
log₂ n42
log₂ n83
log₂ n164
log₂ n325
log₂ n646
n11
n22
n44
n88
n1616
n3232
n6464
n log₂ n10
n log₂ n22
n log₂ n48
n log₂ n824
n log₂ n1664
n log₂ n32160
n log₂ n64384
Mathematical models, not timings or exact algorithmic operation counts. Curves show log₂(n), n, and n·log₂(n) with a coefficient of one; chart scales adjust to the visible series.

Ideas connect to other ideas

Find a concept or select a node to read its relationships. Arrows carry a specific meaning, rather than implying every connection is a prerequisite.

9 concepts
Stack

Last in, first out. The behaviour can be implemented with different containers.

  • Array can implement Stack
  • Linked list can implement Stack
  • Stack supports Depth-first search
View connections as text
  • Array: An indexed sequence. An array-backed container can provide stack operations.
  • Linked list: Nodes connect through references. Adding and removing at the head can implement a stack.
  • Stack: Last in, first out. The behaviour can be implemented with different containers.
  • Depth-first search: Explore one branch before returning to another. The pending work can live in an explicit stack or the call stack.
  • Tree: A hierarchy of nodes. Depth-first search is one way to visit its nodes.
  • Backtracking: Explore a candidate, undo a choice, then try the next. Depth-first exploration often supplies this structure.
  • Recursion: A function solves smaller instances by calling itself. A recursive DFS is one example.
  • Factory: Move object creation behind a function or object so callers do not need to construct each concrete implementation themselves.
  • Polymorphism: Work through a shared contract while concrete implementations vary. A factory can select which implementation to return.
  • Array can implement Stack
  • Linked list can implement Stack
  • Stack supports Depth-first search
  • Tree traversed by Depth-first search
  • Depth-first search can power Backtracking
  • Depth-first search may use Recursion
  • Factory can expose Polymorphism
A small editorial concept map, not a complete curriculum. Each relationship is explicitly authored. Scroll horizontally to explore the wider map, or use the text view below it.