Home Artists Posts Import Register

Content

Hi! Here's everything I worked on in the month of May, including a new web app, updates for Nexus Tools, and work on ImageShare.

Snappy

Automated screenshots can be helpful in certain situations. I've used them most often with livestreams of tech events, as it's much easier to have a screenshot captured every few seconds than try to skim back in a video later for images or on-screen details. I've been using AutoScreenCap for this, which is a great tool, but it's missing a few features and only works on Windows PCs.

I wanted a solution that could work on other platforms (especially Mac), and while you can accomplish this with a pretty simple bash script, I was looking into other options. Funny enough, a web app seemed to be the best option for what I needed - web browsers have great APIs for both local file access and screen capture. I had an initial demo written in under 80 lines of JavaScript.

So, this month I started working on a web app for automatically capturing screenshots: Snappy. You can actually try it out right now, though I don't consider it "done" yet -- I'm planning to make a big announcement about it in June, after some more polish and bug fixing.

Snappy can save screenshots to a specified folder on your PC based on a specified time interval, in JPEG, PNG, or WebP format. You can select an entire screen to capture, or a specific window. In Chromium browsers, you can even select other browser tabs, even the tab is not visible on-screen -- something that is off-limits to native screenshot tools.

There aren't many advanced features yet, but I did add Discord integration. If you create a webhook in a Discord channel and paste it into Snappy, the app will send a message for each successful capture, and alert you if something stopped the capture (e.g. you removed the screen permission in the browser). This feature might be nice for remote monitoring -- you can walk away from a PC and check that Snappy is still running from a phone or other device.

The one catch with Snappy is that it relies on two browser APIs that are still not widely implemented: the File System Access API and the getDisplayMedia API. The former is only supported in desktop Chromium browsers right now, while the latter is on most desktop browsers to varying extents. I just implemented a fallback for the File API, so Snappy now works on non-Chromium browsers -- it will just download each screenshot instead of saving it to a specific folder.

I'm hoping to have a complete version of Snappy ready by next month. Automatic screenshots aren't something that everyone needs, but I think Snappy is already a great tool for the job -- especially on platforms like Chrome OS.

ImageShare

Okay, so remember when I went through all the effort of reworking ImageShare to be more reliable and more easily maintainable? Well, it broke again! This time it wasn't my fault, though.

ImageShare uses Imgur to upload images, and Imgur's API suddenly stopped working sometime in May. The same exact Docker container and same API key continued working on my personal Mac, so my best guess is that it was some kind of IP block. I tried shifting the ImageShare VPS to a different DigitalOcean region, and swapping out the API keys, but Imgur access was still blocked.

A few people asked me if this was due to Imgur's new Terms of Service, which says anonymous uploads (which includes uploads from ImageShare) might be deleted after some time has passed. Imgur confirmed at the time that nothing was changing with the API.

I quickly rolled out a new version of ImageShare that uses ImgBB as a fallback when the Imgur API fails. I don't really like using ImgBB in this way, since it allows me to see images uploaded through ImageShare until they are deleted from the platform, but most of the work was already done because the initial version of ImageShare used ImgBB. As a half-solution for privacy, uploads from ImgBB are deleted from the site after 120 seconds.

About a week ago, the Imgur API started working again, so ImageShare is back to normal. I still don't really know what happened. My best guess is that with Imgur promising to delete old images, a few groups have tried to mass-archive everything on Imgur, and Imgur may have shut down parts of its API to compensate for all the requests. I found one comment from someone at Imgur that said, "We have been having issues with DDoS style attack as users are attempting to download all the content."

In the long term, I'd like to properly implement multiple options for image hosts in ImageShare, so an outage like this is less of a problem. Considering all the hours I've already spent in 2023 to maintain ImageShare, though, I'd like to take a break for a while.

Nexus Tools

Nexus Tools is my cross-platform installer for ADB, Fastboot, and other Android tools. I released version 5.5 in May, which primarily contained improvements for Windows. Nexus Tools can now be uninstalled from the Settings app (or Control Panel) on Windows, and it now uses the %AppData%\NexusTools directory, like single-user applications are supposed to do. There was also some general code cleanup.

In the long term, I'm not actually sure what to do with Nexus Tools. It's functioning fine right now, but it's basically turned into me maintaining a cross-platform package manager for one piece of software. Until Google creates a one-click installer for the Platform Tools outside of the Android SDK, there's still a need for something like Nexus Tools, but maybe it needs to take another form. Something to think about, I guess.

Link Cleaner

My Link Cleaner web app received one minor fix in May, allowing links from Macy's online store to be cleaned without breaking them.


Comments

No comments found for this post.