• 3 Posts
  • 35 Comments
Joined 1 month ago
cake
Cake day: February 11th, 2026

help-circle

  • Yes, and it’s actually pretty good at it. The code won’t be the most efficient, it won’t be elegant or beautiful… but it will mostly work, and someone with technical experience can get it over the line. Case in point: I can “sort of” code, but my career has been spent writing simple scripts. Nothing more complicated than workstation provisioning, find and replace with some regex, PowerShell with a WinForms GUI, etc. Despite being relatively low level in terms of actually building applications, I’ve been able to “project manage” and hand-edit Claude output into a working application. It’s basically just a frontend for FFMPEG, with some smarts and automation built in. Not particularly impressive in absolute terms, but it’s a lot snappier and prettier than anything else I’ve ever put together and I’m proud of it. I got it from concept to working in a few days, and added major features plus a few efficiency passes and bug fixes in two weeks - an absolutely incredible pace.

    This comment is going to get absolutely nuked with downvotes, I guarantee it - but that won’t change the fact that I’m successfully building stuff with AI.


  • I spent quite a lot of effort getting Stoat up and running because they aren’t working on the selfhosted version, only to get a nice email from the German government that my server was running an outdated version of React with RCE vulnerabilities. Nuked that stack at 3am.

    Also I fixed their Tenor integration to be provider agnostic so the self-hoster could choose a different gif provider like klipy (Tenor turned off their API so gif search in Stoat is broken), tried to contribute that one small change back to the main project, immediately rejected because “we have no plans for klipy support”.

    Not worth the effort, IMO.



  • I’m right there with you, bud. I tried StoatChat too, and I got a nice email from the German government about using an outdated version of React with RCE vulnerabilities. I think this must be a very difficult problem to properly solve, given the number of different approaches and how all of them have their own issues to contend with. Nextcloud Talk is the most usable option I’ve found because it does voice, video, and screen sharing and it also has call links you can send for unregistered people to join the calls. But performance is spotty even with the “high performance backend” set up (that may be due to my server being in Germany though 😅).

    As to being accused of using AI, don’t let it get to you. The people yelling the loudest can’t tell the difference between handwritten code and AI, because they can’t code. If you pull down your repo, you’ll be depriving people who might be able to use your project because of trolls who never would have tried it in the first place.

    I do use AI for coding, and I’ve gotten plenty of hate for it, but also people who don’t care and just want the functionality of the tool I built.

    And in fact I’m going to check out your project and see if I can get it up and running, so please don’t take it down. I’ll likely be putting it on my German server so I’ll let you know what the performance is like with extreme round trips 😁


  • Would be easier to contribute to XMPP or Matrix IMO.

    Synapse is in the middle of a rebuild without much compatibility between the legacy and new builds, and it’s a pain in the dick to set up at the moment. I know, because I did it.

    XMPP I haven’t tried to set up yet, but I imagine it to be similarly in-depth.

    As to why not contribute: edit: not AI, they just don’t have the confidence in their own skills to contribute to anyone else’s project.

    Now… why do the whole thing from scratch instead of forking? Great question. XMPP might just need a nice coat of paint, if it can handle voice and video and screen share; I haven’t come away with great impressions of matrix/synapse.



  • When it comes to the usage of both words, that difference you listed is completely arbitrary and obviously irrelevant

    What? No. Software is something people go looking for and choose to download, unless we’re talking about malware which I think is fair to say is obviously outside the bounds of this conversation. Spam emails are forced on people without their asking or looking for them. They’re not at all interchangeable or the same thing.

    Most people don’t care how their software is written, just like they don’t care how their food is actually made. And by “most people” I don’t mean you or anyone else here on Lemmy, I mean the majority of people who use computers. You wouldn’t believe how technically illiterate and uncurious the average person is - that’s who I mean. Those people hate spam emails, but they don’t care if their email app was vibecoded with AI. They don’t even know the difference between AI code and hand-typed human code, and most of 'em probably think “more code is better so AI is better!”.

    Unless you’re trying to argue something else; that the slop in this specific case is more justified.

    Sort of. I’m saying that while I understand why AI disclosures are a good thing, I think that if a person is not paying for an application and they’re not contributing to its development, then that person can keep their opinions on the development process to themselves. They can take those opinions and go build something of their own to satisfy them.

    it’s the eagerness to treat users as braindead trash undeserving transparency.

    I simply don’t think that’s a fair characterisation, because it ignores how people treat the developers who use the tools in the first place. People who have no technical skills whatsoever are happy to loudly shit all over said developers and call their work garbage - work they’ve been doing for nothing.

    I agree the initial response could have been approached better, but all of us have the benefit of judging in hindsight and from a distance. I can understand how their emotions got the better of them, while under fire like that. This looks distinctly different from the BookLore fiasco though, where the dev is trying to close up the source in retaliation.

    I just wish people would find more reasonable targets for their ire, instead of rolling with the pitchforks-and-torches mentality. Individuals building open source software are not usually reasonable targets. I do think “good thing it’s easy to fork open source” is the right sentiment; this is why anything I build, I put up under the Unlicense, because as far as I’m concerned any utility someone can get from it is to the good.




  • Yeah, I’m getting that; though this isn’t purely AI-generated. This is a working application that I’ve tested, have improved and plan on continuing to improve, and am currently using to transcode my media. There’s a lot more care and thought put into it than most people would expect on reading that it was created with the help of an AI model.

    I put the disclaimer because I respect that serious developers who actually go look at the code would like a heads-up that it’s genAI before they waste their time reading it. But, I would like people to at least have a chance to read why I think my approach is different than most.

    And, if you have videos to transcode, I’d love to hear what you think if you give it a go! I do actively fix bugs as well as add new features, so please do let me know if you try it and find an issue - I could use all the help testing it I can get 'cause my hardware to test on is quite limited.


  • I was hoping to catch this before your replied, as I went and read the readme, then it made more sense. So I deleted my reply. But too late!

    All good! I’m actually enjoying talking about this thing with people who want to know more so I don’t mind at all _

    The cool thing is there isn’t much to put into a command that does stuff like this, unless you changing the FFMPEG parameters every time, but that would seem unlikely.

    So actually, that’s exactly the issue I was running into! I’d run a batch command on a whole folder full of videos, but a handful would already be well-encoded or at least they’d have a much MUCH lower bitrate, so I’d end up with mostly well-compressed files and a handful that looked like they went through a woodchipper. I wanted everything to be in the same codecs, in the same containers, at roughly the same quality (and playable on devices from around 2016 and newer) when it came out the other end, so I implemented a three-way decision based around the target bitrate you set and every file gets evaluated independently for which approach to use:

    1. Above target → VBR re-encode: If a file’s source bitrate is higher than the target (e.g. source is 8 Mbps and target is 4 Mbps), the video is re-encoded using variable bitrate mode aimed at the target, with a peak cap set to 150% of the target. This is the only case where the file actually gets compressed.

    2. At or below target, same codec → stream copy: If the file is already at or below the target bitrate and it’s already in the target codec (e.g. it’s HEVC and you’re encoding to HEVC), the video stream is copied bit-for-bit with -c:v copy. No re-encoding happens at all - the video passes through untouched. This is what prevents overcompression of files that are already well-compressed.

    3. At or below target, different codec → quality-mode transcode: If the file is at or below the target but in a different codec (e.g. it’s H.264 and you’re encoding to HEVC), it can’t be copied because the codec needs to change. In this case it’s transcoded using either CQP (constant quantisation parameter) or CRF (constant rate factor) rather than VBR - so the encoder targets a quality level rather than a bitrate. This avoids the situation where VBR would try to force a 2 Mbps file “down” to a 4 Mbps target and potentially bloat it, or where the encoder wastes bits trying to hit a target that’s higher than what the content needs.

    There’s also a post-encode size check as a safety net: if the output file ends up larger than the source (which can happen when a quality-mode transcode expands a very efficiently compressed source), HISTV deletes the output, remuxes the original source into the target container instead, and logs a warning. So even in the worst case, you never end up with a file bigger than what you started with which is much harder to claim with a raw CLI input. The audio side has a similar approach; each audio stream is independently compared against the audio cap, and streams already below the cap in the target codec are copied rather than re-encoded.

    But yeah everything beyond that was bells and whistles to make it easier for people who aren’t me to use it haha.

    I am 100% looking for more stuff I can build - let’s talk about it!




  • It’s no worries mate, as mentioned I have no problem with questions!

    So, reasons. Yes, this started as a line in powershell! That was my other post, linked at the top. I wrote the line, and after a few batches I decided to stop and use Claude to build a GUI for it. After I got that working and did a few runs with it, I started thinking about how useful this would be for a handful of other people in my life, and I wanted to package it into a .exe, partly so I could send them something simple to start but also just because I wondered if I could get it working. Never done it before. I still wanted to use it for myself because I have thousands of video files to transcode, and I didn’t want to have to manually tweak the command for every batch. I also didn’t want to have to rebuild it if I have more to do 6 months down the line - I’m lazy.

    Then, later that night after I’d done a few batches with the powershell line-now-script, I thought to myself that Claude could probably help me build a frontend for it that didn’t rely on powershell, and then I started thinking about just making it a cross-platform application so my less techie friends can use it if they have big video files and want to save disk space. And then I got the bright idea to post it to the internet in case there are other less-techie users who aren’t my friends but who could still use it.

    It’s got some smarts under the hood to detect any hardware encoders you have available, and will present only the encoders that your system can use; the options are INCREDIBLY constrained, because the idea isn’t to expose every option of FFMPEG - this is for quickly shrinking video files without even needing to know the difference between CBR and VBR. That’s because you and I think it’s easy to run an FFMPEG command from the commandline. But there are a lot of people of all different kinds of skill levels who have no idea how any of that works, and they’ll take one look at Handbrake and run screaming. This is for those people, too.

    It also auto-downloads the latest FFMPEG and FFProbe from the official source if it doesn’t detect them on your PATH or in the folder with the executable - that saved my buddy who was helping me test it on his 2016 Mac, for example.




  • 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.


  • 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


  • I really need to stick to my rule of taking a day to think before I respond.

    So here’s the thing, I understand why people would want me to label my posts as AI-assisted. I’m sure there are a lot of people who just ask the AI to build them a thing, slap it all together, and throw it up on the internet as a finished project, and it’d be exhausting to be looking at the 95th slopbucket of a codebase and realise you’ve been bamboozled again by genAI.

    I’m explicitly trying to not be that guy, so here’s what I’m doing. I’ve added a preamble to the post disclaiming this project is AI-assisted, and why I think it’s fair to say I’m doing it differently than most. I’ll add something like that to my other post now, and I’ll include clean it up to include a shorter boilerplate version in future posts. It’s the internet, nobody knows me, so it’s only fair to introduce myself!

    If you have any advice or feedback to contribute, I’d genuinely appreciate it - it’s just easier for me to take on board if I don’t have to fight through emotional dysregulation to read it.


  • Well, good news - I got some pointers on places that genAI usually makes mistakes, so I’ve gone through a round of performance fixes for things like unnecessary worker duplications which - next to the actual encoding - I didn’t notice the impact of on my desktop.

    As to using hardware encoding, HISTV runs a test render for hevc and h264 across amf, nvenc, and qsv - so pretty much, if your hardware supports it, HISTV will detect it and let you choose which encoder you want to use. You can even use libx264/libx265 by choice if you want to take advantage of the more efficient compression; doing so exposes a toggle for CRF if you’d rather use that than QP.