Amazon Photos & Cloud Backup In General Sucks

What’s the point of making a website / blog / LLC / career and building up a modicum of a following if you’re not going to use it as a forum for shitposting once in a while? Right? Right.

I wouldn’t post something as stupid as this if it was possible to actually post something about bugs with Amazon’s shitty photos app on their forum, but even that’s impossible at this moment because of some other shitty internal error on their amazon photos forums page, so, let’s start, yeah?

First, the obvious: Amazon Drive / Photos is an infuriating backup service for mac users (and possibly for all users), because the desktop app is shit.

The company provides a desktop app that, to its credit, can generally handle uploading a huge amount of files *fairly* reliably, but it chokes, a lot. Namely, if an error happens while a certain file is transferring, which if you’re uploading thousands of files, happens, it appears the app will stall the given upload thread and never recover. Translation: if you tell the app to upload up to 8 files at a time, and you upload a bunch of files overnight, one by one, those 8 threads will get hung up at some point when something goes wrong, and the app will sit forever without reaping the dead threads and starting more uploads – until you exit and reopen the app.

There’s the other usual laziness too – the app is only updated about once a year at best; changing settings like the number of simultaneous threads allowed or max bandwidth doesn’t do anything until the app is closed and reopened; clicking the “pause” button will show messages like “all uploads are resumed”; disconnecting from wifi in the middle of an upload of any size will mark every single file as canceled and you need to start all over again; and if you do one-time uploads (as I prefer to do rather than have the app constantly scanning backup folders), sometimes the app will miss files, so you need to make sure to upload twice, and so on.

But, the app gets a lot right. Under the covers, it compares md5s of your local file and what’s already been uploaded, so it saves time and bandwidth not re-uploading files that are already there. It’ll upload *huge* (20GB+) files without any problem at all, and it’ll handle thousands of files too – as long, as mentioned above, the threads don’t hang and you don’t disconnect from wifi, etc. All in all, if you can handle closing and reopening the app once in a while uploading the half-terabyte of photos you shot over the past year, it works.

So why not move to another provider like Backblaze that supports rclone? Because I’m lazy, and when I poked around recently, these other providers demand to have an app scanning your hard drive to back stuff up – which isn’t what I need, I need to upload organized archives of files once in a while – which it would seem like a tool like rclone could do, were it not for places like Backblaze requiring the user to pick random uuids that somehow don’t clash with other users uuids for buckets that files go in, and don’t forget that the buckets are a max of 5GB, and if you have a file larger than that, don’t forget to manage X buckets and to splice the file back together when you download it back, and even without that problem, don’t forget to organize all of your files into 5GB chunks like we did 20 years ago burning DVD-R backups, what the fuck, Backblaze and every other S3-based bullshit cloud service? Let me upload my files, store them on ice for me reliably, and that’s it, that’s all I need.

For better or worse, Amazon Drive / Photos does that for me, albeit with a ton of pain.

Anyway, that’s the end of the rant. If you have a small amount of data and just want a nice online backup, look into Backblaze, google drive, dropbox, or others – Amazon’s Drive and Photos app are neglected and not worth the hassle. If you’re uploading large swaths of data every few months for off-site backup and don’t want to get into super technical S3 bucket math, Amazon’s photo app is seemingly the only option.

Unless, of course, you name a file this:

114 – Montage Of Heck (Long) [4-Track Tape Collage].mp3

That specific filename will not upload to Amazon Photos with the mac desktop app, but this one will:

101 – Montage Of Heck (Short) [4-Track Tape Collage].mp3

From some theorizing and googling, to me, it looks like the mac app isn’t URL encoding brackets when it attempts to tell amazon’s servers about the file, and tomcat on the server side of things is bitching about the brackets not being escaped. I know this, because this file uploads fine (with brackets replaced with parens):

114 – Montage Of Heck (Long) (4-Track Tape Collage).mp3

Seems like a simple enough fix, someone on the mac app side needs to double check that bracket characters are escaped in their URLs per RFC 3986 – and maybe that’ll happen when the app is updated again in 2024.

On the off chance that one of the Amazon photos app developers ventures out of the Amazon echo chamber that currently prevents any sort of user feedback on their forums and reads this post, here’s relevant log data from the app:

