Brand direction 04 · the mascot
Pid process 1

Every operating system has one process that starts before everything else, launches all the others, and cleans up what they leave behind. It is called PID 1. It never exits. That is the mascot.

Not an animal, not a robot with a personality problem. A daemon — the actual word backend engineers use for a program that runs quietly in the background doing the work. The audience is in on the joke, which is exactly why it doesn't patronise them.

See all six states
01 · why a daemon

A mascot they're on the inside of.

The risk with a mascot for this audience is being talked down to. The fix isn't to make it serious — it's to make the joke one only they get. An owl teaches you. A daemon works with you.

What it earns us

the four wins
01Its states are real process statesRunning, working, blocked, panicking, exited, sleeping. Pid's mood is never invented — it is the vocabulary of the course, learned by watching a character.
02Blocked is a feeling everyone has hadA daemon waiting on a lock is the most relatable thing in backend engineering. Pid tilting and waiting teaches contention before a single word does.
03It has a reason to be therePID 1 starts every other process and reaps the orphans. So Pid opening your session and cleaning up your unfinished work is not a metaphor — it is the job.
04It never exitsWhich is the one honest emotional promise a learning app can make. No streak to break, nothing to lose by leaving.

Built for the runtime

Rive-ready

Duolingo and Brilliant both animate their characters in Rive — real-time vector with a state machine, tiny files, one asset driven by app state. Pid is drawn for it: eleven shapes, no gradients on moving parts, no crossing paths, one symmetry axis. Every state below is a shape swap or a transform, not a redraw — which is what keeps the file small and the rig sane.

24
32
48
76

The visor is the silhouette. It survives the app icon.

02 · the state machine

Six states. All of them real.

Pid's body colour never changes. Only the eyes and the chest pip carry state, so the character is a system rather than a wardrobe — and one asset covers every screen in the product.

Running
The default. A slow 3.4s bob — enough to be alive, slow enough to ignore. Pid is present on the course map and never asks for anything.
EYES OPEN · PIP TEAL · LOOPS

Rive hand-off

state machine · inputs
stateNumber 0–5The process state. Drives eye geometry, pip colour and the body loop. Every transition is 180ms except panic, which cuts instantly — a crash has no ease-in.
progressNumber 0–100Fills the chest pip left to right. Data-bound, no easing: it is state, not motion.
pokeTriggerLearner taps Pid. One 500ms squash-and-look. The only animation the learner can start themselves.
panicTriggerOne 500ms shake, then straight back to the previous state. It never latches — Pid does not sulk.
reducedBooleanAll loops off, all transitions cut to 0ms. Eye shape and pip colour still change, so state is never lost.

Rig: 11 shapes, 2 groups (body, head). Body group takes bob / lean / shake / hop. Eyes are 2 rects with animated corner radius plus one arc path for EXIT 0. No bones needed — which keeps it under about 8 KB.

03 · applied

Where Pid is allowed to be.

Three moments, and nowhere else. Pid never appears next to a diagram — inside a lesson the figure is the truth and the mascot stays out of it.

COURSE MAP
Concurrency · 3 of 7Pick up where you stopped. Nothing expired while you were gone.

Home · running

GO · TEST RUN
go test ./...
--- FAIL: TestOrder
panic: send on closed channel
goroutine 7 [running]
It panicked, not you.Something closed the channel while a sender was still going. Find the close.

Failure · panic

MUTEX CONTENTION
Blocked.Pid is waiting on a lock another goroutine is holding. This is what your p99 looks like from the inside.
mu.Lock()
// held for 340ms

Teaching · blocked

04 · the discipline

What Pid never does.

A mascot goes wrong by wanting things from you. Pid wants nothing. These are the rules that keep it from becoming the thing engineers mute.

Rules

non-negotiable
01It panics at the program, never at youThe coral state is a crash report, not a scold. Copy always names the code as the subject: "It panicked, not you."
02It never appears beside a diagramInside a lesson the figure is the truth. Pid lives on the map, on failures and on empty states.
03It has no streak and no guiltPID 1 does not exit, so there is nothing to break. Coming back after three weeks gets you sleeping → running, and not one word about it.
04It never speaks first during workPid reacts. It does not interrupt, hint unprompted, or celebrate something that did not happen.
05One asset, six states, no costumesNo hats, no seasonal skins, no outfits. The moment Pid has a wardrobe it stops meaning anything.

Refused

the slop list
  • An owl, a fox, an otter, or any animal in glasses
  • Eyebrows, a mouth, or a nose — the eyes carry everything
  • Arms that gesture and point at UI
  • Guilt-trip push notifications with a sad face
  • Speech bubbles over a diagram
  • A cheerful voice explaining what you just got wrong
  • Seasonal costumes, hats, or cosmetic unlocks
  • Anything that makes an engineer feel like they are five

Next: Pid sets the material language — soft-touch, modern, two tone steps. The coin gets re-cut to match it and loses the antique mint feel.

Brand direction 04 · mascot · drawn for Rive · every state here is real SVG + CSS, no images