SnakeByte[23]: Maynard-Cross Learning (MCL): Hive Minds as a Single RL Agent

First i trust everyone is safe.

Second, i have been sitting on a draft SnakeByte for a while about a paper that does what i wish more swarm literature would do. It stops waving its hands at “emergence” and writes the update rule down. Instead of picking a library or method i decided to randomly pick cool papers. i just haven’t had a chance to sit with this one long enough for prime time. This paper caught my eye on the Keywords: Swarm Intelligence, Reinforcement Learning, Evolutionary Game Theory,
Evolutionary Biology.

A population of agents following a simple, local, purely imitative weighted-voter rule is mathematically equivalent to a single abstract reinforcement learning agent that updates its policy with Maynard-Cross Learning.

~ the actual claim

i guess this is where i am supposed to say, “A banger of a paper just dropped, and it shows how you can spin up 1-Billion Agents to make you 1-Billion Dollars In A Month.” i digress.

The paper is The Hive Mind is a Single Reinforcement Learning Agent (Soma, Bouteiller, Hamann, Beltrame, arXiv:2410.17517). Honey bees. Nest sites. Waggle dances. The usual natural-history furniture. Underneath that furniture is a bandit. Quantum spooky distance of the hive mind.

Can a single RL Agent perform as The Hive?

What the bees are actually doing

A scout finds a cavity. She grades it the way any field engineer grades a site: volume, exposure, how hard it is to get home. She comes back and dances. Duration and vigor scale with the reward she thinks she sampled. Another bee does not run a comparison. She copies the first dancer she runs into inside a small neighborhood. Blind imitation. Local. Cheap.

Do that with a few hundred scouts and the fraction of the swarm committed to each site starts to behave like a policy (\pi). Not a metaphor. A probability vector. The hive is not a mind hovering over the individuals. The hive is the update those individuals implement when you add them up.

MCL is that update. It sits in the same family as Cross Learning, which sits downstream of the replicator story Maynard Smith opened and Taylor, Jonker, Schuster, and Sigmund actually wrote as dynamics. Maynard Smith gave us the equilibrium. Other people wrote the motion. MCL is motion with a normalization the bees accidentally invented.

The discrete rule

One bee, one sample. She is committed to site (k) and comes home with a noisy reward (r_k). The population policy moves like this:

    \[\forall a,\quad\pi_a \leftarrow \pi_a + \alpha \frac{r_k}{v}\begin{cases}1 - \pi_a & \text{if } a = k, \-\pi_a & \text{otherwise.}\end{cases}\]


    \[where (\alpha = 1/N)\]

The swarm size is the learning rate. Bigger swarm, smaller step. The organism learns more slowly because there are more of them. That is not a bug. That is averaging. Pretty much the same physics as a learning rate.

You do not know the true mean rewards (q). So (v) in the denominator is not an oracle. In any implementation that can actually run, (v) is an online estimate. A moving average of rewards already seen. The normalization is “how good was this sample relative to what we have been getting.”

Skip the update when the estimate is sitting on zero. Do not divide by faith.

The continuous limit, and why the extra factor matters

Take the population large and the step small and you land on the Maynard-Smith replicator dynamic:

    \[\dot{\pi}_a = \frac{\pi_a}{v^{\pi}}\bigl(q_a^{\pi} - v^{\pi}\bigr),\qquad q_a^{\pi} = \mathbb{E}[r_a].\]

Classic Cross Learning, pushed to the same limit, gives you the Taylor replicator:

    \[\dot{\pi}_a = \pi_a \bigl(q_a^{\pi} - v^{\pi}\bigr).\]

The only new object is (1/v^{\pi}). Absolute rewards wander. Noise wanders with them. Dividing by the current average value keeps the step from blowing up when every site is paying well and from stalling when every site is paying poorly. It is a baseline. Bees did not call it a baseline. The algebra does.

The paper’s conditions for reliable convergence include a neighborhood that is not tiny. Something like (M \ge 5) before the quorum story gets trustworthy. Local does not mean “talk to one neighbor and call it wisdom.” Local means “small relative to (N), large enough to estimate a vote.” Hold that sentence. The plots below will test your patience.

One agent, N environments

Read the micro-rule from the macro side and the RL picture snaps into focus.

  • Each bee samples an action from (\pi). That is her current preference.
  • She receives a noisy reward from her own site visit. That is one environment.
  • Imitation averages those samples into the next (\pi).

That is a single online bandit agent aggregating action-value samples from (N) parallel environments. The individuals are not learners in the gradient sense. They are samplers with a copy rule. The learner is the distribution.

i want to be careful about the evolutionary sentence, because it is the one people will over-claim( omg lets anthropormoisize yet another algorithm). The equivalence supplies a plausible selective pressure for the imitation rule: a group that copies this way is doing group-level reinforcement learning whether or not any bee could tell you that. The paper does not prove that kin selection “favors group-level RL” as a primary result. It shows you a mechanism that would be worth keeping if selection ever got its hands on it. Mechanism first. Story second.

