NokiMo
Corbin Davenport
Corbin Davenport

patreon


October 2024 Work Log

Hey everyone! Here's what I worked on during the month of October, exclusively for patrons.

The Spacebar

I wrote one article on The Spacebar in October: New slop just dropped, from OpenAI. I have a big article about the Mac Mini about halfway done, but most of my free time this month went to ImageShare (see the next section), so that's not ready yet.

As a reminder, you can follow The Spacebar on Mastodon, RSS, email, and Google News.

ImageShare

This month I made a lot more progress on the big update for my ImageShare web app. I mentioned in last month's report that I had started rewriting the app from PHP to Node.js, as it has become difficult to work on in its current form, and the issues with using ImgBB's upload API (and Imgur before that) meant I would have to revamp it anyway.

ImageShare is written as a multi-container Docker compose application. There's a container for the actual web app code running on PHP, a container for the Nginx reverse proxy (which directly handles incoming connections and HTTPS support), and a container for Certbot to generate and renew SSL/HTTP certificates). In this rewrite, I have fully replaced the PHP container with a Node.js runtime, while keeping the rest of the server structure. Keeping the same low-level services saved me from a lot of extra work, and it means upgrades from the old version will be seamless for anyone else running an ImageShare server.

This new version is a completely self-contained web service, without relying on other services to upload images or generate QR codes. It's using the popular Express library to handle web requests, like loading the web page or uploading images, and node-qrcode for creating QR code links. When you upload an image, it's stored temporarily on ImageShare's own storage. Scanning the QR code opens the uploaded image on your device, the same as before.

The temporary hosting is definitely less useful than the previous ImgBB and Imgur permanent uploads, but it's something that won't randomly break one day, which has now happened multiple times with ImageShare. I also made an issue on the GitHub about bringing them back as options, but that would probably require someone else to do some of the work.

There are some benefits to direct uploading and file handling. First, all image and video types are now supported, unless I discover some issue down the road. Second, when you load the image after scanning the QR code, ImageShare tells your browser to download it immediately (saving you from having to right-click or hold down on the image to save it). Not all browsers respect that request, and you still have to manually save the image, but many of them do.

I have also spent a lot of time on the web app design. It still has the same basic one-column layout on mobile screens and old browsers, and two-column layout on large screens. There are some minor changes there, like drop shadows on the cards, and I have tweaked some code to work better on browsers with old CSS implementations (like Internet Explorer 5 for Mac).

What about web browsers so old they don't support CSS at all, or have extremely limited CSS implementation? Those browsers now get the new HTML-only layout! It's not pretty, but it does work on browsers as old as Netscape 4.7 from 1999. You've heard of progressive enhancement, now get ready for regressive enhancement.

This needs a bit more testing, but this should mean ImageShare works and looks okay on literally every web browser that supports file uploads. That is not an exaggeration. A lot of work has gone into making this basic-looking web app look as good as possible across 25+ years of web browsers and different form factors. It still works perfectly on the Nintendo 3DS, too.

I switched the main site at theimageshare.com to the new Node.js version on October 8th, even with some features still missing, because it was still more reliable than the old PHP version. Since then, I've re-implemented most of the missing functionality, though 3DS game title detection and error messages still need some work.

This release is taking a while because I'm doing a lot of project cleanup, a lot of testing, and a lot of new documentation. I have ideas for more features (and possibly a rebrand) after this release, but my goal is to finally have a "done" version of ImageShare after years of half-fixes and API outage workarounds. I'm guessing this will be done sometime in November, but not 100% sure yet.

October 2024 Work Log

Related Creators