I've had to batch-rename files many times over the years. That means:
1. I do it manually over however many minutes. Works if there aren't too many (especially if the pattern is too complex to trivially automate).
2. I make a Python script for it. No way I'm renaming a thousand files by hand.
3. I don't do it. Too much work. The problem lingers forever.
Or these days,
4. I make an AI datacenter eat another town's water supply.
I've never used Emacs. I tried vi(m) nonconsensually and had to google how to exit. A while later, I tried it intentionally and hkjl navigation didn't work because I use a custom keyboard layout, so I never touched it again. Sublime Text and its many cursors for the win!
I'd love a way that isn't miserable to do such a common basic task.
It opens the list of filenames in a given directory (or set of files passed on cmdline) in an editor of your choice, and then you use your editor to rename them; the changes get applied when your editor is closed.
> I'd love a way that isn't miserable to do such a common basic task.
The problem is that you actually describe a family of tasks which is not basic. The "iterate over files, select the right ones and apply rules to rename them" part is common; the problem is that the rules vary broadly in kind and complexity, and you haven't figured out how you want to specify them (some ways will be limited in the complexity they can handle.
(Usually the selection of files is trivial; when not, we can fold that complexity into the change rules, and emit null changes in some cases.)
If your selection rule is simple enough for Bash globbing, and your per-file rename rule is simple enough for, say `tr` to handle, then that's trivial to wrap up as a Bash script (or function). In fact, you could write the Python script such that it just accepts a single input filename and outputs the changed version, and handle the rest externally.
> I've never used Emacs. I tried vi(m) nonconsensually and had to google how to exit. A while later, I tried it intentionally and hkjl navigation didn't work because I use a custom keyboard layout, so I never touched it again. Sublime Text and its many cursors for the win!
I'm not really clear on how text editors are supposed to be relevant to batch file renaming. If trying vi(m) the first time wasn't your idea, then there should have been someone else around responsible for guiding you through it. But the variations I've tried had arrow-key navigation configured by default (and `vimtutor` explicitly tells you that it should also work); you really don't have to learn hjkl, which exists largely for a combination of historical reasons with a lot of back-filled justifications. (I would have used ijkl, mimicking an arrow-key layout.) And everything can be remapped in the config files.
Yes, they're way better now! The quality was poor because they were using decades-old original IBM tooling, and injection molds don't last forever D:. But, they made new molds in, I think, 2020? I bought a New Model M in 2021. Mine has a custom-printed layout, and it looks stock, not just some one-off. The plastic chassis is sturdy and doesn't need any sort of filing. It's been my daily driver ever since and is my favorite keyboard I've ever used, so I happily recommend them to any typing enthusiast. Sooo much better than Cherry switches (or, dog forbid, "office" keyboard rubber domes).
An internal combustion engine may be complex, but it's not fancy. I can see and touch and understand every part of it. I can maintain and modify and repair it. This is not true for fancy electronics and certainly not locked-down proprietary firmware.
For every modern car I had or used in the last 20 years, the engine itself never was a problem, other than the regular maint, oil, filters, belts, plugs, cables...
Now, electronics problems, albeit relativelly rare, were far more common and fucking expensive.
And then, but this more due to the state of modern roads and streets than the car themselves, suspension issues.
The magic of an engine is less in how it operates, and more in how it was built. At least around the time they started showing up, manufacturing lots of precision metal parts was not trivial.
Although modern electronics take this further, with both operation and construction being utterly complex.
One of my vehicles is a 2009 Civic. It continues to amaze me that with minimal maintenance, that 17-year-old vehicle will fire right up with the turn of a key, with hundreds (thousands?) of parts moving in a specific way, many of them with tolerances in tiny fractions of an inch.
2010 MB C300 I bought in 2013 from a dealer after the lease expired, parked outside without a garage or cover since then (Virginia).
About 3 years ago a large branch (about 8" diameter) from an old overhanging tree fell right on the transparent sunroof cover and shattered it into a million pieces. After picking them out of the sunroof mechanism (which no longer worked after the impact) and the inside of the car, I covered the opening with several sheets of magnetized vinyl. Works great, never a drop of water inside since then and it's stayed in place without any attention. Temperature control inside the car at rest or while driving at highway speed is like it was before the damage.
Being old now I never go anywhere since I can get stuff delivered. About every 3 weeks I go out and the car starts right up, I drive a 5-mile loop to circulate the oil and then park it for another 3 weeks. Been doing this for years. I do get an oil change annually.
Change your network name. When the TV prompts you to connect, join the renamed network. Then, rename it back so everything else can connect again and the TV can't. I can think of a few potential problems with this, but, it might work?
Or blacklist the TV's MAC address in your router settings. Didn't think of that first for some reason.
Simple: A version specifier, or feature specifiers. Backward compatibility concerns vanish when I can opt-in to a newer spec. Old code keeps working, and new code doesn't suffer for legacy nonsense.
Sadly, the closest I've personally seen to this sort of thing in widespread use is `"use strict";` in JavaScript, which is only a single binary switch. You can't, say, turn on a new keyword, disable a keyword, switch to a different incompatible version of some browser API, etc.
I encourage all language designers to include a feature mechanism in a forward-compatible way. Don't overthink the difficulty: It doesn't need to do anything at first, it just needs to not be a parsing error. Treat it like a comment. FYI, this is the same as having a version number or header size in a binary file format's header, which all sane formats have (there are a lot of insane formats out there...).
Backwards compatibility is overrated. It should be future compatibility, so older browsers get to load a shim to implement new features. That way the onus of incompatibility falls on the older browsers, they get slower over time. Newer browsers get leaner. That's what you want.
Consider that not even a hard-line Christian puritan would agree with you in-principle. If publishers were forbidden from selling literature depicting incest, rape or genocide then the Old Testament would be removed from shelves. Clearly society has a tolerance for some of it.
As I recall, the term "rosebud" can refer to an intentional anal prolapse. I'm not sure if what porn actresses do is the same as the medical definition of an anal prolapse, though.
I think in the context of Citizen Kane and Orson Welles holding a snowglobe, it's referring to Marion Davies's clitoris (via the name of the sled, of course), which totally pissed off William Randolph Hearst.
>In the opening scene of the 1941 mystery Citizen Kane, the eponymous protagonist, played by Orson Welles, clenches a snow globe in his hand as he utters his last word: “rosebud.” The glass-encased spherical diorama of a snowy scene was a mere novelty at the time, but the film, in part, gave rise to its popularity.
Here's a snarky response from Gore Vidal to a letter from a ambulance chasing lawyer to the editor of the New York Review, questioning his veracity as the source of the rumor:
[From Gore Vidal's perspective, the claim that "Rosebud" was William Randolph Hearst's private term for Marion Davies's clitoris is plausible but unverifiable. Vidal acknowledges that he did not receive this information directly from Hearst or Davies but suggests that such details could easily have emerged within the intimate, alcohol-fueled circles of Hearst's entourage, including figures like Herman Mankiewicz, who co-wrote Citizen Kane. Vidal argues that Hearst's intense fury at the film might be partly explained by the personal significance of "Rosebud," even if Orson Welles himself was unaware of its connotations. While he admits the story is speculative, Vidal finds it intriguing and consistent with the gossipy, complex dynamics of Hearst's world.]
Here's Orson Welles mentioning "rosebud" on the set of a Paul Masson Commercial: ;)
What you REALLY don't want to know is what Orson Welles meant by "frozen peas", "in July", "and I'll go down on you", "fish fingers", "crumb crisp coating", and "beef burgers":
1. I do it manually over however many minutes. Works if there aren't too many (especially if the pattern is too complex to trivially automate).
2. I make a Python script for it. No way I'm renaming a thousand files by hand.
3. I don't do it. Too much work. The problem lingers forever.
Or these days,
4. I make an AI datacenter eat another town's water supply.
I've never used Emacs. I tried vi(m) nonconsensually and had to google how to exit. A while later, I tried it intentionally and hkjl navigation didn't work because I use a custom keyboard layout, so I never touched it again. Sublime Text and its many cursors for the win!
I'd love a way that isn't miserable to do such a common basic task.