When the Hexagon Finally Obeyed
Situation
Albert came back to his 3D soccer-ball project after missing a class.
At the beginning of this 1.5-hour session, the truncated icosahedron was still very much a work in progress. He had started with two points on one edge of an icosahedron.
Then he did something much bigger.
He placed two points on all 30 edges.
Suddenly, the hidden structure of the soccer ball became visible. The pentagons and hexagons were no longer mysterious shapes waiting to be drawn. They could be constructed from the geometry already sitting inside the icosahedron.
The remaining challenge was to turn each triangular face into a hexagon.
Albert wrote drawHexagonFace(a,b,c).
He knew exactly what the six points represented: two points on each of the three edges of the triangle.
But knowing the six points was not enough.
Turning Point
The natural first thought was:
a-b, b-a, b-c, c-b, a-c, c-a.
Every edge was represented by its two points.
It sounded perfectly reasonable.
It was also spectacularly wrong. 😂
The hexagon lines shot wildly across the triangle.
Albert already understood the important geometric idea: the six vertices had to be traversed in cyclic boundary order.
So he began debugging.
He commented out two vertices.
A beautiful trapezoid appeared.
He added the fifth vertex.
Darkness returned.
He commented out three vertices.
A perfectly respectable triangle appeared.
He added the fourth.
Embarrassment again.
The points themselves were right. The geometry was right. Something about the way Albert had mapped his points into the function was wrong.
Then Albert stopped.
He thought for a while.
Instead of randomly rearranging six vertices, he started switching the order of each pair:
a b → b a
then the next pair,
then the next.
One by one.
Finally he said, calmly:
“I think this fixes all of them.”
It did.
Boom.
Every hexagon fell into place.
Albert's Soccer Ball:
Emergence
The breakthrough was not a new formula.
Albert had already understood the geometry.
He realized that the order of the parameters in his own function was opposite to the order he had originally imagined.
Once he corrected that relationship, the same fix worked across all the faces.
That was the beautiful part: Albert wasn't fixing one broken hexagon.
He had found the reason all of them were broken.
And then he made a change that repaired the entire structure.
When Donald asked him to explain exactly why it worked, Albert gave an explanation that Donald understood perhaps 80% of.
Albert, presumably, understood his own reasoning 100%.
And that was perfectly fine.
Learning
Programming is full of moments when the computer tells you that your idea and your implementation are not quite the same thing.
Albert already knew:
the vertices must go around the boundary in the right order.
The harder discovery was realizing that his own (a, b, c) parameter interpretation had reversed the order he needed.
He didn't memorize the correction.
He reasoned his way into it.
That matters.
A chess player doesn't win because someone tells him which move to make. A mathematician doesn't solve a problem because the answer is displayed in front of him.
They build a model, notice something doesn't fit, and search for the relationship that makes everything fit again.
Albert did exactly that with six points on a triangle.
And then the entire soccer ball obeyed.
Theme
Reasoning
What Is Possible
A 20-faced icosahedron can become the geometric skeleton of a soccer ball.
How Does It Happen
By placing two points on every edge and connecting those points in the correct cyclic order.
Why Does It Matter
Because when the code doesn't match the idea, reasoning can reveal the mismatch—and one small structural insight can fix everything.