Show newer
Joel relayed

I loved this. It's a book full of people doing their best, caring about each other even when it doesn't totally make sense, but also a book that doesn't shy away from the realities and practicalities of existing in a complicated world where there are no nice good tidy options.

It did an excellent job carrying me to the end in a tidal wave, and I am SO MAD that the third book isn't due out for nine months how could she DO this to me

(comment on "The Last Graduate")

These are 2am thoughts and not well formed but I'm an engineer with a decade of experience messing with the internet who just spent over an hour getting the right incantation of ngrok and Python and whatever to get a very simple message from the internet to my computer and it made me sad.

For your average curious cat who doesn't know what the heck CORS even is, that kind of thing just makes building stuff feel so inaccessible and impossible, and I want the web and programming to be not that!

Show thread

HTTPS and CORS are, like, good and things I guess, but damn do they suck the joy out of banging out a quick internet thing.

I know there are reasons we can't have nice things and just throw plaintext haphazardly down the pipes these days, but all these fences keeping things safe are also inevitably barriers to entry for people trying to learn how to make stuff. I don't have a better solution, but it bums me out all the same.

And like yes you can just pile more abstraction layers on top to make it "invisible" but things are already complex enough!

A successful launch! Bon voyage, JWST! Save travels on your next million miles, may your unfurling proceed apace.

If you haven't sliced apart a motherboard in order to put together a makeshift power supply for the individually-addressable RGB LEDs on your Christmas tree, are you really doing Christmas right?

Bonus: I stayed up late enough getting this all cleaned up and connected that it made sense to just stay up to watch the launch of the in T minus 2 minutes. Best choices.

Show thread
Joel relayed

redis ops nonsense 

At that point, your boss who runs ops but is not really an ops person gives it 2GB again with a shrug - who knows the mysterious ways of the Redis, maybe it just needs that much RAM!

You, who also know not the mysterious ways of the Redis but doubt very much that it just needs 1GB of RAM to function, start digging in, and after several false starts, red herrings, and auxiliary issues solved, discover the existence of the AOF, put two and two together, manually trigger the compaction on the staging database, and everyone is happy again.


Show thread

redis ops nonsense 

That means you can end up in this scenario:

- Over a month or so, build up a bunch of jobs that are maxing out the 1GB of RAM on your database. Double the RAM on your instance until you can Deal With It.
- Some time later, after it's surpassed 1GB worth of keys (but before it gets to 2GB), you Deal With It and clean up the old jobs. Now Redis only has kilobytes of keys, hurrah!
- Resize your instance back down to 1GB of RAM, which involves restarting Redis
- Redis starts up and thus attempts to replay the append-only log. Critically, it has not been compacted since you Dealt With It, because you haven't added another month's worth of jobs yet.
- Redis gets to the part where it has more than 1GB of jobs in memory
- System says nope, no more RAM for you, kills Redis, and your server keeps trying to restart

Show thread

redis ops nonsense 

So turns out Redis has a persistence mode that our db provider enables by default called the Append-Only File, which is, as you might guess, an append-only log of activity.

If this seems like it might be a bad idea for a database that is often used for things like queueing systems which involve a lot of short-lived keys, well, you're not wrong! Fortunately, Redis people thought of that, and came up with a solution: if the file gets too big, go through and remove entries for keys that don't exist any more. Hurrah!

Unfortunately, this solution falls over a bit in a specific case: if you have a bunch of keys (say, enough to almost fill up your RAM), and then delete basically all of them at once.

Because you see, deleting the things doesn't reduce the log size, and "too big" is defined as "twice as big as it was last time we cleaned up".

Show thread

Just finished a long message to my workslack with "Happy Holidays everyone! Redis is weird."

(Long message was a summary of my day today, which was spent with my ops hat on, digging into why our Redis server was trying to allocate over 1GB of RAM [and crashing if we said no] despite having literally kilobytes' worth of keys to handle. Spoilers in thread, hints: it was backing a queue server that we'd just done some maintenance on)

I'm a little annoyed at the fact that exists in the first place, but I'm even more annoyed that I am using it because there's good reason for it to exist. I shouldn't have to be glad this exists!!

I know async is hard and good backtraces are hard, and phew stepping through async code in can just be an exercise in futility sometimes.

So yeah, sometimes the literal best thing to do is just log a message to the console for every damn line of code you run.

Joel relayed

Warden, my male/male gay romance novella, is now available in epub and mobi formats!

Birthday book launch for meeee!

(The mobi currently has the ToC and copyright pages at the end, I'll upload a fixed file in a few hours, because Reasons)

It has also been submitted to Kindle, verification usually takes about 72 hours, but when it's available, you'll be able to find it here, DRM-free > ^.^

Please share <3

#gay #fantasy #romance #book #reading

Joel relayed

not having bathrooms at transit centers is some capitalist fuckery.

Joel relayed
Joel relayed

If you read about Jean and Jorts, please read this too.

the extended metaphor for workplace accommodations nobody asked for

"Abled people spend a significant amount of time designing things they just assume will work for disabled people because they think that disability awareness is a matter of *morals* and not practicality. They think that ‘being a good person and having good intentions’ is enough to understand what’s needed, because they’re trying, and that’s the important thing. Nope. The important thing is that it actually provides a solution to a problem, and if you don’t speak to disabled people before buttering them with margarine, you may find a horde of angry people who don’t really care that you thought you were doing a good thing with your weird ramp if it’s so steep it’ll tip a person into traffic, or your metal studs in the pavement help one group of people while providing a major slip hazard for others."

Joel relayed
Joel relayed

I'd forgotten just how much I love the magic system in these books! I don't read enough magical fiction to know how novel it is, but it's different from a lot of what I have seen, and is clever and well-integrated into the world, in a way that drives a lot of plot and consequences, big and small.

(comment on "The Last Graduate")

Update: getting external storage set up was a breeze, but it took some digging to figure out why my images were trying (and failing) to load over HTTP instead of HTTPS, apparently up to this point my had been blissfully assuming it was SSL-free, and since all the image URLs were relative, it just worked...until I moved all its images to an external server :possum:

So! With that resolved, images are now being served out of a shiny new Backblaze B2 storage setup, and while I was at it I enabled thumbnail generation, so small images should look a lot better now!

I've got a Star Trek: Discovery night to get to, but after that I've got a couple small doc updates, don't let me forget :)

Show thread

A fun thing about uploading a directory full of UUID-named files is you get a built-in progress indicator. I'm currently at 0x82/0xFF of uploading my covers to BackBlaze because turns out images take up a lot of space and my VPS was not prepared for that 😅

Huge props to @tripofmice for the docs on setting up external storage, by the way - the Bookwyrm docs are some of the best docs I've read in a long while! Thorough and friendly and exactly what I need.

Show older

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!