Short story · From the Margen catalogue
My app says someone goes up to the roof terrace at 3:40

14 August. 14 days of logs left.
I am writing this while it happens, not afterwards, because afterwards it is going to sound better than it is.
My name is Alba Quintela, I study computing, and I built Poleo in March, in second year, for my web development module and so my mother would stop going downstairs to check whether the washing machine was free. It is four screens: washing machine, roof terrace, bike room and garage. You book, your name comes up, and the door entry system unlocks the area you booked for as long as you have it. We installed it in April in the twelve flats at number 18, Vara de Rey. It works. It is the best thing I have made in two years of my degree and it is 190 lines long.
The log panel costs money. When the app started getting slow I turned on the free trial, which is fourteen days: on 28 August it switches off and I go back to seeing nothing. That is going to matter.
I went in today because the app was slow in the afternoons and I wanted to see whether there were odd requests. And there is one.
roof terrace · 03:40 → 05:40 · 3B
Every night. Fourteen out of fourteen. That is, every night I can see.
15 August. 13 days of logs left.
Marc Oliván lives in 3B. I know because the app says so: the account is his, with his phone and his flat. He is twenty-four and he delivers on an electric bike, one of those with a box on the back; I have watched him charge it in the entrance hall a hundred times.
Nobody goes up to a communal roof terrace in Logroño at four in the morning in August fourteen nights running. The chairs have been stacked and tied with a rope since June.
What I thought first I am not going to dress up: I thought he was going up there to smoke something, and then I thought he was going up there with someone, and both of those struck me as his business and neither of them explained why the booking lasts exactly two hours and ends at exactly 05:40.
16 August. 12 days of logs left.
I looked at the camera. I have to write it like that, without softening it: I looked at the camera.
There is no camera on the terrace. There is one in the entrance hall, the insurer's, and the door entry system keeps the opening events for thirty days. I have the admin password because I installed it, and I have it because Fina gave it to me so the app could talk to the entry system.
In the entrance hall events, 3B opens at 03:38 every night. And then, at 03:40 on the dot, the bike room opens.
Nobody has booked the bike room.
17 August. 11 days of logs left.
It took me an hour to find it and five minutes to understand it.
In Poleo, when a booking starts, the server calls a function named «abrirZona» and passes it the area booked. I wrote that function in March at two in the morning. I pass it the building's list of areas and, inside, a loop. The loop goes through the whole list. It does not filter by the area of the booking: the variable that was supposed to filter it I declared outside and never use.
Translated: when somebody books the terrace, my app opens the terrace, the washing machine, the garage and the bike room. All four. For the entire length of the booking.
It has been like that since April. Four months.
18 August. 10 days of logs left.
The bike room locks at eleven at night. That one is not on me: the residents' committee decided it in 2023, before I was even on the register, because there had been two thefts and because the insurer asked for it. Fina Lizarbe, who has been chair for eleven years and is the only one who reads the policies all the way through, repeats it at every meeting: from eleven to seven nobody goes into that room, and anyone who leaves their bike out can chain it in the hall.
Marc finishes at half past three.
19 August. 9 days of logs left.
I have done nothing. That is today's entry.
I could have fixed the function in four minutes on the 17th. It is one line. And I have not touched it, and I have spent two nights watching the log at four in the morning to see whether the booking came up again.
The booking comes up again. 03:40 → 05:40. Every night.
My grandmother would say I am a nosy parker. What I am is an administrator, which is worse, because you can see a nosy parker coming.
20 August. 8 days of logs left.
Eight days of trial left. I am not going to pay nineteen euros a month for the logs of a twelve-flat building, so on the 28th the panel goes dark and that is that.
So I did the third thing I should not have done: I downloaded to my laptop the two weeks I can see, before I lose the panel. A 2.1-megabyte file with everything my neighbours have opened since 11 August.
It is in my Downloads folder. I am writing it here so I remember to delete it.
21 August. 7 days of logs left.
Last night I went down.
I went down at 03:35 with taking the cardboard out as my excuse and sat on the step in the entrance hall with my phone. At 03:38 Marc came in pushing the bike by the handlebars, with the motor off so it would not make a noise. He has an insulated box on the back with the logo half peeling away. He wheeled it to the bike room door, waited two minutes standing there looking at his phone, and at 03:40 the door clicked and he went in.
He saw me on his way out.
"Have you had a power cut?" he said.
"No. Have you?"
He took a long second.
"Me neither."
22 August. 6 days of logs left.
Today he stopped me, in the lift, at one in the afternoon.
"You're the one who did the booking thing, right?"
"Yes."
"It's brilliant," he said. And then: "Listen, I don't use the terrace. I book it and I don't go up."
"I know."
His face dropped before I could say anything else, and I said the only thing that came to me, which was the truth.
"It's my fault. There's a bug in the code and your booking opens all four doors. I found it five days ago."
"Bloody hell."
"Why didn't you say so at the meeting?"
He laughed without meaning it.
"Go up and tell Fina I need the room at four in the morning? The first thing she asks me is what I do for a living. The second is how much the bike weighs."
The bike weighs twenty-eight kilos. 3B has no lift straight down to the garage: there are four steps between the hall and the ramp. He had spent two years carrying it up the stairs. Fourteen nights ago he booked the terrace for a barbecue that never happened, went down for the bike and found the room open. He has not carried it up since.
23 August. 5 days of logs left.
I fixed the function this afternoon. Three words. The variable that was declared outside now goes inside the loop and filters by area. I pushed the version at 19.10 and tested all four screens with my own phone.
And then I added six more lines nobody asked me for: the bike room stays open from 03:00 to 04:30 for any neighbour with an account, and every opening is recorded with the flat and the time in a table Fina can look at whenever she likes. I sent it to her on WhatsApp at 19.40 with one line: "That room is the only door anybody comes through at that hour, and I would rather you saw it than nobody did."
Fina replied at 21.02: "And the insurance?" And at 21.04: "Send me the table every Monday."
24 August. 4 days of logs left.
Tonight the bike room opened twice.
At 03:52, 3B.
At 04:03, 5C, who is a lady I have been saying hello to in the lift for eight years and who I had no idea owned a bike.