Programmer at Large: Are you serious?

Note: The previous chapter had a rather critical misplaced decimal point. Ship launch was 9.7 gigaseconds ago (about 300 years), not 0.97 gigaseconds ago (about 30 years).

Once the initial problem had been tracked down and verified as trivial I had to time to think about it some more.

Which is when I started to get angry.

There’s a lesson we all learn at early age: What do you do when you find something that’s wrong? You make sure it gets fixed. Then, once it is fixed, you make sure the thing that allowed it to previously go unnoticed also gets fixed.

I couldn’t entirely blame Tulela. Launching a ship is a gruelling and unforgiving task, adapting the trade operating system for a new set of hardware and trying to get everything stabilised enough for thousands of people to live in for hundreds of gigaseconds. I hope I’m dead long before the Eschaton Arbitrage forks, because I do not want to have to be a part of that.

But it was still gross negligence, and we were very lucky this hadn’t lead to a more serious problem.

“The relevant systems all seem to be working fine”. Are you serious? Who even does that? Do you know what happens when plumbing crashes on an interstellar voyage? Drainage backs up, heat regulation destabilises, cooling systems fail, and if the problem cascades then the cryostasis systems hard abort and anyone who is too deeply asleep undergoes an emergency thaw and if they’re really lucky they get away from it with little more than minor brain damage.

When you leave problems to go unfixed until they become serious people die.

Of course that doesn’t happen often. It’s happened twice in the recorded history of our lineage, one time after heavy battle damage. But do you know why it doesn’t happen often? It’s because the plumbing system has hundreds of interlocking and mutually supporting checks and balances that actively work to keep the system in a stable state. And those keep working and making sure that nobody gets brain damage because when you find problems you make sure they get fixed.

My HUD was making increasingly insistent notifications that my heart rate up was up and my stress levels were elevated. It recommended that I stop what I was doing and meditate for a kilosecond until I calmed down. I dismissed it and settled for a few calming breaths.

I knew I was being a bit unfair. Zombies are among the most harmless of problems, and every system is full of its weird little eccentricities. Ship launch is where you look hard at those eccentricities, but it can’t be the place where you fix all of them or you’d still be trying to get that ship launched when the local civilisation finally went the way of all grounders and nuked itself back into the stone age.

But but but argh.

I stopped, took a few more calming breaths and resolved to just fix things instead of getting angry about them.

So, there was a problem. I had fixed the problem. Step one was complete.

Which meant it was time to fix the thing that let the problem to escape detection.

“Ide, what fraction of process categories have not received any human attention since, say, 10 megaseconds after ship launch?”

“About 63%”

“Well, waste that idea.”

“Excuse me?”

“Never mind”.

I shouldn’t really have been surprised. There is a lot of software running aboard a ship, most of which has been heavily debugged over a period of hundreds of gigaseconds. Most of it should just work, and if it’s working you probably won’t notice it given how much there is of it.

“Of those, how many were last touched by Tulela?”

“Zero”

“What? How is that possible?”

“Tulela was not born until after the time period in question”

I sighed.

“Of those, how many were last touched by nod-sid 1?”

“A hundred and three”

“OK. Put those on the medium priority review queue with a note that nod-sid 1 may have been an unreliable maintainer.”

One of the nice things about dead crew is that you don’t have to mince words – something that would have been a political bombshell with a live crew member was just a simple administrative note.

Now to the rest of it.

“Ide, how many processes use this buffer style of logging?”

“I don’t know how to answer that.”

I hadn’t really expected that to work. If it had worked then the answer should have been zero. But you’ve got to try these things – it’s almost impossible to know the capabilities of the ship systems until you’ve tested them experimentally.

Or unless you’d written those capabilities yourself. It was time to get to work.

And emerged seven kiloseconds later with my work alarm going off. My wake time utilization for the last megasecond had hit 25%. No more work allowed for me until it dropped back down.

Which was annoying. I like work. It’s interesting, fun, and I’m good at it. Recreation is hard in comparison.

But the sociology was clear: All work and no play makes the Eschaton Arbitrage a dysfunctional crew, regardless of individual preferences.

I quickly reviewed what I’d done and made notes for when I resumed later.

The logging problem had been relatively easy to solve: You watch for processes which crash when they’d tried to write past the end of some on-disk buffer and capture the trace of what they were doing when they crashed. You run the trace through a bunch of clever translation heuristics that I’m very happy I didn’t have to write myself, and if a word meaning ‘log’ appears in the crash site you stick the process on a review queue marked “Possible Archaic Logging Practices”.

The statsd thing was harder. You can’t just look for processes trying to create connections they’re not allowed to because you’d be swamped. Of course processes are trying to create connections they’re not allowed to. That’s why we have a permissions system. If you’re running this much software from this many origins then a lot of is has weird assumptions about what it’s allowed to do, or even is actively malicious.

In the end I’d ended up trying to write some additional heuristics for one of the existing zombie hunters. It should have caught this process already but it didn’t because its access to the thermal monitoring hardware meant that it looked useful. So I tried to get it to figure out when some hardware access was read only and if a process only had read-only hardware access it would see if anything useful was escaping it and, if not, flag it for zombie review with a helpful explanation.

I wasn’t very convinced it was going to work, but that was a problem for next time. I shut down my workspace.

Too early to sleep, so I queried the ship to ask it to recommend something for me. I was sure it was going to suggest some socialisation. Instead, to my delight, it reminded me that as well as being overworked I was also behind on my exercise. Flywheel 3 was currently configured for high gravity exercise, which was recommended under my current regime, so it suggested making use of it while the opportunity was available.

I was all too happy to comply.

I exited the pod and made my way to the gym.

The halls were quiet, which I always like. Not for social reasons for once, but because it meant I could go fast. There’s something really satisfying about kicking off the wall and shooting down a couple hundred meters of corridor. I rarely get the aim exactly right, but you can correct by pushing off the sides or grabbing onto one of the various handholds as you pass.

It’s childish, but fun, and the ship will tell you if anyone is nearby so there’s no real danger.

The gym is near the base of the ship with all the other heavy equipment, so it took me about a kilosecond to make my way there.

The entrance area is pretty wide, so as to give you space for multiple people to change. It was completely empty when I arrived – not surprising given we were on mid-voyage levels of crew – but there are hooks around the walls for nearly 20 people to attach while they change, and you could fit another 20 waiting hanging off the central shaft if they cuddled up.

But for now, it was just for me.

I grabbed onto one of the wall hooks, stripped down, and took some shorts and a sports bra out of the locker to change into. Normal clothing went into the refresher, kit went on, and it was time to hit the gym.


Next chapter: How do you do?

If you liked this and want to read more like it, support my writing on Patreon! Patreon supporters get access to early drafts of upcoming chapters. This chapter is also mirrored at archive of our own.

This entry was posted in Fiction, Programmer at Large on by .

5 thoughts on “Programmer at Large: Are you serious?

  1. Fell

    > and too some shorts and a sports bra out of the locker

    I believe this ought to be “took”, not “too”

  2. Irenes

    Oh hey. That was a refreshing way to learn that the character is something other than a normative-bodied man. :)

    1. david Post author

      Thanks. :-)

      I’m still trying to figure out the best way to gradually work in all the ways in which the crew’s defaults differ from our own (somewhat hampered by the fact that I’m terrible about describing things). Gender norms on board are quite different, but not in ways that Arthur is likely to consciously notice because it’s not a big deal for them, which is why it’s taken four chapters for this come up.

      Dropping little details like this are the best solution I’ve come up with so far.

Comments are closed.