Why i care, and why you might

Most “swarm intelligence” (papers, decks, napkins) still hand you a metaphor and a video of drones in a pretty formation. This hands you a pseudo-compiler. If you know which bandit update you want at the macro scale, you can ask what local imitation rule realizes it. If you already have a local rule, you can ask which RL agent you accidentally built.

That is a design tool. Drone search. Sensor tasking and orchestration. Any flock of cheap agents that should not each be running a policy network. You do not put a sophisticated learner in every airframe. You put a sampler and a dance in every airframe, and you let the population be the learner.

Same mathematics, opposite direction of work. Derive the local rule from the update you want. Or read the update off the rule you already shipped.

The notebook:

# Maynard-Cross Learning: one abstract agent, and the bees it claims to be.
# Soma, Bouteiller, Hamann, Beltrame — arXiv:2410.17517
#
# Macro: streaming MCL. One sample per step. Learning rate alpha = 1/N.
#        v is NOT the true mean reward. It is an exponential moving average
#        of rewards actually observed. That is the version you can ship.
#
# Hive:  N agents. Each holds a discrete site preference.
#        Each step, every agent hears M neighbors and copies with
#        probability proportional to the rewards those neighbors just drew.
#        Nobody stores pi. The histogram of preferences is pi.

import numpy as np
import matplotlib.pyplot as plt

# --- bandit and swarm ---
K = 5            # sites / arms
N = 200          # bees; also sets alpha = 1/N on the macro side
T = 2500         # steps. clocks differ; see the post
delta = 0.15     # uniform noise half-width around each q_a
beta = 0.02      # EMA rate for the online baseline v
M = 8            # neighborhood size for the healthy hive
num_runs = 4     # macro seeds for the mean/std band
SEED = 42

q = np.linspace(0.25, 0.85, K)   # 0.25, 0.40, 0.55, 0.70, 0.85
optimal = int(np.argmax(q))      # arm 4


def run_mcl_macro(T=T, seed=0, q=q):
    """Serial MCL. One environment sample per tick."""
    local = np.random.default_rng(seed)
    alpha = 1.0 / N
    pi = np.ones(K) / K
    v_est = 0.0
    history = np.zeros((T, K))
    arms = np.arange(K)

    for t in range(T):
        history[t] = pi
        k = local.choice(K, p=pi)
        r = np.clip(local.uniform(q[k] - delta, q[k] + delta), 0.0, 1.0)

        # online baseline. first reward seeds it; after that, EMA.
        v_est = r if t == 0 else (1.0 - beta) * v_est + beta * r
        if v_est < 1e-8:
            continue

        # MCL: reinforce k by (1 - pi_k), decay every other arm by pi_a,
        # then scale by alpha * (r / v).
        update = alpha * (r / v_est) * np.where(arms == k, 1.0 - pi, -pi)
        pi = np.clip(pi + update, 0.0, None)
        total = pi.sum()
        pi = pi / total if total > 0.0 else np.ones(K) / K

    return history


def run_hive(T=T, seed=0, M=M, q=q):
    """Explicit bees. No policy vector. Histogram only."""
    local = np.random.default_rng(seed)
    prefs = local.integers(0, K, size=N)   # each bee's current site
    history = np.zeros((T, K))

    for t in range(T):
        counts = np.bincount(prefs, minlength=K).astype(float)
        history[t] = counts / N

        # every bee samples a noisy reward for the site she currently likes
        rewards = np.clip(
            local.uniform(q[prefs] - delta, q[prefs] + delta), 0.0, 1.0
        )

        # one neighborhood draw per bee, then a weighted copy
        new_prefs = prefs.copy()
        neigh = local.integers(0, N, size=(N, M))
        for i in range(N):
            js = neigh[i]
            votes = np.bincount(prefs[js], weights=rewards[js], minlength=K)
            total = votes.sum()
            if total > 0.0:
                new_prefs[i] = local.choice(K, p=votes / total)
        prefs = new_prefs

    return history


pi_macro = run_mcl_macro(seed=SEED)
pi_hive = run_hive(seed=SEED, M=8)
pi_hive_small = run_hive(seed=SEED, M=2)   # thin vote; easy bandit still locks

percent_opt = np.vstack([
    run_mcl_macro(seed=SEED + r)[:, optimal] * 100.0
    for r in range(num_runs)
])
mean_opt = percent_opt.mean(axis=0)
std_opt = percent_opt.std(axis=0)

# Figure 1 — full policy, both ontologies
fig, axes = plt.subplots(1, 2, figsize=(12, 5), sharey=True)
for a in range(K):
    axes[0].plot(pi_macro[:, a], label=f"arm {a}  q={q[a]:.2f}")
    axes[1].plot(pi_hive[:, a], label=f"arm {a}  q={q[a]:.2f}")
