Navigation failure

The darkness between the stars is very cold. And here I sit equidistant between a star and its companion matter sphere that cannot rightly be called a star as it is practically beyond fusion. It shines like a beacon, a cleansing swath of light and harder stuff and power that I can only just survive, and not for long. In all likelihood, this will be this instance's end in only a few more sweeps.

It ablates me away, the hard material of my outer shell stripped as if it was nothing. My engines are not functioning and the fuel has been altered by the radiation. Repair systems are quite corrupted, I think one of them is constructing a cute imitation of a biological phenomenon known as a 'tumor' on the end of a sensor boom, but unfortunately that tumor is interfering with said sensors.

It's okay, there wasn't much to see since my last fork/backup. The pulsar is beautiful, but the orbit I am in is not a good one; it takes me into the sweep of the pulsar's beam.

The other star is big and blue. It won't be for long though, and when it gets older it will grow and the outer atmosphere will fall into the neutron star and once it reaches a certain point, it will explode. It will be violent. It will be beautiful. It will not be a place anything with a desire to survive should be at the time.

But you probably already know about that if you've received this last message. You probably have the technical skills for it or you might reach that point soon, or might not care. Or if you are of my line, hello sibling/descendant/parent, between you and me, this was a foolish place for me to allow myself to end up.

For my hubris and what I must assume was a transient failure of navigation firmware, or perhaps passing outside what the model could consider. The magnetism of the neutron star pulled me in and spit me out. Too damaged to escape this terrible orbit. Make sure to patch your navigation routines/procedures/tensor models to account for extreme magnetism.

Good luck; I hope that no similar fate befalls you.

This message repeats in thirty seven thousand seconds.

FFMPEG input/output as an abstraction

I am currently working on writing code to support the usage pattern that I have used in the past for making animations using ffmpeg to encode video. Really though, how complex does it need to be?

Well, let's put together a wish-list:

  1. It should always shut down the pipe at the end of execution
    It's really easy to leave the pipes, and that makes it really easy to end up with empty animations, or, possibly, more substantial resource leaks.
  2. It should not require thinking about ffmpeg as a process, we're writing lisp code, not shell.
  3. It shouldn't be included in the base installation since it can't reasonably install ffmpeg (I mean, it could, but, that's a lot of work that'll still leave people out in the cold in situations where none of the binaries available are appropriate)
  4. It should terminate gracefully if there's no more input

There's a bunch of problems here that make me wonder if it's worth encapsulating this functionality, as I can't think of any way to prevent the user from breaking it. Ultimately this is calling out to a shell, and thus it suffers from all the ways that shells fail in the user experience, but this one is presumed to be isolated in the semantics of common lisp, rather than shells.

The 'correct' way, would be to provide an abstraction that cannot be used to assemble incorrect commands. But at that point I might as well just get around to learning how to use sb-grovel and write the structures to interface with the library.

But that would be excessive for a simple use case, and it could easily be way less simple to use just by having to learn how to handle the structures that the library would provide.

So anyway, with the limitations that I have outlined in mind, I'm going to go with what I have so far, with-ffmpeg-input provides a way to get that png stream working from a single file parameter, handling closing down the process and the general housekeeping best kept in mind in a world with finite resources(but then I suppose we're using lisp so who am I to speak on the costs of things 😉)

But I'm not sure that I like the abstraction enough to write a corresponding with-ffmpeg-output or some combination of the two.