💾 Archived View for juliette.zone › gemlog › code-rot.gmi captured on 2024-12-17 at 09:35:10. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-08-24)

-=-=-=-=-=-=-

Code rot

Posted on 2024-08-15

Sometimes, I get the type of headaches that causes light sensitivity, and can't use a screen without pain and nausea. It happens rarely enough (and my schedule is flexible enough) that I can usually just take the time to recover instead of focusing on work. I still like to be entertained though, so I've learned how to use TalkBack on my phone to listen to podcasts, browse fedi, the basics.

This week it hit pretty badly, so I decided to turn my screen reader to deedum, which is my current gemini client of choice for Android.

deedum

It hasn't been updated for about two years, but it gets the job done visually and I enjoy having a feed reader for the gemlogs I like. If you couldn't already guess where this was going, deedum is not super accessible via TalkBack. There are a good number of unlabelled UI elements, headings aren't indicated, and paragraphs of text are treated as one continuous block.

This isn't a show stopper for me as a sighted person, but it got me looking for a good, TalkBack-friendly client. A good, TalkBack-friendly client I have not yet found, however, so I took to adding in some basic tweaks to deedum to make it work a bit better. I downloaded Android Studio (so large), and flutter (why is there more), and dealt with getting USB debugging working properly (help), all to realize that EVERYTHING has been long deprecated.

I've spent a couple hours this evening working on it, installing earlier versions of flutter and trying to trick the system into being happy, and it just throws more incomprehensible errors about how my dependencies can't build.

This feels ridiculous. I have done most of my professional coding in JavaScript and C++, so it isn't as if I'm unfamiliar with The Horrors. But at least in those two languages, if you can download the code it will probably still work. Deprecated features in C++ can be re-enabled with flags (if your compiler has actually started using remotely recent standards by default, which it probably hasn't). The closest thing I've experienced in a project I care about is attempting to adapt some open-source TensorFlow code and hitting the unfortunate wall that TensorFlow 1 would not run on the Python in Debian stable. Not wanting to break Debian, I also just gave up and reimplemented myself.

Don't Break Debian

I'm all that not mad about either of these particular cases, but I'm frightened by how fragile our tooling and dependencies are. Two years is absolutely nothing. The initial commit to deedum was only four years ago. It is completely incomprehensible to me that supposedly production-ready projects like Flutter can introduce so many backwards incompatibilities in that period of time and make it so unclear how to resolve them for the naive dev who is just looking to change a few things.

When I post my code online, as I typically do, I want people to be able to use it if they so choose. I am making my own tiny contribution to the software commons as a way to help out some other nerd if they find themself in a similar situation, even years from now. What's the point in doing that if the foundations any of us are building on will be torn up every few months or years?

I've been reading a bit about permacomputing recently, and while I'm not convinced that it makes sense to build collapse-ready systems (the HCI aspects of these seem to be horrifically lacking in the ideas I've read), I do think there needs to be more thought generally towards doing more, with less, for longer.

Back to the Juliette Zone