axes[0].set_title("Macro MCL (one abstract agent)")
axes[1].set_title(f"Hive (N={N} bees, neighborhood M={M})")
for ax in axes:
    ax.set_xlabel("step")
    ax.set_ylabel(r"policy mass \pi_a")
    ax.set_ylim(0, 1.02)
    ax.grid(True, alpha=0.3)
    ax.legend(fontsize=8, loc="center right")
fig.tight_layout()
fig.savefig("mcl_policy_evolution.png", dpi=140)

# Figure 2 — mass on the best arm, plus a too-easy small neighborhood
fig, ax = plt.subplots(figsize=(12, 5.5))
ax.plot(pi_macro[:, optimal] * 100.0, color="C0", lw=2.0, label="Macro MCL (this seed)")
ax.plot(pi_hive[:, optimal] * 100.0, color="C1", lw=2.0, label="Hive, M=8")
ax.plot(pi_hive_small[:, optimal] * 100.0, color="C3", lw=1.6, label="Hive, M=2 (too local)")
ax.plot(mean_opt, color="black", lw=1.4, ls="--", label=f"Macro mean over {num_runs} seeds")
ax.fill_between(
    np.arange(T), mean_opt - std_opt, mean_opt + std_opt,
    color="0.2", alpha=0.15, label="macro +/- 1 std",
)
ax.set_xlabel("step")
ax.set_ylabel("percent of mass on the best arm")
ax.set_title("Same bandit, three stories: abstract update, healthy hive, thin vote")
ax.set_ylim(0, 105)
ax.grid(True, alpha=0.3)
ax.legend(loc="center right", fontsize=9)
fig.tight_layout()
fig.savefig("mcl_optimal_convergence.png", dpi=140)
plt.show()

print(f"final macro   {pi_macro[-1, optimal]:.3f}")
print(f"final hive M8 {pi_hive[-1, optimal]:.3f}")
print(f"final hive M2 {pi_hive_small[-1, optimal]:.3f}")

Ok what is all of this doing?

On this seed the final mass on the best arm is 0.952 for the abstract MCL agent, 1.000 for the hive with (M=8), and 1.000 for the hive with (M=2).

That is exactly what the plots show. The abstract agent converges steadily. The hive converges “violently”. (Ya know you have to have some human adjective for code or a storm).

If your hive runs slower, change the problem before you change the theory. Shrink the reward gap. Increase the noise. Make the vote harder. That is the next experiment. If the macro agent converges toward the best arm and the hive does not under the same reward structure, then look at the voting implementation first. The equivalence is not rescued or refuted by a bad bincount.

A batch macro update would give you the fairer clock: draw (B=N) actions from (\pi), collect (N) rewards, average the MCL increments, and apply the aggregate update once. At that point the blue macro curve should stop looking quite so lazy.

Note your probably wondering why not use DEAP? It is the wrong first tool. Nothing here is evolving a genome or code base. This is a probability distribution concentrating under reinforcement. If, later, you want to evolve the dance itself so that a local swarm rule realizes some other desired macro-level bandit update, then put run_hive inside a fitness function and evolve the microscopic rule. Different experiment. Different blog. Maybe sometime in the future.

This one is the equivalence, watched with the lights on cause i’d rather see bees than hear them.

What the run actually did

Five arms. Mean rewards:

    \[q = (0.25,\ 0.40,\ 0.55,\ 0.70,\ 0.85).\]

Uniform reward noise has half-width

    \[\delta = 0.15,\]

with samples clipped to ([0,1]).

Arm 4 is optimal with expected reward (q_4=0.85).

The swarm contains

    \[N=200\]

bees, which also sets the serial macro learning rate to

    \[\alpha = \frac{1}{N}=\frac{1}{200}.\]

The online value baseline uses an exponential moving average with

    \[\beta = 0.02.\]

The run lasts (T=2500) steps. The healthy hive uses a neighborhood size (M=8). A second hive uses (M=2). We repeat the macro comparison across four seeds.

Same bandit. Same reward noise. Same initial ignorance. Very different clocks.

Figure 1 — Macro MCL policy evolution

The abstract MCL agent begins uniformly:

    \[\pi_a = 0.2\]

for all five arms.

From there, arm 4 starts accumulating mass while the weaker alternatives are progressively starved.

The movement is not monotonic because the agent is sampling noisy rewards one observation at a time. Arm 3, with (q=0.70), survives longest because it is the nearest competitor. The lower-reward arms disappear much earlier.

For the seed shown:

  • around step 100, arm 4 holds (0.213) of the policy;
  • around step 500, it holds (0.518);
  • around step 1000, it holds (0.725);
  • at step 2499, it holds (0.952).

Across the four macro seeds, the final mass on arm 4 ranges from approximately (91.5%) to (97.9%), with a final mean of (95.2%) and a standard deviation of about (2.37) percentage points.

The walk is noisy. The destination is not (which is usually always the case in life).

