- Published on
I pulled something in the codebase
- Authors

- Name
- Matt

This is the third hamstring I've torn, and it's the first one I can't blame on neglect.
The other two were straightforward. Three years ago, then again last year, a different leg each time, and in both cases the cause was that I wasn't looking after myself. Not eating properly, not sleeping enough, skipping the dull parts of preparation because they're dull. The diagnosis was embarrassing but it was clear, and it came with an obvious instruction.
So I followed it. Ate properly, slept, did the unglamorous work, and arrived at this year in the best condition I've been in.
Then I tore the other hamstring, two weeks out from a competition I've since withdrawn from.
What did it was sprinting. I don't sprint often. I went at it hard and early, close to full effort, because I felt good and because it didn't seem like the sort of thing that needed a ramp. Running is running, and I've done a lot of running.
Sprinting is not a faster version of running. It's a different movement that resembles one, which is exactly why it catches people who are otherwise fit.
The uncomfortable part isn't the injury. It's that the condition I was in is what caused it. Being well prepared is what made it feel reasonable to go straight to full effort at something I'm not trained for. Turning up undercooked, I'd have eased in, because I'd have known I had to. Fixing the first failure mode didn't protect me from the second one. It armed it.
I've been doing the same thing to Battleground.
I'm confident building web applications. Game design sits next to that. It's software, and it's comics, and I've got twenty years of the second one. It felt like home ground, so I went at it at full pace from the first evening.
Battles currently resolve in the browser. I wrote about that a few weeks ago as a thing I'd got round to fixing, which was generous of me. It isn't a loose end. It's the kind of mistake you only make if you've never built anything competitive before, because anyone who has would have known before they started that the client can't be trusted to report the outcome of a fight it has a stake in. That knowledge isn't difficult. It's just not transferable from the work I'd done.
The same is true of the balance. Twenty-four characters, tuned by feel, by one person who likes all of them. I've been treating that as a tuning exercise. It's closer to a discipline I haven't learned.
None of this came from carelessness. It came from going fast in a domain where I don't have the instincts yet, while being experienced enough not to notice that's what I was doing.
The obvious conclusion is that I should ramp into unfamiliar work more carefully. I don't think I will, and I'm not sure I should. Approaching everything adjacent at seventy percent would mean most of what I've built this year wouldn't exist. Status Trace exists because I went hard at something I'd never done. Battleground exists at all because I didn't stop to ask whether I was qualified to make it. The confidence that produced the browser resolution problem is the same confidence that produced the game, and I can't have one without the other.
So it's a running cost rather than a flaw. The policy pays, and occasionally it charges me.
What I think is actually useful here is smaller than a rule. The work I know I can't do gets treated with respect. I read first, I go slowly, I assume I'm a beginner, because I obviously am. The risk isn't there. It's one step sideways from what I'm good at, where the surface is familiar enough that I never register I'm starting something new. That's where I skip the reading. That's where I go straight to full effort.
Neglect announces itself eventually. Adjacent competence doesn't, because everything about it feels like a Tuesday.
The correction isn't to go slower. It's to notice, out loud, that the thing I'm about to do is new. Not new like a language I've never used, which I'd never miss. New like a movement I've done a thousand times at three quarters and never once at full. Say it, then do it anyway, at whatever pace I was going to.
That sounds like it changes nothing, and mostly it doesn't. What it changes is what happens when something registers. There was a moment before the sprint where the leg said this is not what we usually do, and I overrode it, because I was fit and it was only running. There was a moment on Battleground where I thought about who was allowed to report the result of a fight, and moved on, because the feature worked and I had an hour left. Neither of those was a lack of information. Both were instincts I had no reason to take seriously, because I'd been told all week I was on home ground.
Naming it as unfamiliar is what gives those signals somewhere to land. It doesn't make me careful. It makes me listen to the thing that already knew.
I've started keeping a note of what I'm currently treating as familiar. It's short, and I've almost certainly left the important one off it.