Published work, short stories

Happy Anniversary

[So here’s that scifi romcom story I had in
Desktop magazine a little while back. You can download a .pdf of it for later-on-readableness or read the whole 2737 words now. Your choice.]

10 characters for the title, 55 characters for body text and a thirty-by-thirty thumbnail – that’s all you get on a station ticket reader. Plenty of space for the logo and a brief note about your ticket status. Not so much if you’re trying to squeeze a poem on there. To be frank, and with sincere apologies to any poets out there, you gotta do some radical surgery if you want that poem to fit.

The screen pixelates a little as the drone zooms its camera in on the platform, then comes good. I can make her out in the crowd from her bottle-green coat and her pigtails. She’s standing in line behind two other commuters, waiting to scan her ticket. Just in case she needs to recharge, I’ve got a 500-char version with a 150-square pic loaded up and ready for the recharge machine. The poem reads better at that length, but the ticket reader is just the first hack. I’ve built in some redundancy.

I met Kim a year and a half ago at Aaron’s birthday party. I’d seen her around campus but never spoken to her. She was going on a placement to Korea so there was a kind of no-strings-attached air about everything. By the time she was ready to leave I drove her to the airport. Six months later I was waiting for her at Arrivals. It all happened pretty quickly from there on.

My tablet bleeps and a new window pops up to show the text and images as they’re appearing on the ticket reader’s screen. I concentrate on the camera feed. There’s no sign she’s noticed anything – her body language is all commuter as she wanders onto the platform and reaches into her bag for her phone. I switch off the reader and ticket machine poems and scroll through the task list for the social media stuff.

I got the poem online – googled up a poet with a blog whose stuff was kind of sweet and easy to read. I didn’t want to nick something – I wanted something just for us. So I outsourced. If you want something done right you hire a professional – that’s what they keep telling us at school. I figure that’s true for art as well as programming.

orbits dinkus
It’s all about the headline
– the poet came up with a suitably poem-y name for the poem, but “Three Hundred and Sixty-Five Point Two Five”, without even taking into account how many characters those spelled-out numbers eat up (44), is too much of a tl;dr.

Sure, it gets the point of the poem across if you’ve got time to read the whole 44 characters, but nobody wants to invest that much time without knowing what they’re going to get out of it. Especially if they’re in the middle of something else, like going to work or updating their status or checking feeds.

With sponsored posts you have more characters and pixels to work with – depending on the platform anywhere between 90 and 180 characters and from 120×20 to 256×100 pixels. I’m not sure what Kim’s on these days, so I’ve spread myself across four sites. This part of the project is more marketing than hacking, but while I sort this out the drone will have a chance to set up the next hack.

Dan loaned me the drone on the condition she could use the capture as part of her assignment on the social impact of DIY drones. I told her I’d have to ask Kim if it was OK with her after it was all done and dusted, and she was cool with that. What I’m doing here is private, after all.

It took a while to integrate my software and her hardware, but we managed. Dan would come over on Kim’s craft nights and we’d test response times and fly the sucker around the loungeroom. Kim would come home with another dozen rows added to her Fourth Doctor cosplay scarf and ask me what I’d been up to. I would smile and make up something.

orbits dinkus

I log into the dashboard of all four sites in cascading windows and double-check that the ads are targeted with the stats I pulled from her profiles. She’d loaded some of them up with fake info, but that makes her profiles easier to find. They’re all good to go, just like they were last night.

Meanwhile the drone has landed on the roof of Kim’s train, hopefully close enough to her carriage. Its range in test flights has varied, but the lock on her phone should be strong enough to keep it close. I watch the motion-blurred view from its camera, a smudge of buildings and back fences with the occasional dark grey smear of intersecting roads. The blur slows and resolves into a clearer view of the next station along the line. The image flickers and bitmaps a little, but thanks to its mostly-Lego body the motor and CPU are insulated against most interference.

I check the stats for the sponsored posts, but there’s no sign she’s seen any of them. Zero views, zero interactions. Nobody likes this. All the graphs are at baseline. I wasn’t that confident – the right privacy settings could easily block all of these ads, or she could just be browsing or checking mail instead.