Figure 2 — Hive policy evolution, (M=8)

The hive is doing something operationally very different. This is a test of the public bee broadcasting system this is only a test.

There is no global (\pi) stored anywhere. Will we converge? The suspense is killing me i hope it lasts!

Each bee carries only a discrete site preference. Each bee samples a noisy reward from that site. Each bee then looks at (M=8) randomly selected neighbors and copies a site according to the neighbors’ reward-weighted votes. The policy exists only as the histogram of those preferences. And that histogram locks fast.

With (N=200) and (M=8), the optimal arm exceeds (95%) of the population by about step 22, exceeds (99%) by about step 24, and reaches complete fixation by about step 33.

The other four traces collapse onto the floor. That does not mean the hive discovered a better learning rule. It means the hive is consuming much more information per tick (i’m not sure if that is the correct wording; you can’t consume information?). The serial macro loop samples one action and one reward per step.

The hive samples roughly (N=200) rewards and performs roughly (N=200) local imitation decisions per step. Same family of mathematics. Very different amount of work per tick.

That distinction matters.

Figure 3 — Best-arm convergence

The convergence plot makes the clock mismatch explicit.

  • Blue is the serial Macro MCL run for seed 42.
  • Orange is the hive with (M=8).
  • Green is the hive with (M=2).
  • The dashed red line is the mean of the four macro runs.
  • The shaded band is (\pm 1) standard deviation across those macro runs.

Both hive variants race to the ceiling while the macro agent climbs gradually toward the same winner.

The (M=8) hive reaches complete fixation at roughly step 33.

The (M=2) hive takes longer, but only slightly: it exceeds (95%) around step 37 and reaches complete fixation around step 58.

So on this particular bandit, (M=2) does not fail.

That is important.

The reward means are spaced by (0.15), and the noise half-width is also (0.15). Arm 4 is sufficiently better than the alternatives that even a very thin neighborhood vote usually discovers the correct direction.

The paper’s warning about very small neighborhoods concerns reliability when the alternatives are harder to distinguish: smaller reward gaps, heavier noise, or situations where a lucky local sample can pull a tiny neighborhood into premature consensus. That is the experiment to run next. Let’s Shrink the gap.

Now let us increase (\delta).

Then see whether (M=2) starts believing the first charismatic (tiny) dancer it meets. Hold me close. Get the lyric?

Figure 4 — Early-time convergence

The early-time zoom is probably the clearest picture in the set because it removes the long flat tail after the hive has already converged. Within the first 250 steps, the distinction is obvious.

The (M=8) hive climbs from roughly (20%) initial representation to complete fixation in only a few dozen collective updates.

The (M=2) hive is somewhat noisier and slower, but still reaches fixation before step 60.

Over the same interval, the serial macro agent is still wandering between roughly (20%) and (30%) policy mass on the optimal arm.

Again: do not read that as intelligence. Read the clock. One side is processing one reward sample per tick. The other side is processing a population-sized batch. The comparison is deliberately unfair in wall-clock information because that unfairness exposes the architecture.

If you want schedule equivalence, batch the macro learner with (B=N), or slow the hive down to one imitation event per tick. What the plots show cleanly is something narrower and more interesting: the abstract update and the swarm of local copiers select the same arm. They agree on the destination. They do not agree on the schedule. The destination is the mathematical equivalence. The schedule is an implementation choice.

Confusing those two is like looking at the orange line, looking at the blue line, and deciding the theorem must be wrong because one of them has a faster clock.

The early-convergence zoom is particularly useful because it makes the clock mismatch visually obvious: the hive gets essentially to 100% within tens of collective updates while serial MCL is still around 20–30%. That directly illustrates the explanation that the “macro loop” consumes one reward per tick while the hive is consuming roughly (N) fresh observations per collective tick

Broader Implications For Maynard Learning


A swarm of cheap physical agents does not need a genius in every airframe. The paper’s equivalence says the opposite: if each body only samples and imitates locally, the population itself is already one online learner, aggregating noisy rewards across many parallel environments. In defense tech and physical AI that is a design rule, not a metaphor. A flock of scouts, buoys, or small unmanned vehicles can search, sense, and commit to a site, a route, or a task by a weighted-voter dance whose macro-update is Maynard-Cross Learning, with learning rate set by how many bodies you field and with no central policy server in the loop. Individuals stay simple, sometimes even “irrational” if you grade them one at a time. The group still converges. You get scale, you lose the single radio that everyone is waiting on, and you design the local copy rule so the hive you actually built is the bandit agent you meant to field.

It challenges traditional views of “intelligence” (the stochastic parrots will tell you they are) as individual-centric, showing how distributed systems can rival advanced RL agents through emergence.

Until Then,

#iwishyouwater <- the swarm does not have a leader. West Palm Beach Doing THE THANG.

#EverForward, stay local and still converge.

