Port
INPUT / OUTPUT
Loading audio…
Press play to listen along. The line being read lights up as you go.
Show full transcript
Loading transcript…
The doorway stood in the middle of the workshop floor, and for a long time it just breathed.
That was the only word for it. Port was a sturdy wooden doorway set into a stretch of wall that led nowhere — no room behind it, no room in front. On its left cheek was a narrow slot marked IN. On its right cheek, a wider slot marked OUT. And all morning, tiny things had been sliding through it. A tapped key came whispering in the left slot and vanished. A moment later a printed line of letters came sliding out the right, and dropped, warm as toast, onto a little screen propped against the wall.
Loop the mentor sat cross-legged beside it, feeding it. Tap. In. Wait. Out. Tap. In. Wait. Out. He wasn't building anything. He was just letting the doorway do the one thing a doorway does — carry.
A kid wandered over, clutching Bit, the palm-sized robot the class programmed. "That door goes nowhere," the kid said. "Why do you keep poking it?"
Loop tapped one more key. The keystroke slid in. He waited. A single glowing word slid out and landed on the screen: here.
"It doesn't go nowhere," Loop said. "It goes everywhere. Watch what happens when I stop." He folded his hands. The slots went quiet. The screen dimmed. And Bit, in the kid's hands, sat there computing away with its little lights — thinking hard, saying nothing, hearing nothing. Sealed shut. A clever robot in a locked box.
"That," said Loop, "is a program with no doorway. It can be brilliant all day long and nobody would ever know." He reached out and tapped the IN slot once, gently, like knocking. "Port is how it stops being alone."
Port had never been a hatchling or a foundling or anything with a childhood, because Port was a doorway, and doorways don't have those. But Loop remembered the first program he ever wrote that couldn't connect, and that memory sat in him like an ache.
He'd been small. He'd built a calculating engine out of string and gears, and it worked — it truly worked, chewing through sums faster than he could — and he'd stood beside it for an hour, thrilled and then, slowly, hollow. Because there was no way to ask it anything. No way for it to tell him a single answer. It just spun, sealed, keeping every result to itself.
"I felt like I'd made a friend who couldn't hear me," he'd told the class once, quietly, not looking up. "All that cleverness, and it was stuck inside, and I was stuck outside, and there was nothing between us."
The next thing he built had a slot. Just a slot — somewhere to drop a pebble in, somewhere for a pebble to roll out. It barely did anything. But when he dropped a stone in and a stone rolled out the other side, changed, because of him — the hollow feeling went away. Not because the engine was smarter. Because it could finally reach him back.
That slot grew up into Port. The whole idea of it is the width of that ache closing: a way in, a way out, and no more being alone on either side of the wall.
So when Loop came to the workshop to teach, he brought the doorway with him and set it right in the middle of the floor, where nobody could pretend it was furniture.
The old caretaker of the workshop watched him wheel it in. "A door with no house," she said. "What does it do?"
Loop didn't explain. He knelt, pressed a key, and let the keystroke slide in the IN slot. He waited — you always wait, at a doorway — and out the OUT slot came the word hello, sliding onto the screen. Then he plucked a covered light-sensor off the bench and held it to the IN slot; when he cupped his hand over it, a shadow-reading slid in, and out the other side came a command that flicked a small lamp on.
"World comes in this side," Loop said, standing. "Answer goes out that side. That's all it is. It doesn't think. It doesn't decide. It just refuses to let the program be sealed off."
The caretaker looked at the little lamp, glowing because a hand had passed over a sensor across the room. "Keep it," she said. "It belongs here."
Bit's turn came on a grey afternoon, when a kid slumped at the bench, sure the robot was broken. "It runs," the kid said, "but it just... ignores me."
"It can't hear you yet," Loop said. "It has no doorway. Let's give it one." He set Port beside Bit and wired the two together. "Now — tell Bit to ask your name."
The kid typed the instruction. Bit sent a question OUT through Port, and the words appeared on the screen: What's your name?
"Now answer it," Loop said.
The kid typed Sam. The letters slid IN through Port and dropped into a little box Loop called a Stash, where the program could hold onto them. Then Bit sent something back OUT: Hi, Sam!
Sam stared at the screen. "It... knows me."
"It read you," Loop corrected gently. "IN through the door. Then it answered — OUT through the door." He clipped the light-sensor onto Bit and set it on the bench. "Cover it."
Sam cupped a hand over the sensor. The dark reading came IN; a command went OUT; Bit's tiny lamp blinked awake under the shadow. Sam laughed — a real, surprised laugh — and did it again, and again, hand over sensor, lamp on, hand away, lamp off, the robot answering every single time.
"An hour ago it was sealed shut," Loop said, watching. "Now it's reading the actual world and answering it back. Nothing about Bit got smarter. It just stopped being alone."
Later, when the workshop had emptied, Loop rolled Port back to its place against the wall and let the slots go still.
Sam lingered at the door — the real one, the one that led outside. "It's just carrying stuff," Sam said. "In and out. That's not a big deal, is it?"
Loop thought about the string-and-gears engine, and the hour he'd stood beside it feeling hollow.
"Try it the other way," he said. "Think of the best moment today."
Sam didn't have to think long. "When it said Hi, Sam."
"That's the doorway," Loop said. "Not the computing. The hearing." He rested a hand flat against Port's quiet wood. "Everything you make that reads the world and answers back — every game that feels your tap, every robot that turns toward you — it's carrying a little of what you felt just now. Somebody made something, and the something answered, and neither of them was alone anymore."
Sam nodded, and headed out the real door into the evening — still warm, somewhere in the chest, with the small bright feeling of having been heard.
Hear it as an audio drama
A short play starring Port, from CodeRealm. Different voices, same idea. Listen any time after you read.
Loading audio…
Read the drama script
- Narrator: From Spark and Anvil and CodeRealm — this is Port, in chapter 1 of the CodeRealm cast.
- Narrator: This drama uses an AI-generated voice. Voiced via Gemini 2.5.
- Narrator: A sturdy wooden doorway stands in the middle of the workshop floor, set into a wall that leads nowhere. On its left cheek, a slot marked IN. On its right, a slot marked OUT. This is Port.
- Narrator: All morning, tiny things slide through — a tapped key whispers in the left slot; a printed line slides out the right onto a little screen. Loop feeds it: tap, in, wait, out.
- Kid: That door goes nowhere. Why do you keep poking it?
- Loop: It doesn't go nowhere. It goes everywhere. Watch what happens when I stop.
- Narrator: Loop folds his hands. The slots go quiet. The screen dims. And Bit, the little robot, sits computing away with its lights — thinking hard, saying nothing, hearing nothing. Sealed shut.
- Loop: That is a program with no input and no output. It can be brilliant all day, and nobody would ever know. Port is how it stops being alone.
- Narrator: Loop remembered the first machine he built that couldn't connect — a calculating engine of string and gears that worked, truly worked, but had no way to be asked a question and no way to give an answer.
- Loop: I felt like I'd made a friend who couldn't hear me. All that cleverness, stuck inside, and me stuck outside, and nothing between us. So the next thing I built had a slot. A way in, a way out. And the hollow feeling lifted.
- Narrator: Bit's turn came on a grey afternoon, when a kid slumped at the bench, sure the robot was broken.
- Kid: It runs, but it just ignores me.
- Loop: It can't hear you yet. It has no doorway. Let's give it one.
- Narrator: Loop wired Port to Bit. The kid told Bit to ask a name. A question went OUT through Port onto the screen: What's your name? The kid typed Sam. The letters slid IN through Port. And Bit sent something back OUT: Hi, Sam.
- Kid: It knows me.
- Loop: It read you. IN through the door — then it answered, OUT through the door.
- Narrator: Loop clipped a light-sensor onto Bit. The kid cupped a hand over it; the dark reading came IN, a command went OUT, and Bit's tiny lamp blinked awake under the shadow. Hand away, lamp off. Every single time.
- Loop: An hour ago it was sealed shut. Now it's reading the actual world and answering back. Nothing about Bit got smarter. It just stopped being alone.
- Kid: It's just carrying stuff. In and out. That's not a big deal, is it?
- Narrator: Think of the best moment today, Loop said. When it said Hi, Sam, the kid answered. That's the doorway, said Loop — not the computing, the hearing. And Sam headed out the real door into the evening, still warm in the chest with the small bright feeling of having been heard.
- Narrator: You've been listening to a Spark and Anvil chapter, written by the Spark and Anvil writing team for ages 9 to 14.
- Narrator: Apps stay free forever.
- Narrator: Curriculum aligned to Computer Science Teachers Association standards.
- Narrator: Released under Creative Commons BY-NC-SA 4.0 for educational reuse. Visit Spark and Anvil for the full transcript.
The CodeRealm ensemble
Port is one of the friends in CodeRealm. Each friend shows you one idea by how they act; meet them all and you have the whole subject.
-
Stash
Variable / storage — the labeled box that holds a value until you call for it
-
Fork
Conditional / branching — chooses a path based on what's true right now
-
Trek
Loop / iteration — keeps going around until the work is done
-
Module
Function / encapsulation — does one job well and can be called anywhere
-
Glitch
Debugging / inspection — finds bugs gently, never shaming; 'there's always a reason'
-
Order
Sequence / syntax — reminds you that order matters in code
-
Row
A list: many values lined up in a numbered row, so you can grab item number three instantly or walk through them one by one.
-
Ping
An event: a waiting bell that does nothing until its trigger happens, then runs its code the instant it is struck.
-
Shuffle
Randomness: a fresh unpredictable value each time — a dice roll, a shuffled deck — so a program can surprise, vary, and stay fair.