I had pretended to still be asleep when she left for work this morning, mumbling mock-sleepily as she kissed me on the head before leaving. As soon as I heard the door latch click I leapt up and ran to the lounge to grab my tablet from the couch. I opened up the apps I needed as I wandered back to bed and plonked myself down, pulling the doona over my bare legs as I started working.

The feed blurs again as the train pulls out of the station. I open up another window and start up the next hack, which will be the only transmission beside the social ads for the next seven stops.

The next-station announcement tickers at each end of the carriages are text-only, which saved me from having to crop or resize another image from the source file, but the text editing presented its own issue: a choice between scrolling the whole poem across the space available or cutting it into shorter chunks.

Scrolling was out, I eventually decided. There’s no guarantee someone would be looking at the ticker for long enough to read all 695 characters. Maybe you might linger for a few seconds, but however long it is, it isn’t long. Anything that needs sustained attention isn’t going to fly.

I’ve worked up a kind of summary of the poem and got that down to about 69 characters – one tenth of the original. After adding in the 10char title variant and the 24char URL, it felt about the right length to sustain someone’s attention long enough for my purposes.

Getting the right URL for the microsite was one of the fiddliest parts, even over all of the app programming and drone tests. It took literally twenty minutes to publish the poem and the picture I’d picked to accompany it, but finding an address that sounded right and hadn’t been squatted by bots was almost impossible. In the end I settled for That’ll do, I thought. The poem’s the thing, anyway.

orbits dinkus

The other risk with this particular hack is that the drone might not be sitting on Kim’s carriage. Its signal only has enough oomph to override the tickers in the carriage it’s attached to. There’s a good chance that, even if Kim does look at the ticker, the poem is being broadcast one carriage down or up the train. What the passengers in those carriages might make of my poem I can only imagine.

I pull up the stat counter for the poem site. A couple of visits have been registered, but a quick geocheck shows they’re all from Russia. The camera feed comes clear again and I watch as new passengers enter just below the drone’s vantage point. I notice a weird flickering near one guy and open the capture footage in another window so I can wind it back.

The freezeframe shows a localised motion blur over the guy’s chest. I roll it forward and the blur resolves into a bluish oblong with a darkish band slowly crawling upwards from the bottom of the oblong. I replay the clip with a few different filters and the oblong resolves into a looping gif of Natalie Dormer licking a sugar cube.

I curse myself for not considering Gshirts when I came up with the plan and yank the source files out of their folder. I open the pic, estimate and crop, centring on the ringed planet in the foreground. I wiki Gshirts and when the page loads I jump to the specs. They run a stripped back iOS, which means I already have everything I need to hack this guy’s shirt. The page also generously provides the screen resolution.

I ditch the pic and quickly crop three more from the original at the revised size, each one 20px lower than the one before to create a sense of panning upwards. I grab the 69 characters plus title and URL from the ticker hack – no time to edit something new – and drop text on each image, test the animation, then upload it for broadcast.

Obviously this is only going to work if Kim’s in the same carriage as the guy, but who knows? He might sit down right in front of her. If anyone else is wearing a Gshirt, all the better. This is going out to every shirt in range.

I imagine a whole train carriage of people in hacked shirts, each of them gradually becoming aware that their meme of choice has been hijacked, but only after chuckling to themselves about the shirthacked chump in front of them at the same time as said chump is having the same chuckle at said chuckler’s expense. Funny. The live feed unblurs. I can just make out the station sign. Two stops to go.

orbits dinkus

I’m feeling confident after the rush of that on-the-fly shirthack. It’s three blocks from the station to Kim’s office. She’ll pass four cafes and two souvenir stores. I was in the CBD last week and checked them all out. Three of the cafes have wifi and both of the souvenir joints have spruikerbots. It’s easy to get them to push onto the notification centres of passing unprotected phones. I don’t even need the drone to do it – this one’s all phonelines. Old school.

It’s another text-only broadcast (50 characters for the wifi push, 80 for the spruikerbots) but it does have the advantage of letting me hook the OK and NO, THANKS buttons both to the microsite, so I don’t need to find characters for the URL. The downside is that Kim might have her phone set to undiscoverable.