𝕋𝕖𝕕 ℂ. 𝕋𝕒𝕟𝕟𝕖𝕣 𝕁𝕣. (@tctjr) / X

MUZAK TO BLOG BY: Madman Across The Water, Tiny Dancer. Of course, Bernie Taupin was a lyrical genius, and well, you go play and sing like the madman – hold me closer, Tiny Dancer. Then i thought maybe Choo Choo Cha Choo? I am he, As you are he, As you are me, And we are all together, convergence if you will. The Oingo Boingo version is fire. Then again there is no one like the original.

Footnotes

[1] John Maynard Smith founded the ESS idea. The continuous replicator equation came later (Taylor & Jonker; Schuster & Sigmund). ESS is what the dynamics often sit down on. Do not hand him the differential equation. He already has enough credit. John Maynard Smith is also recognized as the founder of evolutionary game theory, providing the essential framework and the ESS concept that underpins the field, which later researchers, including those who formulated replicator dynamics, built upon. While Maynard Smith’s initial work focused on the static equilibrium concept of ESS, the replicator dynamics is a related concept developed later by other researchers (notably Taylor and Jonker, and Schuster and Sigmund) to describe the process of how strategies change in a population over time. The replicator equation is a set of differential equations that models how the frequency of a given strategy increases if its payoff (fitness) is higher than the average payoff of the population. The ESS is the stable, stationary point that the replicator dynamics often converge to. 

[2] Cross Learning is the “imitation of success” aggregate. MCL is the weighted-voter aggregate. Same family, different micro-rule, different (1/v) in the limit. If you implement CL by deleting the division, you can watch the robustness claim instead of taking my word for it.

[3] IS IT still ok to use jupyter notebooks? Is it like bell bottoms that might come back into vogue one day?

[4] Is it straight edge or punk to write your own LATEX?

[5] Hat tip to Fiona Cashin, keep those bees healthy. Great talking to you.

 

Motivation Vs Discipline

Don’t ask how you feel. Ask after.

“He who conquers others is strong. He who conquers himself is mighty.”

~ Tao, 33

First i trust everyone is safe. Second i was thinking about something while i was trying to convince myself not to go work out. Which is the basis for this blog.

Motivation is a drug. It feels great, it wears off, and you need more of it to feel the same thing next time. There is a billion-dollar industry of people selling it to you in 90-second clips with orchestral music underneath. Somebody yelling at you at 5 a.m. about grinding. You watch it, you feel the rush, you go back to bed.

That’s not a character flaw. That’s the wiring.

Here is what nobody tells you, Dear Reader. The thing inside you that wants to quit is not your enemy. It’s you. The real you. The factory default. Every animal on this planet is built to conserve energy, avoid pain, and stay warm. Left alone, you will choose the couch every single time, and you will have an excellent reason for it.

So you start negotiating.

“Instinct knows nothing of shame.”

~ #TCTRules

i’ll do it Tomorrow. After my tea, my triple moca caramel latte. My shoulder’s tweaked. i earned hit the snooze. It’s cold. Nobody will know.

You will lose that negotiation. Every time. Not sometimes. Every single time. Because the one sitting across the table from you has read every argument you’ve ever made. It knows exactly which lie you’ll buy. Moreover, it was there for every promise you broke to yourself, and it kept the receipts.

As a result, you cannot win a negotiation with yourself. Therefore, the only move is to not show up to the table.

Indeed, that’s discipline. Not some heroic surge of will. Just refusing to take the meeting.

The iron never lies.

Many people who know me know i have said this: “The iron never lies.” i wish she would lie so much to me.

Three hundred and fifteen pounds is three hundred and fifteen pounds. It weighed that yesterday. It will weigh that tomorrow. It doesn’t care about your title, your comp, your org chart, your followers, or the story you tell at dinner about how strong you “usta’ be”. It doesn’t care that you’re tired or that the meeting ran long or the drop off line at school was backed up a mile or you have homework.

Sitting on the floor, it waits, and it either goes up or doesn’t.

There is no spin in a barbell. No narrative. No stakeholder alignment. You can’t PowerPoint or doom scroll your way through a deadlift.

That’s why i at this point in my life i am extremely pro individual sport and activity. It is the truest mirror there is. No teammate to carry the fourth quarter. No referee to blame. No coach to fire. In a team sport, you can hide in the system for years, just like a massive corporation.

On a platform, on the ice, on a breath-hold,on a wave, or a golf swing, or martial arts, there is nowhere to hide. The scoreboard is you, and it’s honest in a way people almost never are to others and especially to themselves.

And the iron does not care about motivation. Motivation doesn’t add a single pound. What adds pounds is showing up on the days you’d rather set yourself on fire than get under the bar, and doing the sets anyway, and doing them again three days later. Years of that. Boring, repetitive, unphotographed years. That’s the only program that has ever worked.

The clock goes off at 4:45 a.m.

My daughters skate at an extremely high competitive level. If you want to see discipline with the skin peeled off, come watch them before the sun comes up.

