site banner

Site Backend Changes

Hey there! For complicated reasons, some of which I will explain later, I'm in the middle of dong a pretty gigantic revamp to the Motte codebase. Right now, this means "fix a bunch of small bugs". Later, other things will be happening.

The immediate goal of this is not to massively transform the site or do a Digg v4/New Reddit thing. Frankly, if the site remained exactly the same (but with fewer bugs) I would be happy.

The long-term goal isn't going to be quite that static, though. The long-term goal is to set things up to allow more subcommunities, similar to how subreddits work. This will be a larger set of changes. These changes will not obsolete The Motte itself; I am absolutely aiming for a site that can comfortably keep holding The Motte. I've talked about this before if you want to go read about it - this is still the same plan, for what it's worth, it's just now being (slowly) executed.

I will be posting more, and asking questions about next steps, when actual site behavioral changes are in the queue. This just isn't that! This is infrastructure work.

 

tl;dr: The site backend may be a little wonky for a bit, sorry about that, please report any bugs.

(and mods, feel free to unsticky this in a few days if I forget)

24
Jump in the discussion.

No email address required.

I feel like this is kinda overstating things.

The thing I like about Rust - the thing I tend to design my APIs for - is that a good design is both a comfortable place to be and an adamantium cage ensuring that you don't move out of the intended pathway. Everything should be set up to make it both as easy as possible to do it the expected way and to ensure you don't do it the wrong way accidentally.

But, those cage walls?

Yeah you can just pick 'em up and move 'em.

They're not there to force you to stay within the bounds, they're there to keep you in the bounds unless you really need to move outside them. Every guarantee has an escape hatch, something that lets you say "okay, but I know what I'm doing, knock it off for now".

That's what I like about Rust. I can just escape the bounds if I really need to. I probably shouldn't, and almost all the time I won't.

But I can.

Rust's way is not to make things they don't like impossible, but instead to make them deliberately cumbersome. I was following the language pretty closely in its early days, and the approximate moment they lost me was when they decided to do away with the ~ syntax and instead introduce the Box<T>/box for inline heap allocation and destructuring of heap-allocated data, thus irredeemably encumbering standard functional programming idiom involving ADTs. The stated explanation was that it was a deliberate decision, because they considered this idiom to have bad performance and did not want programmers to use them. I think the variety of escape hatches using unsafe blocks also counts as this.