I scan the crowd as it pours out of the train. The feed zooms out and it takes a second for me to realise it’s the drone lifting off the carriage. Kim must be outside the station now. The camera pans across the commuters’ heads at the same time as pulling back to the preset surveillance distance. It’s a bit fuzzy but I pick Kim out, again thanks to her coat and pigtails.

She was wearing her hair in pigtails when we met. I thought it made her look like Abby from NCIS: Detroit. She’d never seen the show so I changed the subject and we spent the night talking about zombie fanfic instead.

I get an isometric feel from watching her walk to her building. Now that the crowd’s a little thinner I can make her out easily. I pinch the screen and zoom just in time to see her take her phone out of her bag again. My heart beats quickly as I re-check first the social media stats and then the microsite. Nothing. A couple more Russians on the microsite, but the social stuff is still all zeroes.

I knew there was no guarantee that any of this would work, but now that I’ve only got one hack left I have to admit I didn’t really think it would be this hard to get her attention.

The last hack is another phoneline one, which is good, since there’s no way I could get the drone into her building anyway. Even if I could, it’d be too obvious in the foyer. A drone buzzing past on the street? Whatever. Inside an office foyer? That’s a whole different story.

I pull up a new window that shows a realtime feed from the news screen just outside the lifts. Fuck it, I think. If this doesn’t work I’ll just text her. I glance over at the bedside table to check if my phone’s there. It isn’t.

orbits dinkus

The screen fills with an abstract-blue-swoosh background behind a square 200 x 200 pic of a footballer top left and a six-line summary of last night’s game bottom right. The screen holds for ten seconds, then horizontal-wipes to a fullscreen ad for superannuation.

I check the camera feed. Kim’s still on the street, a few doors up from her building. I activate the hack and watch as the screen wipes in the opposite direction, replacing the stockmarket update with the largest chunk of the poem I’ve used today.

I had thought about using the whole thing – there’s enough room for it here – but in the end I used eleven lines and another short, punchy title plus the URL. 296 characters total. It seemed a shame to clutter the screen with text when I could fill it with an image that sold the poem so much better.

It was a good opportunity to use the picture I’d chosen in all its uncropped glory: a shot of the solar system with Saturn in the foreground, taken from an orbiting satellite as part of the old Cassini mission. The space theme goes with the poem, which has a lot of astronomy in it. It was a gorgeous image, and it was a pleasure to fill that massive 5000 x 20000 space with it.

I’ve programmed the screen to keep looping, but to show the same image every time. A moving screen has got a better chance of catching someone’s eye than a static image, no matter how striking that image is.

The drone zooms in on the revolving door at the front of Kim’s building, but I haven’t pinched anything. I realise the drone is physically moving towards the building. Kim’s inside and it’s trying to follow. I give the retrieve button on the toolbar a quick click and disengage the camera. I don’t need to watch its trip back home.

So here we are. One hacked screen between success and failure. Nothing left to do now but wait. I shut down the drone controls, shift the news screen hack to the side and open up the social media and the website stat counters side-by-side on my screen. Refresh once. Nothing. Refresh twice. Nothing. Pause. Count to ten. Refresh. Nothing.

I distract myself for a moment by checking my own feeds and emails, then go back to refreshing. Still nothing. I log in and out of the stat counters to see if that will make the numbers change. It doesn’t. Not even the Russians are interested now.

Something under my bed starts rumbling. It takes me a moment to realise it’s my phone. I must have muted it last night. I check the time. It’s too early for the alarm to remind me to start getting ready for class. It’s a call. I glance at the stats windows, but there’s still no change.

I drop to the floor and scrabble around under the bed, feeling the phone’s plastic casing against the tip of my finger. It shudders and I shove my arm in further. I flatten my fingers against the back of the phone and drag it, vibrating, slowly out from under the bed.

I sit up and hold the phone upright. It pulses once more, then goes quiet. The screen lights up. One missed call. Three characters. I stare for a moment at the 10×10 icon on the screen.

It was her.

Originally published in Desktop #295 – Other Worlds. Illustration by Alex Fregon (

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s