The alarm goes off at 4:45. Every day. Not when there’s a competition. Every day. It’s dark. It’s cold before you even get to the cold. The rink smells like Zamboni exhaust and rubber mats, and there are a handful of skaters and a coach or two out there under half the dim fluorescent lights, and none of them feel like being there. Nobody feels like being there at 4:45. They are there anyway.

Then they step onto the ice, and the ice is the most honest surface on earth. Then the transition happens.

There are no pads. No helmet. No mat. They go up, rotate in the air, and if one edge is off by a couple degrees, they come down on a sheet of frozen concrete with nothing between them and it but an Athleta or Lululemon outfit and a hip bone.

Sound carries in an empty rink. You can hear a bad fall from the parking lot. i have sat in those butt freezing bleachers and heard it more times than i can count. And then they get up. And do it again. And fall again. Hundreds of times for one jump. Thousands before it’s clean. Blood blisters in the boots. Bruises stacked on bruises in colors that don’t have names yet. Hands and shins sliced open. Its called #knifeshoelife.

Then school. Then homework. Then back on the ice. Then off-ice training. Then bed early, because 4:45 comes around again whether anyone is ready or not.

It is relentless. It never ends. There’s no offseason for an edge. Take two weeks off and the ice tells you about it immediately.

And what does the world see? Four minutes. A pretty sequined dress. More Swarovski® crystals under the lights. A smile. Music. Maybe a medal. Everyone in the stands says she makes it look so easy.

Yes. That’s the point. That’s what ten thousand falls look like when they finally stop showing.

I have been in rooms with some of the most driven people in technology, sports, and even the military special forces.

My daughters are tougher than all of them.

The sea of screaming fans.

Music is the same lie with a bigger audience.

You see the stadium. The lights. Fifty thousand people screaming the words back. The guitarist who plays something so fast and so clean you’d swear it was a gift from God handed down at birth.

It wasn’t. Most of the great guitarists (and muscisians) i have have met put themsevles through ten hour guitar workouts. Ten hours. In a room. Alone. Scales, chromatic runs, legato, the same four bars a thousand times with a metronome that doesn’t care how you feel. The players who rise to the very top are putting in eight to ten hours a day, every day, for years, before anyone knows their name. Calluses on calluses. Wrists that ache. Missed parties, missed girlfriends, missed everything.

i spent enough time behind a console to know. The take you hear on the record might be the forty-seventh take. The “effortless” solo is the one they could finally play without thinking because they played it five thousand times while thinking.

The crowd sees ninety minutes. Nobody sees the ten thousand hours in a room with the door shut.

And here is the dirty secret: most people who say “talent” mean “i didn’t see the practice.” #TCTRules says most confuse charisma for genius. Most also confuse discipline for gift. It’s easier that way. If it’s a gift, you’re off the hook. If it’s discipline, the only thing between you and them is whether you get up at 4:45.

The water does not care who you are.

My personal church. The water doesn’t care who you are or who you think you are. That’s the part that gets people literally killed.

The ocean doesn’t know you’re a C-Level Executive or a doctor or a lawyer. It doesn’t know about the patents or the exits or the corner office. Paddle out into double overhead surf with a big ego and a small skill set and the ocean will explain the difference to you, personally, with a two wave hold down.

This is why i write the lowercase i, Dear Reader. In terms of the ocean and the universe, we are nothing. That isn’t humility as a pose. That’s extreme physics.

My niece is a competitive diver. She goes into the water from above. i go into it from the surface and below the surface.

Same water. Same indifference.

The women’s platform is 10 meters up. 33 feet There’s no board to spring from, just a ledge and the wind and the long look down.

By the time she reaches the surface she’s moving around 35 miles an hour, and at that speed water stops being water (water molecules cannot displace fast enough). It’s a concrete wall, just like her cousins who make contact with the ice. Enter a few degrees off and it doesn’t matter how brave you were on the way down. The surface will grade you, instantly, and the grade goes straight into your spine, your knees, your ribs.

Three seconds in the air. That’s all the crowd sees. A body falling clean, feet first, barely a splash. They clap and look at the next one.

What they don’t see is the years. The thousands of entries from lower heights, working up a meter at a time. The dryland training. The core work. The body you have to build just so the water doesn’t break it. And the part nobody talks about: the fear. Every single time. You don’t train the fear out. You train yourself to step off with it.

The cave you fear to enter holds the treasure you seek. You do the thing then get the courage after you have entered the cave and done the thing.

~Joseph Cambell

That is discipline in its purest form. Standing on a ledge several stories up while every ancient circuit in your brain says do not do this, and doing it anyway, because you decided on the ground that you would.

Freediving teaches the same thing from the other side.

Somewhere down there the contractions start. Your diaphragm starts slamming like someone is kicking a door in. Every cell in your body is screaming go up, go up now, you are dying.

