Skip to main content

December 21

Hi everyone! Merry Christmas and stuff 🙂

All Deserted Chateau updates today, lots of stuff been happening.

Emoji text editor support

At the moment descriptions on artworks allow for various types of text formatting, but there’s no built-in menu for selecting emojis.

Unfortunately, very few rich text editors support emoji pickers (you can paste emojis into them just fine, but there’s no menu to select them). I looked into integrating one, but it’s much less simple than I expected it to be, so it’s on hold for now. Not the most important thing in the universe, so I’ll focus on other stuff and come back to this when and if I feel up to it.

Multi-image submissions

Initially I wasn’t sure if this would be a feature at launch (both for cost and complexity reasons), but with ArtStation being as awful as they’re being, it makes sense to implement this as many artists there will need it. It’s a bit complex to do, which I expected, but anyway - it’s done now, I have some minor layout issues to fix but the functionality itself is done. The only thing remaining for this functionality is to implement user thumbnails for custom thumbnail galleries, and a bit of code cleanup.

You can see a preview here: https://twitter.com/antsstyle/status/1605377824239534080

It’s just as well the image resizing can now be done completely concurrently - an artwork with say, 5 different images can easily need over 15 resized images to be made, which would take ages if done sequentially. There’s a surprisingly large number of variables and such to juggle in both the backend and frontend code to allow multiple images in an artwork, but it seems to be working correctly now. I’ll need to do a bit of stress testing with the interface to be sure, but the hard parts are done.

Later on, I’ll need to test whether uploading the original files to cloud storage should be done concurrently as well. I’m leaning against it unless it has to be done, as it’s both extra work and might put a lot of strain on the webserver doing the uploads for a small period, but it depends on how fast the connection between AWS services is so I’ll test that when I’m next testing on an AWS webserver.

CAPTCHA changes

Up until now, I had Google’s ReCAPTCHA implemented as the way of preventing bots creating accounts. However, using a Google product isn’t ideal here for data reasons, as they like to use their CAPTCHA’s data for commercial purposes beyond just verifying human activity on a website. As such I’ve moved over to using hCaptcha, which is more privacy focused and is compliant with the major data/privacy regulations like GDPR and CCPA.

Image resizing code tests

Yep, even more image resizing code stuff! In the last update I mentioned that I wanted to try and test running the image resizer code on ARM architecture instead of x86, to test if it performs better. AWS claims that most apps run 19% faster on ARM, and the prices for running apps on its ARM architecture are 33% cheaper.

It was difficult to get it compiled correctly - I had to find an ARM-compatible Linux webserver to compile it on among some other problems - but I got there. It unfortunately turned out that the code took nearly *80%* longer to run on ARM, which means it’s both more expensive and gives the user a longer delay… so yeah, definitely not using that. It was worth testing though.

With that, the image resizer code is pretty much done and dusted. It's possible I might need to make small changes to it to account for user thumbnail generation, but that should be relatively easy as search thumbnails work exactly the same way.

Search artwork overlays

I’ve sorted out the overlays that appear on top of search result artworks. Previously they only displayed an artwork’s title, but they now show the user’s profile picture, the title and their username. I also changed the overlay structure so that the different areas can link to different things (i.e. the title links to the artwork, the profile picture links to the user’s profile, etc) which isn’t possible if you give the overlay one big link to use whenever someone clicks on it.

I might also use this for user galleries; at the moment they only show the title, because I figured knowing which user did the artwork isn't necessary when you're on their page, but it might make more sense from a UI perspective to do it the same way on both (and since people often have many tabs open, it can help avoid confusion as well).

Currently on the todo list

There’s lots of little things remaining, but the major things on my list at the moment are:

  • Changing 4K images to be hosted on a private CloudFront distribution. This will allow artists to control access to their 4K resized artworks so that they’re only available if the artist allows it, if the user is subscribed, etc etc. Full size original image files are already hosted this way (with no public access at all), so it won’t be hard, just a bit of work.

  • The primary pages for following/reblogs and private messages. The main page for notifications, other than the popup menu, also needs doing but that shouldn’t be too much trouble.

  • Homepage and about page. The about page needs a relatively unique design most likely, not certain on that yet but either way it will likely take more work than other “information” pages.

Once these things are done, I can begin tidying up and finalising some of the layout elements, and testing things like cronjobs and server-specific considerations on an AWS webserver instead of my local machine. That could be a month or more away though, we'll see.

Bug fixes

  • Sorted out (yet another) eldritch gallery problem that was causing the gallery to break its formatting on AJAX requests to fetch more artworks.

  • Fixed a database bug causing the next/previous artwork arrows on artwork pages to sometimes have the wrong artwork links.