Process: com.amazon.clouddrive.mac
Version: 7.18.0.1cad8567
OsBuildNumber: Mac 12.2.1
CrashTimeUtc: 1646432324428
CrashType: Managed_Transfer
CrashDescriptor: 6c3a72fa8f89f91bf6fd655a29d738d5
ContentType: Unknown Http Response Exception
CrashDuplicateCount: 1
MarketplaceID: ATVPDKIKX0DER
CountryOfResidence: US

Request: POST https://content-na.drive.amazonaws.com/v2/upload/multipart-upload?name=114+-+Montage+Of+Heck+(Long)+[4-Track+Tape+Collage].mp3&fileSize=53038304&conflictResolution=NONE&suppress=DEDUPLICATION&kind=FILE&parentNodeId=icX0crQRQO-NupvTRc0iOw

Amazon.CloudDrive.Services.AmazonHttpResponseException: Unknown error occured
HTTP Status 400 – Bad Request - 
Invalid character found in the request target [/v2/upload/multipart-upload?name=114+-+Montage+Of+Heck+(Long)+[4-Track+Tape+Collage].mp3&fileSize=53038304&conflictResolution=NONE&suppress=DEDUPLICATION&kind=FILE&parentNodeId=icX0crQRQO-NupvTRc0iOw ]. 
The valid characters are defined in RFC 7230 and RFC 3986
The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

java.lang.IllegalArgumentException: Invalid character found in the request target [/v2/upload/multipart-upload?name=114+-+Montage+Of+Heck+(Long)+[4-Track+Tape+Collage].mp3&fileSize=53038304&conflictResolution=NONE&suppress=DEDUPLICATION&kind=FILE&parentNodeId=icX0crQRQO-NupvTRc0iOw ]. The valid characters are defined in RFC 7230 and RFC 3986
org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:494)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:269)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:750)

Anyway, in summary, I wouldn’t post a useless screaming-at-the-void post such as this if it were possible to contact the amazon team and tell them something is wrong without getting roadblocked by twitter bots and the usual 21st century customer service gatekeeping circus of insanity, so here we are. Hopefully someday this issue will be seen and fixed, and perhaps the other glaring issues will be resolved as well.

Coronavirus Simulator

It seems that a lot of people don’t understand the purpose of flattening the curve with quarantine. I’ve made a crude simulator that demonstrates hospital resource exhaustion if the number of cases continues to grow at the current rate (25% per day as of March 22, 2020).

Check it out:

http://www.codercowboy.com/coronasim/

Coronavirus Resources Page

Yeah, I’m worried / confused about all of this coronavirus stuff too. To that end, I’ve started collecting some useful links and information here, in Jason’s Coronavirus Page.

Vintage Computer Software Resources In 2020

I’ve recently dived into collecting vintage computing hardware. Vintage software is somewhat hard to find these days, especially old boot disks and OS installation CDs. I found the following resources while reviving an old IBM Aptiva 2134 Pentium-era machine:

WinWorld is a repository of vintage operating systems and software. They have DOS installation disks, Win 3.x, Win9x cd ISOs, boot disk images, old versions of Visual Studio, Office, Word Perfect, system utilities, some drivers, and more.

Old Version is an archive of vintage software containing as many old versions as possible for a given app. For example, WinAmp 1.0, 2.x, 3.x, and 5.x installers are all there. Obsolete stuff like yahoo messenger, AIM, and ICQ is all there too. My favorites: 7zip, FileZilla, Winamp, mIRC, Daemon Tools, Netscape, FireFox, Mozilla, Notepad++, and ACDSee. Note that the information page for each specific version of an app usually lists the OS the software is compatible with. For example Filezilla 2.20.x works well on Win9x, but after that they dropped support for that line of windows.

For Windows 98 installations, the third-party Auto-Patcher is a must have, it’s a single installation script that installs all Windows 98 updates. It has everything the old windows update site had: security fixes, regular fixes, direct x 9, wmp 9, ie 6, and more. It also includes some highly-recommended unofficial fixes and third party software such as 7zip. The auto patcher is incredibly configurable, so you can opt out of patches you’d rather skip.