You aren’t. Not yet. That’s CO₂ talking, not oxygen. It’s an alarm, not a fact. It’s the native self opening negotiations at depth. Yet in freediving slow is fast. Going fast burns oxygen. The ultimate mental discipline.

Motivation will get you in the water. It will not get you through the contractions. It will not get you off the ledge. Nothing does that except the decision you made before any of it started, that you were not going to listen.

And here is the other half of it, the half the hype videos leave out: discipline also means knowing your real number, not the one your ego wants.

The water will let you believe whatever you want about yourself right up until it doesn’t.

The iron keeps you honest on land.

The ice keeps you honest at 4:45.

The platform keeps you honest at ten meters.

The ocean keeps you honest at depth.

None of them care about your opinion of yourself. You decide before. Then you stop voting.

Coders already know this. A while loop checks first. If you don’t feel like it, the body never runs. A do loop runs first and asks questions later. It always executes at least once.

Motivated people are running while loops and wondering why nothing happens. Then order their triple caramel mocha and cinnamon bun.

Now the part that doesn’t go on a coffee mug.

Discipline has no morals. It’s a blade. It cuts whatever you point it at. i pointed mine at the work for thirty years and it was magnificent. The code shipped. The patents granted. And that same blade cut through birthdays, and relationships, and phone calls i should have made. The discipline didn’t do that. i did. i picked the target.

So yes, there is only discipline. But be very careful where you aim it. It will give you exactly what you asked for and take everything you didn’t think to protect.

Get over that bar. Get on the ice at 4:45. Step off the ledge. Get in the water.

Don’t ask how you feel. Ask after.

EVERFORWARD. Stay Non-Linear. Stay Curious.

Until Then,

#iwishyouwater <- Kandui Memos Of Perfection. Aint nuthin to it.

🤘💜🌊

𝕋𝕖𝕕 ℂ. 𝕋𝕒𝕟𝕟𝕖𝕣 𝕁𝕣. (@tctjr) / X

MUZAK TO BLOG BY: Mr Robot, Vol1 (Original Television Series Soundtrack) by Mac Quayle. i wish they would bring this show back. The most factually accurate technical show ever besides Silicon Valley.

NOTES:

BTW i researched this the numbers hold up: 10 meters is the women’s at the diving events, and a fall from there hits the water at roughly 30 to 35 mph. On The deceleration going from 35 mph to a relative halt inside the pool happens in a fraction of a second, generating an average deceleration force of 5g to 10g. This deceleration translates to an impact force equivalent to absorbing 3 to 5 times their own body weight. For a 130 lb diver, their hands and wrists must instantly withstand over 400 to 650 pounds of localized force to break open the surface.

For elite womens ice skaters during jump spins elite female skaters typically achieve an average of 4.2 to 4.9 rev/s in the air during triple jumps. In terms of Revolutions per minute (RPM): This equals approximately 250 to 300 RPM.
Radians per second: In physics terms (ω = 2π × rev/s), this is roughly 26 to 31 radians per second. Upon landing a triple jump, a skater’s body routinely absorbs an impact force of 5 to 8 times their body weight, with peak deceleration forces spiking up to 13g to 14g for a fraction of a second. For an elite female skater weighing around 120–130 lbs, a 5g to 8g landing translates to her single knee, ankle, and hip instantly absorbing 600 to over 1,000 pounds of force on a rigid steel blade.

For surfers a 12-foot (double overhead) wave behaves like a falling ceiling of water. If the lip lands directly on the surfer, the crushing force is immense. While a 33-foot wave lip can deliver 410 tons of force (the weight of 500 cars), a heavy 12-foot wave (especially a thick reef break like Hawaii’s Pipeline or Tahiti’s Teahupo’o) can dump a solid 1 to 2 tons of water pressure directly onto the human body in a fraction of a second. On free-falling 12 feet into the trough of a wave means hitting the water at roughly 18 to 22 mph. Because the water entry is completely uncontrolled, the sudden deceleration can spike brief, localized impact forces up to 5g to 10g, frequently causing blunt trauma, broken ribs, or concussions. Surfers routinely describe this as feeling like getting T-boned by a car or slammed onto hard-packed concrete. Then there is hitting the bottom not the water with all that.. Ask me i know.

9.11.2026

The Church In West Palm 2025 – 100% AI Free

Mediocrity Is Not An Option!

~ Steven Swenson

First, i trust everyone is safe.

i recently read a book on one flight called “Nobody Is Coming to Save You: A Green Beret’s Guide to Getting Big Sh*t Done” by Lt. Col. Scott Mann.

It is a self help book of sorts. The main import of the book was that it is ok to talk about things that have happened to you, not in a victim mode, but what you learn from the situation. He was a Green Beret in Afghanistan, dealing with the same “humans” that dealt lethality to the United States of America, which continues today.

i wasn’t going to write anything today; just send my thoughts to those whose lives were severely affected on this date.

