The music is loud and the lights are bright.
You are in a crowded dancehall.
[[There is someone next to you]]You
feel their fingers interlaced with yours. You're dancing, and as you
dance you feel the force of their body pulling you closer.
[[Wake]]You've had this dream before. It doesn't get any easier.
You still have to get up though.
[[Get on with it]]<div
class=fadegroup>You are in a bedroom, which contains a number of
objects. These objects include, but are not limited to:
* [[A wardrobe]]
** Shirts
** Jeans
** A pair of shoes
* [[A desk]]
** A computer
** The monitor display for the computer
** The keyboard and mouse for the computer
** Some pens
** A chair
* [[A bed]]
* [[A bookshelf]]
** 'Game Programming Patterns' by Robert Nystrom
** 'Harlowe 3.1.0 manual'
** 'The Law of Leaky Abstractions' by Joel Spolsky </div><div class=fadegroup>
* [[Shirts]]
* [[Jeans]]
* [[A pair of shoes]]
[[Back->Look around you]]</div><div class=fadegroup>
* [[A computer]]
* [[The monitor display for the computer]]
* [[The keyboard and mouse for the computer]]
* [[Some pens]]
* [[A chair]]
[[Back->Look around you]] </div>You- you really need to get to work. Please.
[[Back->Look around you]] <div class=fadegroup>
* [['Game Programming Patterns' by Robert Nystrom]]
* [['Harlowe 3.1.0 manual']]
* [['The Law of Leaky Abstractions' by Joel Spolsky]]
[[Back->Look around you]]</div>As
you strenuously lift your body from the bed, you feel the form of the
mattress shift. The duvet folds, creating a right-angled triangle.
[[Look around you]] What you're wearing now is fine.
[[Back->A wardrobe]]What you're wearing now is fine.
[[Back->A wardrobe]]What you're wearing now is fine.
[[Back->A wardrobe]] It hums gently.
[[Back->A desk]] The monitor uses an incredibly large number of tiny lights to display the word 'PASSWORD'.
[[Back->A desk]]A
large array of plastic keys each correspond to a form of signal that
can be sent to the computer. Additionally, the mouse can use an optical
sensor to detect movement.
You change your password every night. The dream seems to have messed
with your memory.
(if: $password is true)[ [[Type 'directfloorsilentform']]
][[Back->A desk]]Uni-Ball Air Rollerball Pens, an amount of ink left in them ranging between 40% and 100%.
[[Back->A desk]]In
fifth grade, my friends and I were given access to a little unused
classroom housing a couple of very beat-up TRS-80s. Hoping to inspire
us, a teacher found a printout of some simple BASIC programs for us to
tinker with.
The audio cassette drives on the computers were broken, so any time we
wanted to run some code, we’d have to carefully type it in from scratch.
This led us to prefer programs that were only a few lines long:
(font:"Courier New")[10 PRINT "BOBBY IS RADICAL!!!"
20 GOTO 10]
Even so, the process was fraught with peril. We didn’t know how to
program, so a tiny syntax error was impenetrable to us. If the program
didn’t work, which was often, we started over from the beginning.
[[Back->A bookshelf]]`Hyperlinks
are the player's means of moving between passages and affecting the
story. They consist of link text, which the player clicks on, and a
passage name to send the player to.`
`Inside matching non-nesting pairs of [[ and ]], place the link text and
the passage name, separated by either -> or <-, with the arrow
pointing to the passage name.`
`You can also write a shorthand form, where there is no <- or ->
separator. The entire content is treated as a passage name, and its
evaluation is treated as the link text.`
`Example usage:`
(font: "Courier New")[`[[Go to the cellar->Cellar]] is a link that
goes to a passage named "Cellar".`
`[[Parachuting<-Jump]] is a link that goes to a passage named
"Parachuting".`
`[[Down the hatch]] is a link that goes to a passage named "Down the
hatch".`]
[[Back->A bookshelf]]There’s
a key piece of magic in the engineering of the Internet which you rely
on every single day. It happens in the TCP protocol, one of the
fundamental building blocks of the Internet.
TCP is a way to transmit data that is //reliable//. By this I mean: if
you send a message over a network using TCP, it will arrive, and it
won’t be garbled or corrupted.
We use TCP for many things like fetching web pages and sending email.
The reliability of TCP is why every email arrives in letter-perfect
condition. Even if it’s just some dumb spam.
By comparison, there is another method of transmitting data called IP
which is //unreliable//. Nobody promises that your data will arrive, and
it might get messed up before it arrives. If you send a bunch of
messages with IP, don’t be surprised if only half of them arrive, and
some of those are in a different order than the order in which they were
sent, and some of them have been replaced by alternate messages,
perhaps containing pictures of adorable baby orangutans, or more likely
just a lot of unreadable garbage that looks like that spam you get in a
foreign language.
Here’s the magic part: TCP is built on top of IP. In other words, TCP is
obliged to somehow send data reliably //using only an unreliable
tool//.
[[Keep reading]]This
is what I call a //leaky abstraction//. TCP attempts to provide a
complete abstraction of an underlying unreliable network, but sometimes,
the network leaks through the abstraction and you feel the things that
the abstraction can’t quite protect you from. This is but one example of
what I’ve dubbed the Law of Leaky Abstractions:
''All non-trivial abstractions, to some degree, are leaky.''
[[There's a slip of paper on this page]](set: $password to true)Password: directfloorsilentform
This was generated at random by a software tool, and then written down on the slip of paper using a pen.
[[Back->A bookshelf]] You
sit down on your chair.
Your fingers move to their resting position on the keyboard. You then
let them flick back and forth between the keys, acting without conscious
decision making.
Character by character, the screen renders what you type.
[[Hit 'enter']]The
computer begins processing the request. A dance of signals plays out,
between your machine and one many miles away. By varying the voltage on
wires laid out decades prior, information can be transmitted.
[[Wait]]The
process ends and the data is received. The software begins running; to
do this, it must call upon many other pieces of software, some written
before you were born. These will call on others still, all relying on
hardware to perform various tasks.
One such piece of hardware is your Graphics Processing Unit, or 'GPU'.
This technology is specialised to create images that your monitor will
then display.
It begins to render an image of a house.
[[Press the 'up' key]]Registering
this as the intention to move 'forwards', the computer begins adding a
forward velocity vector to your position vector, multiplying it by the
time taken to load the frame. Having moved, the GPU must now render the
house again, showing it closer than before.
[[Look around]]Registering
this as the intention to move 'backwards', the computer begins adding a
backward velocity vector to your position vector, multiplying it by the
time taken to load the frame. Having moved, the GPU must now render the
house again, showing it further away than before.
[[Look around]]By dragging your mouse, the view on the screen rotates, allowing other objects to render.
A mailbox stands to your left.
[[Examine mailbox]]While
looking at the mailbox, you click with your mouse. The mailbox door
opens, revealing what looks like hundreds of unopened letters.
[[Enter house]]You walk up to the house, and open the door.
The house looks incredibly modern; the floor is reflective, and the walls have a striking red and blue colour palette.
There are stairs leading upwards, and stairs leading to a basement.
[[Walk up]]
[[Walk down]]The modern aesthetic continues upstairs.
Paintings hang in a clean line, each depicting the same family sitting in formation with blank expressions.
There's an envelope on the floor, without an address.
A door stands ajar.
[[Walk through]]The stairs lead down to a narrow corridor.
[[Walk down corridor]](if:
visits is 1)[You enter into](else:)[You are in] a floor of office
cubicles. The flurescent ceiling lights are on, but no one is present.
You can see a door at the other end of the room.
[[Approach door->Mail room door]]
[[Examine cubicles]]The door is labeled 'MAIL ROOM'.
When you try the handle, you find it's locked.
(if: $mailroomkey is true)[ [[Unlock door->Outside mail room door]]
][[Back->Walk through]][[Cubicle 8]]
[[Cubicle 21]]
[[Cubicle 37]]
[[Back->Walk through]]Through the door is not a mail room, but an airport terminal.
[[Explore]]The desk has a framed photo of a dog on it.
An unfinished cup of coffee sits dejected.
[[Back->Examine cubicles]] (set: $mailroomkey to true)Under a stack of paperwork, you find a key.
[[Back->Examine cubicles]] An unaddressed but sealed envelope sits on the desk.
[[Back->Examine cubicles]] No one is here.
The shops all have their lights off. The flight boards list no departures.
You can walk through security with ease, as the scanner is turned off.
[[Walk outside]]You are on an airfield. You cannot see any planes.
Ahead of you, the ground begins to slope downwards.
[[Approach slope]]The slope extends so far down that you canot see the end.
You cannot help what happens next.
[[Run]]The walls of the corridor are made of stone. It stretches out a long distance.
The lighting is dark.
Eventually, you reach a right turn.
[[Turn right]]The corridor continues, however, the stone on the walls is replaced with tiles.
You can see something up ahead.
[[Keep walking]](if:
visits is 1)[At the end of the corridor is](else:)[You are in] a large
room full of typewriters, all typing on their own. Below each is a stack
of sealed envelopes, seemingly produced by the typewriters themselves.
Lanterns hanging from the ceiling illuminate the room.
You can see a door on the far wall.
[[Approach door->Typewriter door]]
[[Examine typewriters]]When you try the door's rusty handle, you find that it's locked.
(if: $typewriterkey is true)[ [[Unlock door->Outside typewriter door]]
][[Back->Keep walking]]The door opens to the top of a grassy hill.
Ahead of you, the ground begins to slope downwards.
[[Approach slope]] [[Typewriter 8]]
[[Typewriter 21]]
[[Typewriter 37]]
[[Back->Keep walking]] This typewriter is writing about memories.
[[Back->Examine typewriters]] This typewriter is writing about coffee.
(set: $typewriterkey to true)You see a bulge in one of the envelopes. Inside, you find a key.
[[Back->Examine typewriters]] This typewriter is writing about apocalyptic events.
[[Back->Examine typewriters]] You begin to run down.
Or perhaps fall.
The world is a blur.
[[Land]]The ground steadily becomes flat once more.
You are on a beach.
[[Look around you->Beach]]It's
night. In the distance, a blood moon; you imagined it to be
frightening, but instead the soft red light forms a gentle column on the
sea.
The cold air is felt sharply, but you bear it.
You begin to walk along the beach, and the sand gives where you step.
You spot a grocery store in the distance, separated from any other
building.
[[Continue down beach]]
[[Walk into store]]The door is unlocked, but no one is inside.
Some aisles are fully stocked with food, others are completely bare.
You feel a chill.
[[Try backroom]]Your walk is bringing you comfort.
The smell of saltwater and sound of the gentle waves ground you in this heightened space.
They're hard to see, but you notice the stars are out above you.
[[Allow hours to pass]]After walking for what felt like an eternity, you begin to hear a banging noise coming from up ahead.
[[Walk towards noise]]You approach a very bright, very loud building. The banging noise is that of music.
[[Enter building]]You shuffle in your chair.
[[Enter building->World's End Dancehall]]A shift schedule is pinned to the wall, but you can't make out any of the writing.
There's a banging noise coming from a door.
[[Approach door]]As you approach the door, you can hear the banging noise is that of music.
[[Open door]]You shuffle in your chair.
[[Open door->World's End Dancehall]]The music is loud and the lights are bright.
You enter a crowded dancehall.
Everywhere you look, you see people: dancing, laughing, drinking.
You start breathing heavily.
[[Walk into crowd]]You move forwards. You are moving closer to the people.
This isn't right.
[[Start dancing]]Which button is that again?
You're dancing with everyone else. This is where you belong.
Someone is watching you.
[[Look at them]]Which button is that again?
You're dancing with everyone else. This is where you belong.
Someone is watching you.
[[Look at themLook at themLook at them]]Packets
of data are rapidly sent back and forth between your computer and the
server, allowing for realtime movement within a game space.
The computer starts rendering their body. They're holding their arm
outstretched, waiting for you.
[[Take their hand]]You get up from your desk and start burying your head in your hands.
[[Ask them how they've been]]You grab your coat and storm out of your room. You need air.
[[Hold them close to you]]The power cuts out.They are looking deep into your eyes.
[[You are holding their hand]]By your desk sits a chair, bought several years ago from IKEA.
[[Back->A desk]]
↶↷You've had this dream before. It doesn't get any easier.
You still have to get up though.
Get on with it