Carl the undead goldfish
Carl was not like the other goldfish. For one, he was dead. A mild, and unceremonial toxic event in a small desktop aquarium sent him belly-up one Tuesday a few weeks back. Now for reasons best left to B-movie science fiction, he came back. Sort of, kind of.
He is now, an undead fish. His movements were slow and ponderous. His once bright orange scales had a dull, grayish tinge, and one of his googly eyes stares perpetually at the corner of his tank. His existence is a dim, shambling loop: float, bump into the glass, float some more. The primal zombie urge for brains was present, but faint, like a distant radio signal. Mostly, he just felt a vague, gnawing… a lack of structure.
As this story would have it, his tank shared the desk with a programmer named Steve. Among other things like rock-climbing and painting 3d models, Steve was a C# developer. For the uninformed, it means that he is a creature of logic and order who spends days staring at a large screen, with his face reflecting a cascade of curly braces, semicolons, and keywords.
For weeks, Carl’s one good eye would catch the reflection of the monitor on the tank wall. At first, it was just meaningless light. But his rewired undead brain, no longer cluttered with fishy thoughts like "Is that a flake?" or "Is that my own reflection?", began to see patterns. Just to observe.
public class Program
{
public static void Main()
{
Console.WriteLine("Hello, World!");
}
}
The indentation. The rigid syntax. The elegant flow of if-else statements. It spoke to a deep, undead part of his soul. This, he thought with a clarity that surprised him, was the structure he craved. The world outside the tank was chaos, but in the shimmering code, everything had a place and a purpose. Meaning, form.
His single-minded zombie focus shifted from a low powered drive for non-existent brains to a runny gravy sliding towards C#.
Carl’s biggest problem, of course, was the interface (or lack there of). He had no keyboard, no mouse, only a snout, a fin, and and a tank full of multi-colored gravel. But determination is a powerful force, especially when you have literally all of eternity.
He started small. Using his snout, he slowly and carefully nudged the tiny pebbles while keeping them in focus with one of his eyes. A curved arrangement of blue pebbles for a C. A line of red ones for an l. It took him three days to arrange his first variable declaration at the bottom of the tank:
string name = "Carl";
He floated back to admire his work, a flicker of something - not life, but satisfaction - stirring in his cold, dead heart. Calm.
Steve never noticed. He’d occasionally glance over, see the gravel in a weird pattern, shrug, and go back to debugging a pesky LINQ query or finding the next 3d-object to print and paint.
Over time, Carl grew more ambitious. He began to plan a full program loop. His goal was simple, born of his most pressing fishy memory: the inconsistent delivery of food flakes. Steve was erratic with his actions. Some days a feast, some days a famine. Carl would bring order to this chaos. Order through creation.
He began what would become his magnum opus. Each day, pushing gravel became his life's work. He used green pebbles for comments, a habit he picked up from watching Steve.
// A system for the logical and timely distribution of fish food.
public class FlakeDispenser
{
public bool IsItTimeForFlakes(DateTime currentTime)
{
if (currentTime.Hour 9 || currentTime.Hour 17)
{
return true;
}
return false;
}
}
It took him two weeks. The entire floor of his tank was a beautifully formatted, albeit slightly mossy, C# class. He was exhausted but triumphant.
One Monday morning, Steve sat down at his desk, coffee in hand, and glanced at the fish tank before starting his work. He squinted through his glasses, then removed them for a closer look. As he leaned closer, his nose nearly touching the glass his eyes began to widen. He wasn't seeing a random mess of pebbles. He was seeing syntax.
"Public... class... FlakeDispenser?" he whispered, his coffee mug frozen halfway to his lips. He followed the logic with his finger on the glass. The method IsItTimeForFlakes, the if statement checking the hour. It was… elegant. It was… valid C#.
In shock, he looked at Carl, who was hovering proudly beside his work, his one eye staring intently at Steve. For the first time, Steve saw not a simple goldfish who was slightly discolored and didn’t look so good, but a cognitive colleague.
"You want flakes at 9 a.m. and 5 p.m.," Steve said, a slow grin spreading across his face. "You absolute genius."
He immediately went online and ordered an automated, programmable fish feeder. He set it to dispense a precise amount of food at 9:00 a.m. and 5:00 p.m. every day.
Carl’s existence finally had order. He got his flakes on schedule, every time. His days were no longer spent in a mindless stupor. Satisfaction.
Now, he spent them contemplating a new project, arranging pebbles in his mind. He’d seen Steve wrestling with asynchronous programming. Perhaps an async await method was in order.
After all, for an undead fish, waiting was something it knew a lot about.