It has been twenty-one years today.

i want to tell you something about the counting. i do not mark this date on a calendar. i have never had to. i knew people in the buildings. i knew people who made it out of the buildings. i talked to people in depth who were the first responders as part of my work. i know people who were in the Pentagon when it got hit.

Recently i was driving back with a new work aquatience who i beleive is kindred spirit from the 250th American Grand Prix. We had parked at the south entrance of the pentagon. We got in the car and he drove off and pointed to the fence and said we used to just walk up and hang out there now we cant due to one event.

Today is when belief systems in several areas ran completely amok.

Somewhere in the last days of August my body starts keeping the appointment without asking me, and then a week or so later my mind catches up and says oh. That is what this is. That is the thing that is happening. Every year. The body files it before the head has a word for it. It’s built on a couple of things that are clockwork. One hurricane season in the Southeast; Halloween is right around the corner and today.

Twenty One Years.

Twenty-one years reduces. Two and one make three. Three by three makes nine. Nine is where i am going to stop, and you will see why.

Sven was in his office at One Infinite Loop with his back to the door and MacsBug on the screen. I walked in and said a certain code word, “the crew,” was to be used at a certain time, which for him meant, “Hey man, you ready to get that boat?”

He pushed back from the desk, picked up his backpack, and said okay man, i just pushed back, where are we going?

i said hold on, i meant the boat, not right now.

He said why the hell not, let’s go.

He got the boat. A forty-eight-foot Hallberg-Rassy. i captained it once, he insisted. Then he did the part nobody tells you about, which is that he trained himself and he trained his family in seamanship, martial arts, technology, and programming because he was not going to take people he loved out onto the water and be a tourist about it. He did it right. He did everything right. He was never content with mediocrity and despised stupidity.

In addition to the boat he also shaved his head. Well many of us did in a ritual when we left apple and started executing a plan in perfection.

When he had his head shaved i rubbed him on the head hugged him, and said to him the famous quote from Fight Club:

Like a monkey, ready to be shot into space. Space monkey! Ready to sacrifice himself for the greater good.

~ Tyler Durden

The last email i ever got from him was July 28th, 2005. He said it was awesome talking to me just now. He said if his last couple of sentences got garbled (via the satellite phone he had), he would send me the telephone number for that catina he called me from whenever he could get it.

Then he said: say hi to Thomas.

That is the last thing he ever wrote to me. My son’s name.

September 11th, 2005. Costa Rica. Northern Pacific coast, near Ollie’s Point and Witch’s Rock, which is where a man goes when he has worked out where the good water is.

He was doing exactly what he loved with the people he loved. He did not want a funeral. He wanted a party and a lot of rum, and that is what he got, and i think that is the most Sven thing about the whole business.

At the party his mother put her hand on my face and told me i was the closest thing she had left to her son.

His brothers came up to me, separately, and thanked me for transforming him.

And someone sent me a line in an email that i will not reproduce here, but the sentence was that Steve felt like i was the only friend who really understood him.

Twenty-one years and i have never once figured out what to do with any of that except carry it.

The sea was not finished with that family.

Last year 2025 i helped put his son Gage back into ocean. Gage was better at the math than his father was, which is a thing i am allowed to say because i knew them both. Acted just like him. Same everything.

There is no lesson in this paragraph. Some years the ledger just gets longer.

But before that, i did the only useful thing i have ever done in twenty-one years of this.

i took Roma Dawn (aka Good Lookin’) freediving.

The woman whose husband died on a breath-hold, back down into the water on a breath-hold, on purpose, with humans who love her and know what they’re doing next to her.

You do not get to make the water safe. You do not get to make it anything. What you can do is make sure the person you love does not have to be afraid of it on top of everything else.

That is the whole job, as far as i can tell. You carry the fear first so the people behind you get to go in clean.

So here is where i stop, on nine, and nine rolls over to The One.

One breath.

That is all any of it ever was. He went down on one. His boy went back to same water. His wife went back in on one and came up. My oldest daughter, My Son, and my nephew now “go down on one” for fun now, and come up laughing, and they have no idea what that cost or who paid it, and they are never going to, because that is what the paying was for in the first place. The_Infinite_Human_Do_Loop

Twenty-one years, comrade. The boat was real. The plan was real. You pushed back from the desk and you went.

To every sailor the gods have given a comrade
While one sleeps the other keeps watch on the bridge
When one doubts the other gives him his faith
When one falls the other discovers the oasis of ice for both of them
When my comrade loses faith I laugh confidently
When my comrade sleeps I keep watch for him
When my comrade falls I fight on for the both of us
Because to every sailor the gods have given a comrade!

~ Blood Axis Song of The Comarade

Stay deep.

With my love always to Roma and Leif

MUZAK TO BLOG BY: Rome — “We Who Fell in Love with the Sea.” Same as every year. Some things do not get a new arrangement.

#iwishyouwater

EverForward,

@tctjr