The Bike That Kept Becoming
Situation
Enning's 3D bike project had already become much more than a drawing. It had wheels, pedals, a triangular frame, a front fork, spokes, and a growing collection of functions and parameters.
Enning's Mountain Bike:
At the beginning of today's class, however, the bike still had a small but very real problem: the pedal was touching the ground.
At the same time, Enning brought a completely different problem from her school mathematics book:
x = (1 - y) / x, x > 1
It quickly became clear that the algebra itself wasn't the difficult part. Enning needed to rebuild her intuition about inequalities.
So the class moved unexpectedly between two worlds: mathematical inequalities and a 3D bicycle.
Turning Point
For the inequality, Donald gave Enning a very concrete anchor:
If you have 5 apples and I have 3, you have more. If we take the same number away from both piles, you still have more. If we add the same number to both, you still have more.
And when the direction after multiplying by −1 became confusing, there was an even simpler experiment:
3 > 2
Multiply both sides by −1:
−3 < −2
The inequality could be checked rather than memorized.
Enning then wrote a whole chain of reasoning herself:
x > 1
x² > 1
x² + (−x²) > 1 + (−x²)
0 > 1 − x²
−1 + 0 > −1 + 1 − x²
−1 > −x²
−x² < −1
She did not realize she was writing a proof.
Then Donald suddenly noticed something funny: they could have stopped much earlier.
The original equation gives:
y = 1 − x²
and Enning had already reached:
0 > 1 − x²
So, immediately:
y < 0
The long route had accidentally demonstrated something more valuable than the answer: Enning could construct a mathematical argument one valid step at a time.
After a few Khan Academy practice groups, she moved on to word problems. Donald told her that the stories were simply "inequality wrapped in stories" and trusted her to read them carefully on her own.
Then they returned to the bike.
Emergence
To fix the pedal touching the ground, Enning made the wheels bigger.
But that exposed another constraint. The gap between the triangular frame and the front wheel was relatively small, so making the wheel larger risked making it touch the frame.
When asked for an idea, Enning immediately proposed:
"We can move the front wheel along X axis."
She created a global frontWheelX so the front wheel could move while the red coordinate axis followed it.
The front fork was more complicated. Its upper end needed to remain fixed, so simply moving the fork was not enough. Enning changed its angle and made the bar slightly longer to preserve the geometry.
At that point, the little bike began turning into something else.
The torus became larger. The spokes became longer.
"We've never used fill() on the tires. Should we give it a try?"
Enning tried red first, just to see what happened.
Then she made the tires black.
Donald noticed another small detail: the spoke cylinders had been given a value of 0, even though the rendered spokes were visibly thin.
"0 is misleading, right? A small value makes more sense."
Enning agreed.
The bike was no longer merely being made to work. They were beginning to ask whether the code accurately represented the thing they were trying to model.
The baby bike had become a mountain bike.
Learning
The class also produced several small but important programming discoveries.
When it was time to make a video, Donald introduced a separate animation variable:
demoAngle += 0.01
with rotations around the X, Y, and Z axes.
But Enning already had an angle controlling the rotation of her wheels and pedals.
Donald immediately stopped the naming collision before it happened:
"This angle is NOT your angle!"
The new variable became demoAngle.
That distinction mattered. One angle described the mechanics of the bike; the other described how the finished object should be presented.
Then they experimented.
0.01 was far too slow.
0.1 was still not enough.
Enning found that 2 produced the motion they wanted.
And she immediately explained why:
"So I don't have to drag it when shooting the video."
The animation was no longer just something that moved. It was a tool serving a real purpose.
But the full XYZ tumbling animation didn't actually show the bike's 3D form very well. They stopped the X rotation. Then they stopped the Z rotation too.
What remained was essentially a slow rotation around Y:
demoAngle += 2
rotateY(demoAngle * 0.3)
The bike now rotated like an object on display in an exhibition.
Finally, they commented out the XYZ scaffolding that had helped during development. The scaffolding had served its purpose; now the bike itself deserved the attention.
And just when they thought they had made the final stroke, Donald realized something was still missing.
The pedal had not been talking to the rear wheel.
The next problem was already waiting:
How does the pedal drive the rear wheel?
Theme
Constraints become possibilities
What Is Possible
A bike that began as a small 3D project can become a mountain bike, an animated object, and eventually an exhibition piece simply by changing parameters and following the consequences.
How Does It Happen
By observing, experimenting, checking, changing, and asking what must remain true when something else changes. Mathematics, geometry, programming, and design keep meeting inside the same project.
Why Does It Matter
Because understanding grows when the learner is allowed to discover the next problem herself. A bug can become a design question. A confusing inequality can become a proof. A variable can become a model of a real-world relationship.
Epilogue
Near the end of class, the bike's code had grown to 333 lines.
Donald moved closer to the screen.
"What a cool number!"
Enning looked at the number and replied:
"It'll be better if it was 666."
And so the mountain bike left today's class with 333 lines of code, a new exhibition spin, and one important mechanical relationship still waiting to be invented.
The bike was not finished.
It had simply acquired its next question.