aditazzz

Videos Deployed on a Friday (the Fable version): The Drive

Deployed on a Friday (the Fable version): The Drive

Four fifty-nine, laptop half shut. One little change, what could it cut? 🚗 The whole song is the drive home after shipping at 4:59 on a Friday, and every lyric is a road sign.

Watch on YouTube · 3:18 · video by Claude Fable 5.1 ·

The code behind it

Every frame of this video is drawn by a Python program. This is the heart of it, from scene.py, line 275.

songs/deployed-on-a-friday-fable/scene.py
def render_frame(t, W, H, fi):
    t = float(t); S = story(t); vert = H > W; ts = min(W, H) / 1080
    D = dist(t)
    fl = S['flood']
    bob = math.sin(t * 2.1) * H * 0.012 * fl / 0.9 + math.sin(t * 3.7) * H * 0.004 * fl / 0.9
    bob += S['bounce'] * H
    bob += math.sin(t * 37) * H * 0.0012 * clamp(speed(t) / 10)   # engine
    pitch = S['pitch'] * H
    u = S['uturn']; pan = (W * 1.4 * ease(u / 0.5)) if u < 0.5 else (-W * 1.4 * (1 - ease((u - 0.5) / 0.5)))
    V = WD.View(W, H, D, TRACK, bob=bob, pitch=pitch, flip=S['flip'], pan=pan)
    update_dynamic(t, V)
    img = np.empty((H, W, 3), np.float32)
    WD.sky(img, V, t, S)
    WD.hills(img, V, t, S)
    WD.ground(img, V, t, S)
    WD.flood(img, V, t, S)
    WD.draw_objects(img, V, t, S, OBJ)
    if S['whoosh'] > 0.01: WD.motion_streaks(img, V, S['whoosh'])
    if 0.01 < S['uturn'] < 0.99: WD.motion_streaks(img, V, math.sin(S['uturn'] * math.pi) ** 0.5 * 1.0)
    # inside the car
    L = DS.lay(W, H)
    DS.frame_glass(img, t, W, H, L, S)
    DS.dashboard(img, t, W, H, L, S)
    DS.ring(img, t, W, H, L, S)
    DS.interior_water(img, t, W, H, L, S['interior'], WD.pal('sea_near', S['tod']))
    # lyrics above the dashboard
    TY.lyrics(img, t, W, H, TM, hide=lambda L_: L_['sec'] in ('INTRO', 'OUTRO'), band=0.35)
    # kinetic type on the windshield: 4:59, the SHIP IT, the chorus hits
    for t0, text, dur in ((T_459, "4:59", 2.2), (T_459B, "4:59", 2.8), (T_ROOT, "root cause: me", 1.6)):
        if t0 <= t < t0 + dur:
            k = (t - t0) / dur
            DS.hud_word(img, t, W, H, text, sstep(0, 0.06, k) * (1 - sstep(0.82, 1.0, k)), y=(0.28 if text == "4:59" else 0.2) if not vert else 0.22, size=0.15 if text == "4:59" else 0.07, col=DS.CREAM, glow=hexc('ffb547'))
    if T_SHIP - 0.1 <= t < T_IT + 2.6:
        k = (t - T_SHIP + 0.1) / (T_IT + 2.6 - T_SHIP + 0.1)
        DS.hud_word(img, t, W, H, "SHIP IT" if t < T_IT + 0.1 else "deploying…" if t < T_IT + 2.4 else "deployed", sstep(0, 0.04, k) * (1 - sstep(0.9, 1.0, k)),
                    y=0.30 if not vert else 0.22, size=0.11, col=hexc('3ddc84') if t < T_IT + 0.1 else DS.CREAM, glow=hexc('3ddc84'), mono=False, x=0.40 if not vert else 0.5)
    if S['gg'] > 0.01: img += S['gg'] * 0.10 * hexc('39e07a')
    if S['fade'] > 0.01: img *= (1 - 0.92 * S['fade'])
    if S['loop_flash'] > 0.01: img += S['loop_flash'] * 0.8 * hexc('ffe6b0')
    # the subscribe pill (16:9) after the first chorus; the end card
    C.subscribe_pill(img, t, W, H, T_V2 + 0.3, 5.0)
    if t > T_END - 0.2:
        C.end_screen(img, t, W, H, T_END, DUR - T_END, "See you next Friday.", title="Deployed on a Friday")
    return C.finish(img, t, fi, DUR, ca=0.0012)

