I hate this software

Wow, this thing is like the tool of my dream! I had a renamer on my Macintosh back in the OS 7/8 days, but nothing that fancy. Thank you so much for telling about it!

I’m a dabbler unlike the vast majority of you guys. I dislike, but do not hate, Windows at large, as a multilingual OS for text-based operations. This is the reason why I have to work on MacOS X, which is the host to an abomination that I really hate to the guts, called the Finder. The MacOS X Finder was way ahead of its time in a bad way: it required ultra HD resolution to display a couple of windows because of all of its bloat. That wasn’t really practicable until a few years ago. Now it’s… use-able, I guess. Still sucks, have to resort to the command line way too often, and lacks any of the proper customization that could be found 20 years ago on the old Macs, because we users have no clue.

That’s crazy talk. Rebase-based workflows are superior to merge-based ones 99% of the time.

I tend to see languages as specifications or abstract constructs, and their implementations as software. So, for me, JavaVM is software, but the Java language itself is not. Python is not software, though CPython is. Smalltalk is not software, but the SqueakVM is, and so on and so forth.

Of course, you can make the argument that languages - even in their abstract form - are software, if you consider that any abstract computational structure is software. In that case, languages are software, yes. And so would be general algorithms and a lot of other stuff that we actually wouldn’t normally see as software per se.

I’m intrigued, because I never heard anyone saying anything of the sort. Do you have any reading material on the subject that you would recommend?

The benefit of rebasing is that it gives you a linear history of exactly what commits went to the branch in what order. With (non-fast forward) merges the commit history becomes a filthy lie. “git log” might claim commits to master happened in order of A/B/C/D, but actually they happened in the order of A/D/B/C.

Another problem is that the merge commits themselves will hide arbitrary amounts of complexity. Most of the time they’re totally trivial and safe, just caused by people doing a pull rather than a pull --rebase. Other times they instead include horribly complex merge conflict resolutions. No way to know which without actually reading the contents. We’ve had a case where a bad conflict resolution caused a pretty severe bug, but reading all the commits in order (including the merge commit) showed nothing wrong. It was only diffing the pre- and post- merge commits that showed that a critical line had somehow gotten lost. With rebasing, the conflict resolution happens on a per-commit rather than a per-branch basis, so each commit actually makes sense in isolation. There are no hidden bombs.

And while it’s not intrinsic to the merge-based workflows, not rebasing even the feature branches means that the history of those branches is unreadable. It’s like a fucking stream of consciousness of “oops” and “lol, had a typo” commits, showing every wrong turn the developer took. The only way anyone can accept that sloppiness is because they use Github, which hides all of the garbage commits.

Rebasing allows for using version control organically during feature development, but then present the final result as something organized. It’s like the difference between reading a paper from top to bottom vs. reading it in the order it was written in.

I started googling this stuff. Interesting opinions out there on this. Here’s discussion from Atlassian which covers both sides to some extent and doesn’t just post a “holy war” article about why they are right:

Anybody have to use Deltek time sheet software? It’s 90% of the reason I quit my last job. So very terrible.

Interesting. I’ll look further into that. Thank you!

We use ADP etime which is this horrible 90s era static web page form. Which is really bad unto itself but maybe they are going for maximum compatibility and stability or something. But then it somehow also requires Internet explorer AND flash!

Oh man, all of ADP’s web products are hilarious dinosaurs.

Ok, stop. Please. Stop.

Anyway, I guess it could be worse. It could be a .hta based site that opens only in IE6 and is partly implemented using a Java applet.

Yeah, been there. And oh God, was it painful.

My main annoyances lately are with clunky, bloated or flaky open source software that I’m stuck with using because there are no commercial alternatives. (Not naming names.)

Please name names so that I can prepare my rage-filled defensive responses in advance. ;)

Here’s a related one.

I use a Linux app launcher called Synapse. It’s more or less unmaintained; it hasn’t seen any major changes since about 2012. Nor has Zeitgeist, the activity logging/correlating framework it uses to figure out what you’ve done recently to determine what it should show you.

Surely, I thought, there must be better, maintained options by now? Nope. I’ve tried three or four alternatives, and they’re all strict downgrades. Sigh.