Another unofficial roll-up of Windows 98 updates to consider is the Unofficial Windows 98 SE Service Pack. I haven’t tried this one out, but it’s mentioned and recommended just as often as the auto patcher is.

MDGx also has a ton of resources such as official windows update installers and unofficial fixes for patching vintage Windows operating systems.

Driver Guide is a huge repository of old drivers.

Vogons is an online community of vintage gaming enthusiast with forums and a collection of drivers similar to Driver Guide.

Grey Ghost’s personal site hosts a ton of old obscure drivers that I had trouble finding in other driver archives, especially drivers for the Aptiva 2134 that’d be mentioned in various forums but download links elsewhere were broken. There is a file here that describes all of the files in the archive.

If you’d rather not take the plunge and work with actual vintage hardware, consider running a virtual machine on your modern computer that emulates the older hardware. VirtualBox is a popular option for emulating old installs of Windows, and DOSBox is the go-to option for emulating DOS. I went with a VirtualBox VM of Windows 98 for a little while personally before I got into collecting actual hardware, and setting the VM up wasn’t trivial. I put together a guide and resources on that here.

Finally, thanks to Javascript’s recent byte array type addition, crazy in-browser emulation is now possible too, so you can boot a emulated version of Windows 95 with a link click, or check out archive.org’s vast array of thousands of old dos games freely playable thanks to an in-browser port of DosBox.

Collecting Vintage Computer Hardware In 2020

I recently purchase and Aptiva 2134 from a vintage computer collector on Facebook Marketplace in an effort to fully immerse myself in Windows 9x nostalgia while writing a book.

The 2134 is a Windows 95 era machine produced in 1996 that sports a 120mhz Pentium processor, 96MB of ram, three ISA slots, an on-board graphics chip with SVGA support, two PCI slots, an 3com Etherlink III ISA card, an awful horrible painful sound card called an MWave, and a 2GB hard drive – or, at least, that’s the configuration mine came in. I think the stock version came with perhaps 12MB of ram, and a choice of processor speeds.

If you’re looking for vintage hardware to collect, I’d recommend the following search terms to try on ebay, craigslist, and/or Facebook Markeplace: IBM, Compaq, Packard Bell, E-Machines, Gateway, Vintage Computer, Old Computer, XT, AT, 286, 386, 486, Pentium, 3dfx, Voodoo, Macintosh, Apple, Performa, Power PC, G3, G4, ThinkBook, iBook, Windows 95, Windows 98, etc. Also consider the Vintage Computers facebook group and/or the Computer Collecting subreddit. I’ve also made a reddit custom feed that collects retro computing subreddits.

Finding old hardware like the Aptiva will prove more difficult as time marches on, partially due to extreme obsolescence, but also because the old intel chips up to and including the Pentium 2 have gold in them. In recent years, the value of gold has risen so much that many of the processors are being recycled to extract the gold from them.

Thanks to Jack of Bachelor Uncle fame for helping me locate the Aptiva computer.

Wicket 7 Debug Bar Empty? Add a DebugBarInitializer to your app.

In Wicket 7.12.0, adding a DebugBar to your page will result in an empty / useless debug bar if you don’t add a DebugBarInitializer to your app. Hopefully this will be documented by the wicket project in the future, but it isn’t right now.

Continue reading

Java HashMap.hashCode() Not Unique With String Keys And Values

Java’s HashMap (AbstractMap really) hashCode() implementation sums the hash codes of its entries rather than multiplies them by a prime number like String.hashCode() does. This can cause weird collisions in very similar maps.

Continue reading

Non-Post.

Good news: I survived. Life’s much better now than the last time we spoke. Thanks for asking.

Also good news: I’m cleaning up the site / blog a bit, trying to bring it up to at least a 2012 fashionable look, and I’ve been working on a fun book.

Continue reading

Trash Bird Fix

Haven’t posted in a while, mostly because my life has been a complete fucking wreck for the past year or so.

Anyway. I fixed the trash bird with a chrome extension.

Continue reading

Wasting Time

When I was young, my friend James and I liked to fish. Other kids would be dropped at the mall for the day, but we’d get our parents to drop us at Joe Pool Lake. We were strange.

Continue reading