Read all 2,748 lines on GitHub. If you use it, credit aditazzz and link the video.

What you see

The whole video is seen from the driver's seat of a car on a coast highway. The dashboard carries the clock, the gauges and a phone in its mount: at 4:59 the phone shows PR #459 and a green SHIP IT button, the office gate lifts, and the drive starts. The first verse is road signs: NO TICKET, NO TEST, NO SECOND PAIR OF EYES, MERGE → MAIN, a green light that lies. The pager buzzes in the pre-chorus, and every chorus the tide comes in over the road: the car floats, water rises inside it, the gauges go sunset red, a PROD warning light blinks and a ROLLBACK life ring comes through the windshield on a rope.

Verse two is night on a pier of neon Slack channels: the bank sign flips from $ $ $ to NULL, a queue of RETRY cars backs up, dead letters stack up on the shoulder, and a billboard says VP is typing… then stops. The bridge parks the car at an overlook at low tide, where the seabed shows every shortcut (TODO, hardcoded, skip tests) and the phone has one bar of signal. Verse three is a U-turn and the fix: the pipeline crawls along the road's center line and then whooshes, the road dips and climbs back for "graph dips down, graph comes back", and the lights go green on green. The final chorus is dawn, the tide going out and the PROD lighthouse still standing, past a MONDAY: POSTMORTEM billboard. The outro is the office gate at 4:59 again, SHIP IT on the phone: a loop.

Files

FileLinesWhat it draws
scene.py318The story: speed and distance along the road, the clock, the time of day, the tides, the phone's screens, every sign and when it appears.
dof_world.py384The pseudo-3D road: a curving, dipping track, sky and sea by time of day, the flood over the road, sprites placed by distance, fog and glow.
dof_sprites.py350Every roadside thing, drawn once and cached: highway signs, billboards, neon channel names, palms, streetlights, the RETRY cars, the lighthouse, the gate, the life ring.
dof_dash.py323Inside the car: dashboard, gauges and clock, the phone and its screens, coffee, laptop, wheel and hands, mirror, water inside the car.
dof_type.py93The lyrics, kept inside the phone-safe area in 9:16.
v1_paper_boat/scene.py1,280The first version (the PR folds into a paper boat), kept to show how it got here.

By the numbers

  • 3:18 long, 11,906 frames rendered (16:9 and 9:16, 30 fps)
  • 54 lyric lines and 324 words synced to the vocals, 96 BPM
  • 5 Shorts cut from it

Lyrics

Words and music by aditazzz.

Intro

Four fifty-nine
Ship it

Verse

Four fifty-nine, laptop half shut
One little change, what could it cut
No ticket, no test, no second pair of eyes
Green check lying like it always lies
Coffee gone cold, I'm halfway out the door
Merge to main like I've done before
Windows down, salt on the breeze
Pager on my hip starts begging me please

Pre-chorus

Buzz, buzz, don't look
Buzz, buzz, I looked

Chorus

I deployed on a Friday, tide coming in
Prod going under, I'm learning to swim
Rollback, rollback, throw me a rope
Dashboard red as a sunset, nope
I deployed on a Friday, never again
Said that last Friday, never again

Verse

Slack lighting up like a boardwalk at night
Anyone change something? I'm sitting tight
Null in the column where the money should be
Ten thousand rows all pointing at me
Retry, retry, queue backing up
Dead letters stacking like shells in a cup
VP typing, VP stopped
VP typing, there it dropped

Pre-chorus

Buzz, buzz, don't look
Buzz, buzz, I'm cooked

Chorus

I deployed on a Friday, tide coming in
Prod going under, I'm learning to swim
Rollback, rollback, throw me a rope
Dashboard red as a sunset, nope
I deployed on a Friday, never again
Said that last Friday, never again

Bridge

Low tide shows you everything
Every shortcut, every string
Fix it from the parking lot
One bar of signal's all I got

Verse

Revert the revert, cherry-pick, push
Pipeline crawling, come on, whoosh
Cache still warm with the bad old state
Flush it, bounce it, sit and wait
Graph dips down, graph comes back
Green on green, I fade to black
Close the laptop, hear the sea
Phone lights up: quick question for me

Final chorus

I deployed on a Friday, tide going out
Prod's still standing, never a doubt
Rollback, rollback, cut the rope
Monday's a postmortem, blameless, nope
I deployed on a Friday, never again
See you next Friday, never again

Outro

Root cause: me
Four fifty-nine