My software philosophy
Published: 2020-06-18Description: Tim rants about software while trying not to have a mental breakdown.
Word count: ~9047
(Small Update 2020-07-01: Significant spelling and grammar improvements. This thing was a hot mess.)
I have some particular beliefs about software. And by "particular" I mean "nearly incoherent and totally contrary to itself". The particular particulates of my particulating fucking fuck this. No word avalanches in the first paragraph this time. Jesus.
This is how I think about software at the time of publication. I'd like to have a record of how I think in the past, so this will be a test to see if this philosophy holds up in the long term. Get it? Long TERM. Like a terminal emulator...
*cough*
In summary: I try to use software that's "conservative" in the sense that it will work into the long future. This also affects the way I customize my software and use the internet.
My stupid ass reasoning and its stupid ass implications are explained in the rest of this stupid ass blog post.
Stupid ass.
Longevity
Imagine you've learned how to use a complicated piece of software. I'm not going to name any names, so I'll just call it "Excel".
So Excel is pretty useful for your workflow. You might even rely on Excel for things that make you actual real world money. May God have mercy on your soul.
But then! The company that makes Excel -- let's call it Microsoft -- comes out with a new version. They changed the file format to be incompatible with your old version because they're more predatory than a starved pterodactyl. To do the same thing you were already doing you would need to upgrade all your files and macros and depression estimates.
So you just use the older version. Except that Microsoft is dropping support for that version, and it only works on a specific operating system that is also getting support dropped. Maybe they'll drop a bomb on your crops and home just to add injury to insult.
This is how real companies end up relying on Excel 2007 on Windows XP in the year 2020. That's not a joke, either; the place I work at right now does this. Upgrading would require them to convert 13 years of accumulated data sheet functionality in an instant. And updates are rarely ever that clean to begin with. People need to be trained and told to stop complaining and given proper incentives to not gossip about the manager's sex life. All this just to get the same thing done that they were already doing with the old software.
This brings me to my first Golden Rule of software:
The software, and the output of said software, should be functional for a significant amount of time into the future.
This is why I use open source software wherever I can. I once read somewhere that the value of all closed-source software approaches zero. I also read somewhere that if you learn how to relax your mind the right way you can astral project into your computer and fix bugs by manually flipping bits in your hard drive.
So, to prevent the above Excel situation, what would I recommend someone do? Besides a full frontal lobotomy and enough morphine to kill a small elephant, obviously.
Personally I would just write a script to do any complex calculations; python, shell script, fuckin' bc, whatever. I realize that not everyone can do that, though. Sometimes you just need a spreadsheet. Plebeian.
The standard advice is to use Libre Office. The actual good advice is to use ODT file formats. This is a set of open standards for "Office-like" file formats like documents, spreadsheets, and slideshows. I think it also has database software based on SQL, but I stopped giving a shit after the first few paragraphs of the specifications. Anyone can make a program to work with ODT files, since it's open. It works by default with Libre Office, which is why the standard advice is good.
You have to plan in advance to use file formats like this. Transitioning to open formats is costly in time and sanity, so just use them from the start instead. This lesson is one learned out of long hours of agony, so remember it well. Use open formats. Demand open formats. Open formats will cut your hair while you sleep so you don't need to go to the barber.
If you need to upgrade from a closed format... Well. I recommend Fireball mixed with regular apple cider on ice. I call it "fire cider" and it's my favorite drink. The proportion of Fireball to cider determines how depressed you are, so just load that shit up and crank it out over a weekend or something.
This brings me to an important point about longevity: The internet is NOT long lasting.
There's a lot to say about the internet, so I'll save it for another section. For now, know my hate of the web is partially because of longevity reasons.
Software needs support most of the time. The internet changes, security changes, and even my socks change from time to time. So choosing for the long term also means choosing mature software that isn't making any radical backwards-incompatible changes.
Yet again I'm going to have to keep you in suspended animation. Updating software is such a complicated part of my value system that it needs its own section, so you're gonna need to wait again. God I'm such a nerd.
Finally, when I customize things to my taste (which is required for nearly every piece of god forsaken software on the planet), I want to keep it pretty conservative. No massive plugins, no 9000 line rc files, no crazy "r/unixporn" rices, no absurd theme switching every month like I went into a manic episode and had to destroy everything before I went back to depression.
"You're gonna be using the config file anyways, so why hold yourself back?"
Well... This is more of a personal thing that's getting it's own section (Fucking really?). It has less to do with longevity and more about quirks of how my mind reacts to customizing things. In short: I hate it and want to do as little as possible.
This kind of turned into a summary section, but that's because most of my software decisions stem from this first Golden Rule. Or I don't know how to write blog posts. Is anyone even reading this? If you are, is it because of my stupid jokes or because of the actual content? What even is this shit. What is my life.
The computer should be a tool to get useful work done, not a tool to distract you from life. My life partially takes place in the computer, so I try to make sure its tools are for life.
Customization
Solving problems is addictive.
You feel accomplished when you solve something. Like dropping an iceberg to rival the one that sunk a certain large and famous ship into your toilet at 3 am, there's a rush of reward as you finally figure something complex out (like comprehending the structure of this sentence). At least I do, and that's kinda the problem.
Customizing my system to the max gives me the same feeling of reward as taking a shit solving an important programming problem or writing something worthwhile. I like fun things, but customizing is a game of significant diminishing returns.
When you tweak a system to the max, worrying about every little detail, it's called "ricing". Don't ask me why, cuz' I don't know or care in the slightest. This can take arbitrary amounts of time to "get right", because of the aforementioned diminishing returns.
You make a change, and then you get the urge to change something else to be consistent to that, and then change something else because it just has to be consistent. Eventually you're rewriting the kernel from scratch when all you really wanted was a non eye-searing font for your terminal. What's worse is that you're feeling like you're accomplishing something important the entire time.
One of the solutions to this issue is to never customize anything. Just always use the stock software solution and never try to expand beyond that.
For (hopefully) obvious reasons, this doesn't really work. Most software in the universe needs some customization to be good. For example: my window manager, i3, needed to have the default window keys (jkl;) changed to vim bindings (hjkl) to drastically improve my experience.
This is what I do:
- Find a mature solution to whatever issue I'm trying to solve.
- Use the stock configuration for as long as I can.
- Once I'm used to the software, make the smallest possible changes to get the most improvement.
- Cry because I'll never be innocent again.
- Continue to be conservative in every change I make. Carefully consider it each time.
(This doesn't apply to the part of customization where you have to customize something just to get it to work. Like signing into your email client.)
"Smallest possible change?" There's usually one or two simple changes that you can make that give you enormous returns. Like putting set hidden
in your .vimrc. Look up the "80/20 rule" for a more general explanation. Alternatively you could just get the general idea from this paragraph. That was an 80/20 joke, if you couldn't tell.
This means minimum visual changes. I only really do visual changes if the app requires them to function because of awful and inscrutable defaults that cause literal long-term eye damage.
If I get used to a non-stock configuration than it's something that I really really want to keep standard for my own setup across computers, so I make sure to use programs with portable configuration files whenever possible.
Plugins and extensions are a blessing and a curse. They're great for niche functionality, but horrible from a longevity perspective, since you're relying on both the host software and the extension being mature. I try to keep extensions to a minimum; no Vim plugins, for example.
But that doesn't mean I won't use extensions ever. Every browser I touch gets uBlock origin installed on it, since that makes the experience over 10 times better, by my estimate. Looking at ads literally makes me feel ill after all these years.
"But wouldn't using the default stuff get boring?" You, the straw man, ask.
Boring is a good thing. Remember that I'm trying to remove problems from my life, not create new ones. Once a piece of software (and it's resulting configuration) become automatic, it becomes a tool I can use and rely on for my real passions. Like writing too-long blog posts about software. A tool becomes an extension of yourself and your workflow, which is much harder to do when you're constantly fiddling around with how it works.
My goals are to create interesting things; this is hard enough without constantly creating artificial challenge for myself all the time.
"But it's a long term investment in your future enjoyment of the software! You'll have more long term enjoyment if you rice out your system!"
Ehhh. Probably not. You can make nearly anything become familiar with enough time. Fix the really important things, like correct key bindings, but other than that it seems kinda superfluous. After a few years I'll accumulate small changes here and there, but for the most part my conservative attitude towards customization will keep me from jumping down awful rabbit holes.
"But you're keeping yourself from the full effectiveness of the tool that you're using!"
Yep! I get nasty decision anxiety. Giving myself a lot of options doesn't really improve my experience as much as severely limiting them. Give me one option and I'm happy, give me 5 and I'm stressed out and worried that I'll make the wrong choice. When playing Pokemon Ruby I kept the first potion from the PC for the entire game.
This is all null and void if you enjoy the process of ricing and tweaking for it's own sake; I can accept that other people prefer other things sometimes, even if it doesn't seem like something I would enjoy. (Like eating corn. What the fuck is up with corn? Am I missing something about corn? Huh?)
Software is complex enough as it is. I'm not that masochistic to want corn more complexity and uncertainty in my life.
Updates
Fuck software updates. Not in the hot way either.
I get used to something, get it to work, and then you just fucking change it from under my nose. Fuck you.
Learning a new program is a non-trivial task. Your stupid ass UI update means I have to learn a new program to have the same functionality I was already using it for. What the hell is wrong with you? Fuck you.
And don't even get me started on APIs. What the hell is wrong with you? Hundreds of thousands of people rely on the functionality of the extensions they made for your shitty program, and you go along and break all of them for no god damn reason. Fuuuuuuuuuck you.
...Alright. That felt good to get off my chest.
Besides helping with longevity, using mature and stable software allows me to not have to worry so much about updates changing significant features.
Sometimes this isn't always possible, like anything internet facing. Still, it's a good standard. In fact, it's another Golden Rule:
Don't update software unless you need to.
This may seem like a weird philosophy. "You're telling me you don't want new features and improvements?"
Yes. I REALLY REALLY don't want new features and improvements. New features are new things to learn, and learning is hard when you really don't give a shit.
To be fair, mature software gets non-security updates too. The difference is that they almost always have a commitment to stability that non-mature software doesn't have. The update gets out of my way and I can keep using the tool in the same way I have been, ready to explore the new feature at leisure instead of being forced to learn a new workflow on the spot.
I like bug fixes and security updates. Those are great. Wow. Make the features you already have more stable and more resilient. 10/10 beautiful. Just don't expect me to be happy if you change the keyboard shortcuts or some shit. I rely on the tool you made the way you released it, not the way you envision the software being used in an "ideal" future.
I try to not be stupid and unfair, unless it's funny. I know v0.0.2-beta of baby's first application launcher is gonna be unstable. I give beta software a bit of a pass on this one, since they're still experimenting with the best feature set to support into the future.
I wish I could never update software until I really needed. Sadly the malignant tumor that's the internet demands progress and security updates. And when you download that new security patch it includes a new, irrevocable, "modern" UI. Fucking hell.
This is where your choices are really important. Did you pick something mature and stable, or are you gonna have to learn a new UI on the spot to do the same thing you were already doing? Let's hope you can predict the future well enough to know in advance, damn plebeian.
Other apps need constant updates, like web browsers. Using LTS releases helps mitigate the effects of awful content updates. Even then, the internet ruins everything, including the internet. It's like when you're playing Resident Evil 4 and you get in a bear trap and have to mash A a lot to get out, except there's a bug where every step is a bear trap and if you fail to mash A for each of them the world economy collapses.
As for desktop / laptop software, something like Debian Stable would be best here. I know that CentOS has a 10 year support cycle (as opposed to Debian Stable's ~5 years), but I prefer Debian because it's non-profit, which seems more stable to me in the long term. Something something profit seeking has the wrong incentives for my taste, something something.
In extreme cases I'll just accept the security risk and use an outdated piece of software. This is a bad answer, but it's also the only answer I can come up with for certain situations. Think back to those businesses that rely on Windows XP and Excel 2007 to stay running. I'm carrying on their tradition. I hate computers.
Mostly, though, picking stable and mature software from the get-go is the best way to make sure that you don't get blind sided by features. Yes this is the boring answer. Yes that's the entire point.
Friends don't let friends update software.
The internet
The internet sucks.
I mean it suuuuuuuuuuucks.
First of all it's Evil (with a capital E). It eats life and effort while giving you almost nothing in return. It's like heroin; you'll feel good for a while, but you're permanently corrupted after touching it. Kind of like my blog.
Second of all it's horrible from a longevity standpoint. Everything about the internet seems designed to be exactly contrary to my personal desires and beliefs about software. They're out to get me, man.
Third of all, and most insidious, I have to use it anyways.
But I'm not the kind of person to give up easily. I can't have perfection, but I feel I've done a damn good job mitigating the horribleness of the internet.
The first issue: being evil
I might actually want to make a blog post about all the reasons that the internet is Evil. There's so much to complain about that it feels like it'll derail this post completely. So instead here's an abridged list:
- (the big one) Sucks your life away and makes you feel awful while keeping you addicted
- Borderline inhumane tracking and breaching of privacy
- Anti-patterns built from poor cooperation and incentives. Vendor lock in, advertisements, etc.
Great, so now that we've established the Evil, how do I deal with it?
When I was younger I got addicted to the internet hard. It was mostly YouTube, although I did get into some social media like Mumble (remember Mumble?). I remember the distinct feeling of disgust I felt when I realized that I'd watched everything interesting that YouTube's recommended videos was willing to show me, and looking back at the thousands of hours I wasted.
I'm a lot better about it now.
For YouTube I learned that it has RSS feeds for channels. It's hidden in the source code of their website, but it's there. I use a RSS feed reader (newsboat) to get updates on channels that actually produce good content and an external video player to watch them. This way I don't have to look at comments or recommended videos to watch things I think are interesting. You'd be surprised at how much time you spend reading comments.
This is a great setup, especially when you combine it with certain inconveniences.
"Inconveniences?"
Yes inconveniences. I made it a little more convenient to use my RSS feed instead of the YouTube website. My web browser doesn't save login passwords or cookies, so any time I visit YouTube it just looks like the weird default page with things I would never want to watch. I also use an external (non browser extension) password manager with a long cumbersome master password to further incentives me to not log into things unless necessary.
RSS feeds really are great. They are self curated, don't follow insane algorithms made to keep you scrolling, and (when kept trimmed down to acceptable levels) much less time wasting than alternatives. I use my feed to follow some great blogs too (this blog not being one of them).
Notice how I didn't say "delete all your social media accounts and force block all troublesome websites". That can work, but in my experience it just feels oppressive and makes relapsing feel all the more tempting. This way I still have freedom to do the things I want, but I'm incentivised instead of forced to use the sanitary solution.
You can even do it with mobile, with the right setup; find a RSS feed reader that you can set to not load HTML and copy/paste YouTube links into vlc mobile to play them. With that said, I use my mobile phone a lot to stay sane at work, so I use NewPipe with comments and recommended videos turned off for YouTube while on the go. Sue me.
I try to stay away from the web browser. No sync accounts. Non-browser bookmark manager. Obsessive local backups. It's actually kind of extreme, but I know what the internet can do to me if I leave it unchecked. I need to stay at arms length from it at all times or It'll hurt me in the long run. This sounds like an abusive relationship that I'm disturbingly going back to over and over. "I know I need to stay away, but I keep coming back!" Wow.
As for other Evil things, I use an ad blocker called "uBlock Origin" on Firefox. I know it's not "just" an ad blocker, but explaining what a "wide spectrum blocker" is happens to be out of the scope of this blog post. If I had to choose one extension to keep, it would be uBlock Origin. Anything else I have is just for convince. It's essential for keeping the Evil at bay for me.
(I use Firefox on android to get uBlock Origin on a mobile browser)
Using extensions on my web browser contradicts the whole "customize" thing I ranted about a couple million words ago. I justify it with the fact that the internet is Evil, and I'm protecting myself from much greater evils than installing uBlock Origin on every machine I use. But before we get too far on that train of thought...
The second issue: Anti-longevity
When I look at the internet I am reminded of a paper shredder shredding paper shredding into a volcano that shreds them into a black hole that shreds them into an alternate universe made of nothing but paper shredders shredding paper shredding paper shredders.
What I mean is that shit on the internet doesn't last at all. Give it 20 years and over 50% of the bookmarks you've made will be dead links, I can almost guarantee it. Make local backups of the websites you visit, people.
(You might be interested to know that I've made a commitment to keeping www.timtimestim.com online for much longer than normal as a direct cause of this value. Practice what you preach, and all that.)
And don't even get me started on "web apps". Here's everything wrong with them:
- Forced to always use the most recent version
- Have to have an internet connection to use
- The exact opposite of "mature and stable"
- Incentivised to break all my Golden Rules due to profit seeking
- Need yet another online account
- Forced to comply with their terms and conditions
- Ties your life harder to the internet
"I have to log into evernote a lot. Might as well tell the browser to remember my login. Might as well tell it to remember all logins. Whoops, I just spent the last 4 months watching videos about the South Sea Bubble again."
I'm sure you can guess that I try to avoid web apps at all cost. I try to rely on localized self-hosted solutions wherever I can (and wherever it's reasonable); instead of WorkFlowy I use easily searchable plain text documents. Instead of Google Drive Apps I use plain text markup languages like Markdown and LaTeX or write simple scripts. You get the idea.
There's another side of the coin, though: web services.
What's the difference between a web service and a web app? It's the difference between Gmail (service) and the Gmail website you visit to check your mail in the browser (app). You can use an external mail app to make use of the Gmail service. Think "VPN" when you think web service.
Most web services are "free" in the sense that they rely on people not paying up front to use them. You get limited access to the service until you cough up money. Others rely on advertisements in one way or another. Both of these practices make me feel uneasy, I'd much rather just pay up front for something I need, or find a local free solution that I have full control over. This way I know that there's not a legion of people mooching off the service, and instead the user base is built around people who are all paying up front to keep it alive.
You can't pay for everything, even if you want to. There's no YouTube alternative out there to get all the same content, for example. The web is inherently built on shaky business practices, and so making local backups of things you end up enjoying is pretty much the only way to preserve things.
Some people are too poor and/or cheep to pay for services just to have peace of mind. There's an alternative, but you're not gonna like it... Self hosting. Set up your own email server, your own off site backup, your own media streaming server, etc. It's hard, but it's pretty long lasting if you can do it. I don't do this for everything, but I try to embody the spirit of it by backing all my online things up just in case I need to jump ship.
The third issue: Coercion
The internet is horrible, but you probably need to use it anyways.
At least, I do. I wish I didn't, but I still do. You end up using services like discord, Skype, or whatever fucking flavor of the month thing is out there. You might legit rely on something online and be at the mercy of an external company. You might need it to talk to friends.
You can never be clean, Justin. Never be clean.
The final Golden Rule is the hardest to implement, since it requires uprooting your entire internet life:
Use the internet to try and get away from relying on the internet.
Download things locally. Download movies instead of streaming them. Download your favorite YouTube videos before they get removed for some reason. Download your music instead of subscribing to spotify. Write documents locally instead of on Google Drive.
Trial-by-fire this by going 24 hours without turning on the internet. Do you have documentation backed up? Do you have the means to get useful work done still? The right software installed? Doing this will teach you what you rely on the internet for, and will show you the things you can slowly replace with more long-lasting solutions.
Obviously, this can't be perfect. There are legit good things on the internet, and sometimes you just want to browse reddit. The internet has significantly impacted my life, and not all of it was negative (as much as I hate to admit it. I like hating things simply, without caveats, but that's not how real life works).
In the future, I think, social media will be seen like smoking: You feel good for a bit, but long term use causes irreversible damage and addiction. You'll probably want to find a way to ween yourself off it.
Try to practice good internet sanitation. You might find you can start to breath better after a few months.
So what do you actually use?
(BTW: This list is constantly updated and refined in the using part of my wiki. The list in this post isn't going to be updated to preserve history.)
This is what I use currently. My philosophy says that I should be using these things into the far future, but we all know how horrible software is in general, so this is suspect to change.
Also, if I start using something with new functionality -- like a terminal multiplexer -- it won't be added to this list. I want to be able to look back and actually test the effectiveness of this particular belief system and see what software worked and what didn't.
Just for posterity's sake: I resent every piece of software on this list for one reason or another. I recommend you just burn your computer instead of installing any of this shit. Go off the grid instead of developing a complicated software philosophy like you're trying to rationalize away the terror of inevitable death. Always carefully building walls until you actually start to believe that what you're doing is the best thing to do, only to lay in bed one night in fear and shame knowing that you're still just fooling yourself and you're still afraid. We're all afraid, and I'm sitting here telling you about what operating system to use. Go for a jog in the woods. Leave your phone at home and get lost. Please. I hate software so much, so why do I think about it so much anyways? Why do I have to keep using it constantly? Why?
...Let's move on.
PC/laptop
You'll find that I use a mix of CLI and GUI. I'm not evangelical to either side of that debate; they each have their own uses and problems. I tend to try and prefer CLI for longevity reasons, unless the GUI alternative is just that much better. (Or more likely just the first thing I used and I can't be fucked to change to a CLI version right now).
OS: Linux / Debian Stable (currently Debian 10)
A no-brainer. Debian Stable doesn't change often and Linux is well supported and popular enough to continue for a long time. Most of the software here is whatever version is currently supported by Stable, otherwise the alternate version is listed.
Window Manager: i3wm
...plus i3lock, i3bar, and i3status.
i3wm, or just "i3" is a tiling window manager. If you don't know what that is, than just look it up. And eat a dick while you're at it. Please.
I choose i3 because:
- It's the first tiling WM I used, so it got the, "Woah tiling WMs are so cool!" reaction out of me first.
- It's one of the most popular tiling WMs out there, and well supported and stable.
- There's a wayland drop in called "Sway" that I can jump to if X11 gets depreciated in my lifetime.
- Having tried other tiling WMs, I find i3 to be the most useful.
- I already have my configuration the way I want, and moving to something else would require me to tweak and fiddle to get the same functionality I'm already using i3 for.
- I have to fight the forces of evil in tights sometimes.
Setting it up to always make new windows in the "tabbed" mode is kinda the best thing ever for my particular workflow, since I'm so used to the idea of browser tabs. Yes I've tried terminal multiplexers like tmux
and screen
and found them to be cumbersome and annoying when I could just use my window manager (although I'm open to trying them again if I ever find a use case for them, like if I start using ssh a lot more or something).
Terminal Emulator: st v8.2
The simple, or "suckless", terminal...
This thing is extreme in its minimalism. It's one of those programs you customize through recompiling the source code (written in C). My particular version doesn't even have scroll back (I just use less
to page through long outputs. I surprisingly don't miss scrolling).
If you're curious, the only customization I have on it is changing the font to be sane and the colors to be gruvbox + an acid green cursor (don't ask). This might change into the future as I slowly add features, but right now I greatly enjoy the minimalism.
Text Editor: vim
Given my stated values, this is the obvious choice. emacs
is also good from a longevity standpoint, but I don't want to fiddle with it constantly; vim
doesn't need nearly as much customization to be useful. Also, it's more ubiquitous in the computing world than emacs
, which means that there's a higher change that the skills I learn in this editor will transfer into the far future.
If you find yourself agreeing with my values, but use emacs
, than I would recommend not switching to vim
. Like I said, emacs
is good from a longevity standpoint, so if you've already learned a complicated editor than there's no need to learn a new one. A huge portion of this blog post was railing against that exact practice; get useful work done first and then explore other options if you really want to.
Look lads! I ended the editor war!
Shell: bash
Another obvious choice, in my eyes. Ubiquitous, stable, well supported, etc.
The only oddity here is that I tend to use dash
(linked to /bin/sh) for my shell scripts for (hopefully) obvious reasons.
Web Browser: Firefox ESR + uBlock Origin
I hate that I have to use a web browser like firefox, since firefox is absurdly bloated and resource hungry like most web browsers. God I hate the internet.
Still, it's the best option from a longevity standpoint, since it will actually keep up with whatever insipid web shit gets stacked onto the flaming tire file pile. It will handle new JavaScript far better than, say, lynx
. Even though lynx
might technically last longer, it just doesn't have the functionality that I need.
I have the uBlock Origin extension for my sanity. I literally can't handle the web with ads, so it's necessary.
Music Player: cmus
I'm currently shuffling through a playlist of over 1090 hours of music as I type this. That's over eighteen thousand songs.
When it comes to handling large amounts of music, there's really no comparison to cmus
. It's just that good. Combine with vi-like keybindings and usage, and it's flat out the best music player I've ever used.
I've heard things about mpd
(the music daemon), but honestly I like the graphical/terminal interface of cmus
better. Also cmus
listens to me, unlike mpd
, which seems to always ignore my personal issues because it can't handle emotional situations.
There is one small issue, though... cmus
isn't maintained any more. It stopped getting updates at v2.8. Hopefully it'll coast by a bit longer since it's pretty lightweight, but this still came as a shock after I already got used to it and committed to using it long term.
Hopefully someone will come along and pick up the project where it left off. Like the story of GNU screen not getting updates for 6 years until a new maintainer came along. While it was dead people still used it, and it worked, so maybe all I need it a bit of patience.
If not... Than I plan on using it for as long as Debian Stable supports it. Which looks like at least 7 or more years, considering that it's already planned for support on Debian 11.
RSS Feed reader: newsboat
Just a good TUI based RSS reader. Downloads feed entries locally too, so you don't lose links from deleted entries that you've already seen.
This is actually a fork of the discontinued newsbeuter
. Someone's pride rest on keeping this thing alive, which means that it has a higher chance of living into the future. I want to live in the future too, like Fry from Futurama. That'd be rad.
Video / media player(s): mpv / vlc
I use both vlc
and mpv
for different things. mpv
is mostly used in conjunction with newsboat
to watch youtube videos from RSS feeds. vlc
is there for nearly everything else, or if I find a particularly nasty video file. Watching movies on vlc
seems to have much less screen tearing, somehow.
If I had to choose, it would be vlc
. In fact, I might want to try and transition to that fully... Hmmm...
Well, this particular video player setup is kinda ad-hoc anyways. It works for now, and that's what's important. Elmer's glue and hope is what holds my life together.
Email client: Thunderbird
Okay okay okay. I know what you're gonna say, "Why not use mutt
/ alpine
?"
Well, it's because I don't really need it. The vast majority of email I read or write is from my phone, and even then it's not that often. I try not to let email consume a lot of my time, so I don't really need a super-solution to it right now.
If my email needs change in the future I will almost certainly move to mutt
. As it stands I don't see the need to put forth the effort to learn it right now. Keeping myself clean from the scratching the superfluous customization itch is hard sometimes.
Password Manager: keepassxc
"This is ridiculous. You claim to want long term solutions, but you use these bloated and awful GUI things instead of just, say, using gpg
and a small wrapper script like pass
. Do your stated values actually affect your actions or is this all just pointless signaling?"
Well... I need it to work on android, too. And keepass databases (specifically kdbx) are well supported across operating systems. Yes the gpg
route would be more long term, but so would never using any software in the first place. This way I can get useful functionality while still having a ubiquitous and well suported file format for the future.
Why do I trust kdbx databases specifically? Because I've used it for well more than 5 years and it's never failed me. This is probably the third or so kdbx client I've used, and it's still going strong. And I also keep my database backed up to csv files for worst case scenarios.
Torrents: qbittorrent
Looking at all the possible solutions, qbittorrent
was the most useful torrent client I've found that was still easy to set up. I could have learned to set up a transmission
server or something, but honestly I don't need it. If my torrenting needs change in the future, I'll switch. But I don't really see the qbittorrent
project going anywhere for quite some time.
Not that I download anything but Linux ISOs anyways. I'm totally just seeding Linux ISOs. I am doing fine, officer... Oh you meant I was getting a fine. Shit.
Spaced Repetition Flash Cards: anki
Did you know that the state muffin of Massachusetts is the corn muffin?
Look up "spaced repetition" online to see what I use this thing for. I might even make a blog post about it if I ever begin to give a shit.
I choose anki
because... Well I chose it a long time ago because it was the only one I really know about. I'm sticking with it because I'm already embedded into it pretty hard. There's other options like Mnemosyne, but it's kinda the same.
You can maybe see where I'm coming from here. I want to continue to use anki
because it's what I already use and invested in.
The android client is much more important, since that's where I do most of my flash card reviews. Still, both give me a vague feeling of not being super longevity compliant. This is software that you're meant to use every day for decades, and it really should have been built from the start with that use case in mind.
And don't even get me started on the extensions. I refuse to use anki
extensions because the developer seems to have forgotten what "backwards compatible" means, and keeps breaking them for everyone.
But not all is lost. The anki
database format is an sqlite3
database, which means that someone in the future will be able to read it pretty easily and possibly make an Anki2 or something. I still ask Santa for a better anki
every Christmas.
Misc:
bc -l calculator
pandoc for converting documents
libreoffice for the occasional graphical document I edit
mupdf for viewing pdfs and epubs
Godot Engine for developing video games
GNU Coreutils for most everything on the command line
flameshot for taking screen shots
dmenu for scripting magic and program launcher
fzf, ripgrep, find for searching through my file system
gimp / krita image editing and drawing
duplicity local incremental backups to external hard drive
syncthing sync files and shit between my phone and laptop
youtube-dl the first rule of youtube-dl is that you don't talk about youtube-dl
unclutter-xfixes hide my cursor after 3 seconds of not moving; launched at startup
python, gcc, etc pain
Phone
Phone software is horrible in the extreme. Ugh.
My phone habits mostly include trying to find software that might decide to work sometimes, doesn't superfluously connect to the internet, and then never ever updating it ever again.
I actually just recently did a purge of a lot of the bloatware apps I was relying on (like Gmail and the default app launcher), so these choices are largely untested for anything longer than about a year. I tried to apply my longevity values to them, but mobile apps are universally horrible and I felt like I couldn't trust any of them anyways, so I probably just wasted a bunch of time. Fuck it.
You'll notice I hate phone software with a passion. This is going to sound extremely critical and attacking to a lot of people doing free volunteer work for the good of the future of the human race, so strap yourself in for some hypocrisy with a supersized side order of inconsolable rage.
WARNING: I don't actually hate developers or have any personal vendetta against the people who make free software. I just get frustrated with software, and it's funny to rant. Sorry for ruining the magic, but I seriously do think that people who make free software are pretty awesome in general. Take this as humorous ranting with more than a little real resentment about the state of things.
OS: Stock Android
This one gets constantly updated for security reasons. I still hate it though. Planning on moving to something like Lineage OS eventually once I work up the patience to re-learn something new again. Fuck Google with a nine foot pole that might or might not have touched the Grinch.
Launcher: KISS Launcher v3.14.0
I accidentally updated this recently, and fucking guess what: I had to spend 30 minutes of my life poking my phone screen in the right places to get it working the same way it already was. Fucking hell.
Customized to remove most special effects and bloat-ware apps, but not much else beyond that. I could have probably gotten away with less customizations, but I got carried away with it. But I haven't changed the visuals for a while, and going back to the default makes me want to puke.
Actually, most things here make me want to puke. KISS Launcher is just the butler that's helpful, but also makes me puke a bit too. Just a bit.
Mail client: K9 Mail (most recent version)
Needs updates for security reasons. This is where I do most of my email stuff.
Why does it automatically make a footer in all my sent emails saying "Sent from K9 Mail!" by default? Why can't I send plain text emails by default? You made it like this, and it's horrible. What's wrong with you? Who wants to have a default footer on all their emails that you don't even warn people about? I changed your stupid settings, but I'll never forget, K9. I'll never forget.
App "store": F-Droid / direct APK downloads
Fuck Google. I try to stay away from Google services as much as I can, and one way to do that is using F-Droid with a mixture of downloading APKs from external sites. I still have to use Google stuff for a lot of task (maps seems to be a big sticking point. So does their stupid captcha thing), but I feel a bit more clean using F-Droid.
...Even if their app sucks so much ass it starts to look like two dollar night at the strip club. Seriously, how hard is it to have an app display apps from a database? I'm genuinely curious here. Can you not just, ya know, do an SQL database with all the app info on there? You're seriously telling me that you have so many apps that you couldn't just do that? I doubt it.
Why doesn't tapping the screen buttons work all the time? Why do I have to tap certain buttons 10 times to get them to work, but only sometimes so it makes me feel like I'm going crazy? Is your app a literal skinner box to get me to hit buttons a ton of times?
Why does the "update" screen show me apps to update, but when I go to the app page it tells me I'm at the most recent version? You made this.
I get that server bandwidth is really expensive sometimes, but god damn your servers are slow. No wonder people resent this shit. No wonder it's fucking impossible to get people to do the most basic things for privacy and freedom, when the alternatives look and act like this.
YouTube client: Newpipe (newest version)
You'll notice that most things on the phone need to keep updated, since they're nearly all internet facing. Such is life, I suppose.
This is the best YouTube front end on mobile. At least out of the two or so that I could bear to try before involuntarily tying a noose. You can allow background playing even while the screen if off! Disable comments and recommended videos for sanitary reasons and you're all set!
Except, of course, the fact that the app is horrible. Why can't I start a playlist from a certain video without first having to play it in a weird pop up window? Why can't I read the description of the video while in full screen without losing my place in the playlist and the video? Why can't I look at a channel's made playlists? Why can't I do anything even remotely useful with playlist? Answer me motherfucker. WHY?
Reddit client: Slide (newest version)
UUUUUUGh.
Why do some GIFs play sound even when I turned sound off? Seriously. It's like the most basic fucking feature, and it plays sound even when I told it not to. AND this is a bug that's been reported before AND I updated to the most recent version AFTER you got that bug report AND IT'S STILL DOING IT. What the hell. I don't want new themes I want the minimal functionality needed to not alert people involuntarily that I'm watching videos of dogs running around and being happy.
Look at me! Browsing dog videos on reddit on the shitter at work, when suddenly a "gif" starts to play sound even when I had sound disabled on the app and the guy dropping a loaf next to my stall hears a dog barking. You made this happen. This is the real use case of your app, and you failed it.
Web browser: Fennec F-Droid + uBlock Origin
Here come dat boy uBlock Origin back at it again with that ad blocking.
I can't browse the web with ads. I just can't make myself do it. I've been using ad blockers for over a decade (or longer!) and it's impossible for me to go back. This was a problem, because Chrome on Mobile doesn't allow extensions. Firefox has extensions, and thus uBlock Origin, so it wins.
Do yourself a favor and get ad blocking on mobile. Seriously.
What? You expect some more complaining? Where the hell am I even going to start with firefox, let along mobile firefox? Jesus. I don't need a blog post in the middle of my blog post.
Messaging: Signal
Oh wow. A texting app. You can even use it to chat "securely" even though privacy is dead and pretending otherwise is sheer folly. Whatever. This app let's me talk to some friends and get text from my pharmacy about the hypertension medication I use every time I think about software.
Music player: Musicolet v4.1 build157
Not open source, but it's the only music player that's even remotely acceptable quality on Android. And trust me, I've tried everything the open source community has to offer in ways of music players; they all are absolute trash garbage.
Musicolet sucks too, but it sucks in just the right way to make me not fly into a rage every time I think about it. Yes I use a version from 2019. I don't see any reason to upgrade my music player until it literally stops working.
I could complain for hours about music players on android, but I'll leave you with the evocative image of people making something without actually trying to use it in their daily lives. I'm convinced that most app developers simply don't use the software they make, because if they did than they would have either fixed the most basic issues or issued a formal apology to the universe.
Spaced repetition flash cards: AnkiDriod v2.9.5
Acceptable. For mobile. I'm watching you, though, AnkiDroid. I'm waiting for you to slip up.
Doesn't support plugins, either. Not that I personally care, but still.
Password manager: KeePassDX v2.5
Do you even use your software? The magikeyboard is launched from my keyboard thing in the corner, I have to press the database button to launch keepass, and then the keyboard is the magikeyboard so I have to switch back, and then I type in my password, and then go back to the magikeyboard to input the password, and then finally go back to my regular keyboard.
Why do I have to switch back and forth so often? Are you willfully ignorant of this? Am I just stupid? I'm probably stupid, aren't I? Your software is too advanced for my tiny brain to understand, so I have to use the inferior version that takes switching keyboards 5 times just to input a password. I'm sorry for not being smart enough to figure out the solution to your puzzle game disguised as a password manager.
Software keyboard: AnySoftKeyboard v1.10.1109
God this thing sucks. I used gboard before, but accidentally updated it and the UI changed on me. Decided to not use a keylogger-based keyboard app and tried to switch. The only open keyboard with spell check was this one, so I ended up having to use it. The auto correct feels like I'm trying in fucking 2008.
Christ this thing sucks. I even break my "no update" rule for it just in the vain hope that they'll actually make something decent given enough time. No luck so far, but one can hope.
Thanks for not connecting to the internet, though. Maybe look at fuzzy finders for info on how to search for words. That would be cool, a fuzzy finder search algorithm for words that is also adapted to common spelling mistakes (like searching for "c" when you type "x" or something).
Camera: Open Camera v1.47.3
Camera app. What more do you want? Weird landscape orientation bullshit, but fuck it.
QR scanner: SecScanQR v1.2.3
I use this surprisingly often. Just a decent QR scanner. That's it. This is perhaps one of the best things I can say about any mobile app. Good job.
Still had to edit the settings so that I didn't have to press a button to start the scan. As if I'm going to do anything but scan something when I launch a qr scanner. Why would the default need me to press another button? Huh?
Clock: Clock+ v1.1.3
Some weird old ass clock app from F-Droid that actually works exactly how I want it to. I don't think it's supported, but I'll keep using it until it stops working. Not sure about this one, since it's buggy as fuck. But whatever. I'm so done. I just don't care any more. Deliver me from this hell.
Misc:
Simple XXXXXX Simple Calendar, Simple Contacts, Simple Gallery, Simple File Manager, Simple Calculator. Pretty self explanatory here.
Termux I don't actually use this that often, but I've been exploring it for possible ideas to integrate CLI and TUI programs into my phone workflow, to kill two birds with one stone. It's kinda awful in a lot of unique ways, but it might be my only hope to escape the atrocious mobile apps I have to deal with daily.
Editor v1.41 Simplistic generic text editor / note taking app. Use this surprisingly often as well.
Easer v0.8 Automate system things, like turning off wifi at 8:30 every day or something. Fucking terrible to setup, though.
Syncthing Same as laptop. Just for syncing. Actually works sometimes, which is surprising.
...And that's pretty much it. I know I was really critical of a lot of the things here, but that's because they suck. Mobile phones and my software philosophy don't really mix well, if you can't tell.
Web services
Things I reluctantly pay for to use the internet in a more sanitary way.
I'm obviously not sponsored by anything ever. These are my actual things I use and would recommend others based on merit. Consider that a high compliment, coming from someone like me. I won't be making any in depth reviews of these products; you're encouraged to figure out if you like them yourself without my shilling.
Email: posteo
VPN: mullvad
Web Hosting: nearlyfreespeech.net
Online storage: local backups
(I've been looking for a good offline backup tool, and haven't found anything great yet)
Conclusion: all software is terrible
I hate software and I want to use as little of it as possible. I don't want to cozy up to it, I don't want to have to keep appeasing it with new updates, I just want to use it to get my shit done and then leave. Is that too much to ask for?
*Ahem*
There's obviously going to be some things here that I didn't explain well enough, or that seem contradictory, or even look stupid. If you still don't get it, than please refer to my super secret final final Golden Rule:
Fuck off. Let me do what I want.
Good night and good riddance.
-Tim