this post was submitted on 05 Mar 2026
80 points (88.5% liked)

Selfhosted

56957 readers
1041 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

  7. No low-effort posts. This is subjective and will largely be determined by the community member reports.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Honey, I Shrunk The Vids is an overengineered oversimplified system-agnostic frontend for FFMPEG. Built with assistance from Claude, but don't let that stop you reading - I'll explain why.


Predendum 6/MAR/26: Yes, I’m using genAI - specifically Claude - to help me build and improve this application. But, I believe I’m using genAI differently than the majority of projects. For one thing, I’m not blindly copy-pasting output and crossing my fingers that it works. I read the output, looking for things I know are wrong, and try to fix it; if I can’t, I ask what I’m doing wrong, and then I fix it. When I encounter errors, I’m reading the error output and if I know how to fix it I do it myself. I’m trying to actually learn, but I do that best by diving in and fixing the mistakes I make. I test informally* on the hardware I have available, which is two Windows PCs, and sometimes my friend with a 2016 Mac will do a test run for me to confirm stuff works. (*by "informally", I mean I don't write test cases. I know how, but they're repetitive and I hate them and I'm not doing it for my personal projects or I'll end up hating my hobbies.)

My goal in posting my projects is not to have other people audit my code for me, nor do I want kudos or approbation (except for any jokes you see. Those are all me). I’m posting what I’ve got when I’ve got it largely working, in case other people find it useful, and that’s it. I do hope that if people see something I could refactor or conventions I should be adhering to, they’ll drop me a (civil) note about it so I can keep it mind. I appreciate feedback and advice, but I’m not expecting it.

Thanks for reading, I hope you find HISTV useful!


This is a followup to a post I made yesterday, about a silly little Windows application I'd made for batch transcoding files. I wanted something that I could just dump my files onto without having to muck about with Handbrake or Tdarr - post here, for those curious: https://piefed.ca/c/selfhosted/p/568748/honey-i-shrunk-the-vids-a-windows-transcoding-frontend-for-ffmpeg

So I spent today making my silly little Windows application a silly little platform-agnostic application. I rewrote the whole thing in Rust and JavaScript with a webview frontend, and apparently Github lets you compile binaries for quite the range of target platforms, so I have compiled binaries available for Windows, Linux, and Mac (Intel/Apple Silicon). It's got a dark theme because of course and a light theme because I guess, also it's themeable because why the hell not. I'm pretty pleased with how it's coming along - if anyone decides to give it a go, please let me know if you find issues!

screenshots
image

image

image

image

image

Compiled binaries can be downloaded at https://github.com/obelisk-complex/histv-universal/releases

you are viewing a single comment's thread
view the rest of the comments
[–] obelisk_complex@piefed.ca 0 points 1 day ago* (last edited 1 day ago) (1 children)

Hey, replying again so you get a separate reply message. So like I said, I went looking for redundant loops and I found quite a few, just like you described. There was also a minor performance issue with the logic that built the FFMPEG argument; it used a lot of unnecessary flags, each of which required fresh memory allocation. That would only be an issue in specific circumstances, like if you were encoding thousands of videos in quick succession... but that's exactly the kind of issue you were talking about, so I asked for and implemented the fix.

It does seem snappier. I'm pushing 1.0.9, which has the fixes beyond what I found from your comments (I fixed the ones you prompted me to find in 1.0.8). If there's anything else you'd recommend I look at, I'm all ears.

[–] non_burglar@lemmy.world 2 points 16 hours ago (1 children)

Nice.

The issues to look for are unnecessary logic (evaluating variables and conditions for no reason), and double sets of variables.

One of the seasoned devs I work with said she encourages coders to transpose work at major inflection points, and this helps all devs gain an understanding of their own code. The technique is simply to rewrite/refactor the code in a new project manually, changing the names of the variables and arrays. The process forces one to identify where variables and actions are being used and how. It's not very practical for very big projects, but anything under 1000 lines would benefit from it.

Good luck.

[–] obelisk_complex@piefed.ca 1 points 16 hours ago (1 children)

That's very similar to what I've been doing 😊 This project I think is on the cusp, a few of the files are over a thousand lines but it's still kinda manageable. Comparatively, the PowerShell script I started with was far simpler. That one I actually did write most of it because I know how to get stuff done in PowerShell - just needed Claude's help with the GUI.

Also, I was thinking about your comment on performance when you're looking at tens of thousands of runs - definitely not my original intent for this, I figured anyone doing that would just use CLI, but it's totally possible with HISTV. I added an option to put files in /outputs, path relative to the input file, so you totally could just drag a top level folder info the queue, it'll enumerate the media in all the subdirectories, and hit start. You'd get the transcoded files right next to the originals in your folder structure so they're easy to find. Useful, I hope, when doing that many jobs.

And thanks to your advice, it'll do so a lot more efficiently. Like 5-6x lower resource usage, now. I really do appreciate the feedback, it's exactly the kind of pointers I was hoping for when I posted this. I wish you'd come in to the comments outside my emotional response to someone else :P

[–] non_burglar@lemmy.world 2 points 15 hours ago (1 children)

I wish you'd come in to the comments outside my emotional response to someone else :P

I'm 50 yrs old now, but I used to react almost the same way you did, I understand where you're coming from.

I personally believe LLMs (and AI in general) can be great tools to help along with coding and similar tasks, we just don't have a very good culture of their use yet.

[–] obelisk_complex@piefed.ca 1 points 15 hours ago (1 children)

Yeah, it's another reminder of why I always tell myself to take a day and think about my response - for some reason though I don't often stick to it! 😅

Also, I realised I was being needlessly stubborn mostly because nobody was telling me how to tag my post, just that I have to; after a quick think, I do understand why people want to know if they're gonna be reading genAI code. I've added a preamble that this is AI-assisted, and a bit about why I think I'm doing it differently than people might first expect. I'll clean it up to include in future posts and in my repo readmes.

[–] non_burglar@lemmy.world 2 points 12 hours ago

I think this is great. Everyone came to this result better for the exchange.