19 ms·
This is impressive, but (and probably because I'm not the intended audience for this post) I don't get it, I kind of want to get it though. With "it" I mean mak
by Zobat 1y ago
This is impressive, but (and probably because I'm not the intended audience for this post) I don't get it, I kind of want to get it though. With "it" I mean making Emacs do X, where X is something far from editing text files. It always seems to me like playing Doom on a pregnancy test. Sure you can do it, sure it's impressive, but should you?
n.b. I'm a C# developer that has accepted my fate and use Visual Studio to earn a living, though I've made sure I know my tool, flaws and merits, better than most developers I've met/worked with. My first job as a programmer was writing C++ code in Emacs and can't remember anything negative about that experience (other than getting used to ctrl+x, ctrl+s for saving and, by reflex, doing the same in Excel, and losing a big part of the document that I had just selected to move, because Excel couldn't undo past last save).
Reading the (at the time I'm writing this) 13 comments on this post I see mentions of at least three lightweight programs that does this. What other than "the mountain is there" makes someone think Emacs would be the tool for this? As a Resolve user I know what tool I'd reach for even if using a multi GB, Hollywood grade, non linear editor, compositor and color grader for trimming a short video clip is about as ridiculously overpowered as using a sledge hammer to press a key (and I did exactly that just a few days ago).
Like I said, I'm most likely not "getting it", on multiple levels. Please educate me, why would I use Emacs for this or any of the page upon page of "strange" use cases you find if you search for "Emacs" here on HN. I know Emacs is a powerful editor but I can't for the life of me understand why I would use it to trim video clips.
- kelvinjps10 1y agoGreat comment, although I use emacs for everything code, writing, finanaces, task management still all these things are text so I don't get using emacs for non text things
- iLemming 1y ago> I don't get using emacs for non text things What do you mean by "non-text things"? You are dealing with the computer, it's all about text and mostly text. Sure, it might be encoded and digitized, but even structured binary - is all just text. Even when you give a computer voice commands - they are just synthesized audio form of fucking text. Even with "turtles all the way down" - it's all turtles made of text. Have you seen the gif in the blogpost? With the transient that has "Move Forward/Backward", "Increase", etc. commands? The commands that you'd have to send to the specialized app anyway - Emacs or not. In what form? Fucking text, of course.
- sexyman48 1y agowith the computer, it's all about text. Boy, are you going to be blown away by Pac-Man.
- iLemming 1y agoFirst Pac-man was written for Zilog Z80 microprocessor in Assembly. What do you think Assembly looks like? Sequence of emojis?
- avhon1 1y agoBut how does playing pac-man make especial sense in text?
- iLemming 1y agoWell, in the context of the discussion, you can "teach" Emacs to play Pacman. Imagine sending left/right/up/down commands to a Pac-Man emulator or whatever. The emulator itself may not "understand" these commands in pure text, accepting some digital form of them, but whatever format it accepts, it probably can be reduced to sequences of alphanumerical characters. Similarly, when the emulator broadcasts current coordinates for pieces, or sprites of them - they still can be reduced to plain text. As a matter of fact, if you want to play Pacman in Emacs... you can just play Pacman in Emacs: https://github.com/emacsmirror/pacmacs https://github.com/emacsmirror/pacmacs
- worthless-trash 1y agoYou beat me to it !
- iLemming 1y agoI'm sorry. I'll try not doing it again :) I just caught a cold, lost sleep and overall have been feeling pretty lame. I don't typically lurk around the orange site, eagerly waiting for someone to mention Emacs.
- layer8 1y agoTo me the point is that Emacs is a customizable environment that allows you to whip up stuff like that fairly easily, and have it integrate with arbitrary other Emacs stuff. Standalone desktop programs are each their own separate little worlds. Emacs is a more integrated environment in that sense, compared to mainstream operating systems.
- iLemming 1y agoEmacs is weird. I think it changed something in my brain. Before Emacs, I never thought I would ever try controlling video playback from my editor. "Just why?" I probably would've said. I never thought I'd be trying to get the text from the active tab in my browser. Or search through my browser history. Or OCR the content of my clipboard, or control my WM. Dang, before Emacs, it didn't even occur to me to try to type just about any text in my text editor - which now makes absolute sense - why would I ever bother typing in my browser window, Slack, Zoom, or email client? In Emacs, I have all the tools I need for dealing with text - thesaurus, spell-checking, definition and etymology lookup, search engines, translation, LLMs, etc. Why, oh why, wouldn't I ever try typing anything longer than two words in anything else? Like, for example, while typing this very comment, I may come across a thought: "I think I already made a similar comment some time ago, let me find it..." What would a regular user do? They'd switch to the browser, navigate to HN, scroll to the bottom, type search query, lookup on the page, jump to the next, keep paging until they find it, copy, switch back, paste... What would an experienced Emacs user do? They'd search for it without ever leaving their editor, grab the stuff from the buffer and paste it - all within just a few keystrokes. Or if I need to find a url in my browser history - I'd just search for it and insert in-place - two keystrokes+search query. It's not just faster - it is profoundly satisfying and liberating. It gives you the feeling of being in control. You don't have to deal with the quirks of specialized apps; you don't need to memorize tons of their specific keybindings; it gives you a straight path to extracting or injecting plain text. That's why those who never made a wholehearted attempt to use Emacs just never get it. And those who have, never can understand why others don't even try to recognize the value.
- qiine 1y agothis is inspiring, I am slowly getting to that same conclusion but in neovim... if I write text I want all my nvim fancyness... because oh boy is it fancy!
- iLemming 1y agoYup, Neovim is very awesome, I use it myself pretty much every day whenever I need to ssh to a remote host. There are many reasons though for why it is unlikely to dethrone Emacs as my main driver. Just like Emacs could never fully replace my photo-editing app. It saddens me how people of Emacs often reject vim navigation outright, just as the broader programming community tends to dismiss the fundamental ideas that drive Emacs. Neither represents a dogmatic religion, nor do they embody fundamental, conflicting truths about computing. No one needs to choose one and commit to it exclusively - they are simply tools, built upon some brilliant foundational concepts. Understanding and utilizing the ideas behind them may literally transform your life in mind-blowingly positive ways. I wish more people contemplated this profound truth, instead of thinking they have to stick with one, particular way of things.
- cmrdporcupine 1y agoUnity of key bindings is one reason. Consistency of interface. Relative ease of using elisp to write some of these things. Emacs users typically have a whole pile of customizations, macros, and workflow automations they've written up over the years. And for things that are text oriented, the ability to work the buffers emacs-style between emacs windows is a joy. There's a lot of advantages to keeping everything inside emacs.
- agentultra 1y agoThere's some truth to the aphorism, "Emacs is a great operating system... if only it had a decent text editor." I think Emacs is basically an elisp runtime that happens to have primitives like buffers, windows, etc upon which a text editor happened to be implemented. It's more like a programming environment than a text editor. Sort of like Pharo Smalltalk, for example. You can implement an HTTP server in elisp. You can render SVG, HTML, PDF. All kinds of things.
- rafram 1y agoThe flaw in that metaphor is that elisp is a pretty suboptimal programming language for general-purpose programming. The standard library (in my limited experience) seems to use buffers as the base primitive and doesn’t help you very much if you want to do anything complicated without touching the current buffer.
- sexyman48 1y agoLego is a "programming environment," so avoid the obvious contrarian nit of "must be more general," and accept there's no better language-environment combo for constructing workflows than elisp and emacs -- yes, it's leaps better than bash and term.
- rafram 1y agoThere is: my OS plus Python, Ruby, even JavaScript, or any other modern scripting language. macOS even supports Emacs keys globally!
- iLemming 1y agoYou're confused on both points: First of all, macOS doesn't "support Emacs keys" - those are readline/bash keybindings (C-a, C-e, C-k, etc.), not even partial Emacs navigation. The distinction matters. Emacs is inherently a modal editor, and no OS provides that aspect out of the box. Secondly, although it sounds reasonable in theory, in practice it just doesn't manifest to the same level - because of the enormous context switching cost. While Python/Ruby/JS are excellent languages, using them for workflow automation typically means: - Fragmented toolchain: Editor → terminal → file manager → browser → back to editor - State loss: Each tool maintains separate state, history, and context - Interface friction: Different keybindings, different ways to access data Emacs provides unified state and interface - your scripts can directly manipulate buffers, access file system, interact with running processes, and integrate with your editing session. The "programming environment" aspect means your automation tools live in the same space as your work. The fallacy is treating this as purely a language comparison when it's really about environmental integration. A Python script that opens files is fundamentally different from an Emacs function that operates on buffers you're already working with. For personal workflow automation where you're already living in Emacs, the integration advantage is real. Here some practical examples that would be just outright painful to achieve with a general-purpose PLs. - Grab url from browser, insert formatted markdown link at point - Extract all TODO items from project files, create agenda in new buffer (I can probably do it in fewer than 15 lines of Elisp without ever having to save, lint, compile that code) - You're editing a CSV, write a function that operates on the current line/region and transforms it in place - Mid-email composition, grab a code snippet from the adjacent buffer, format it, and insert - While reviewing a log file, extract error patterns and automatically open related source files Your automation remembers what files you had open, your cursor positions, your window layout. Scripts can modify your current work context rather than creating separate outputs With Python/shell scripts, you'd need complex IPC, temporary files, external tools to achieve similar seamless integration with your active work session. That's why majority of programmers just don't even bother to think to try. Experienced Emacs hackers wouldn't even blink - they'd start whipping up Elisp like a chef would crack eggs to make an omelette.
- uludag 1y agoAs an Emacs users who often tries to do as many things as possible in Emacs, I would say that the more stuff you can do in Emacs, the more the various features in Emacs compound with each other, giving you more utility. For example, I use the Verb package for making HTTP requests. So with Emacs as my HTTP client, I can do bulk HTTP request calls with keyboard macros. The HTTP requests can be stored in org-mode. I can write custom Elisp for special authentication scenarios. I can create new commands if I need them. For this example, I can imagine (haven't used this myself) scenarios like creating a keyboard macro to shave off the first X seconds of a video usable with dired. Some non-text-editing things in Emacs that are actually extremely useful: - Git via Magit - Managing files with Dired - Media player with Emms - RSS feeds with elfeed and the list goes on and on... Using a well thought-out Emacs interface for anything is one of the biggest sources of joy in my technical life.
- Zobat 1y agoUsing well thought out interfaces is a joy wherever we find them. Something in your comment made me remember a DOS based file "explorer". Screen split down the middle with a folder-tree and file list on both sides. I remember hardly ever turning on the computer without starting that for one task or another. That was some serious UI pleasure, at least for the time. Ha, found it: https://handwiki.org/wiki/Software:File_Commander https://handwiki.org/wiki/Software:File_Commander Ah, the nostalgia!
- kickingvegas 1y agoNostalgia no more! Midnight Commander/4DOS style file management can be achieved with Emacs Dired today and then some. https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html#Dired https://www.gnu.org/software/emacs/manual/html_node/emacs/Di... For your consideration, I built a keyboard-driven menu interface for Dired called Casual to help with discovery. https://kickingvegas.github.io/casual/Dired.html https://kickingvegas.github.io/casual/Dired.html
- IronBacon 1y agoIn my opinion Dired is the best way to rename files bar none (wdired-mode)...
- shadowgovt 1y agoModern emacs is surprisingly powerful, far from "Doom on a pregnancy test" (image display and UI widgets are just features). Looking at the code for this solution (https://github.com/xenodium/dotsies/blob/main/emacs/ar/video-trimmer.el https://github.com/xenodium/dotsies/blob/main/emacs/ar/video...), it's under 400 lines (excluding the require of three very common libraries and an ffmpeg dependency). I'm not actually sure I could pull off this feature in 400 lines of JavaScript (and the binding logic for going from node to ffmpeg isn't going to come to my fingertips nearly as fast as the logic for emacs LISP, although I know that varies from person-to-person). Plus, once it's in emacs it can glue to other things. If I want to grab video from an email and trim it, I have tools in emacs to fetch particular emails, etc. I think the most reasonable way to think about emacs hacks like this is "I could do this in a shell script... But why would I when emacs gives me interactivity, a REPL, and the advantages of buffer manipulation as a metaphor?"
- Karrot_Kream 1y agoI'm not really the type of person to do video editing or web browsing in Emacs, but I can still see the appeal. A well-tuned emacs install is comfortable. I have my keybindings that do what I want them to do. I can visually organize my emacs frame (what is now called a GUI window) exactly how I want, with files taking up the parts of the screen that I want. I can be reading the README of some project I checked out and be curious about some terms, then just select it and send it off to my LLM. It's trivial to switch between Claude, OpenAI/ChatGPT, and Gemini depending on how much context I need to give. It's like having personal space organized to your tastes. For some, their personal space can seem on the outside as a warzone of stuff, for others it's meticulously organized and labelled, but the key commonality is that it's personal space and that the owner of the space is comfortable in it. That's what emacs is. I don't need to learn a new set of keybindings or mouse clicks to unlock new functionality, I can just bring it into emacs.
- t_mann 1y agoWhile I'm not an Emacs aficionado and I find some of the stuff that people squeeze into Emacs weird [0], I have to vouch for OP here. It's a front end for ffmpeg. ffmpeg is a text-based utility and Emacs is a text editor. That actually makes sense. And judging by the screengrab it's a lot more ergonomic than plain ffmpeg. If I were an Emacs user I'd definitely consider using this, and it makes me kind of jealous. [0] recent example from here: a proto social network that runs via org-files-over-http (as if we didn't have a markup language designed for http already) https://news.ycombinator.com/item?id=44889354 https://news.ycombinator.com/item?id=44889354
- iLemming 1y ago> if we didn't have a markup language designed for http already Org-mode is far more than just a markup. It is executable - you can have executable code-blocks (in different languages) that interact with one another. It is interactive - there are TODO items, agendas, and scheduling that integrate with your workflow. It has built-in calendar, deadlines, and habit tracking. It has spreadsheets with calculations, like in Excel. It is insanely programmable. I use it for various things, even some unexpected like managing my dotfiles - simpler and more predictable than Nix or Stowed, org-mode creates an 'immutable' version of my system. Sure, it is also a markup, but the markup is just the interface to a much richer computational document model. So, what you're finding to be weird is only because you are unfamiliar with it. It is in fact highly pragmatic, and there's nothing weird about it; you just have not experienced that firsthand, and that's alright.
- t_mann 1y agoI get that Org-mode is extremely powerful, but I was talking about Org-social specifically. Take a look at the spec, does it use much programmability? To me it looks like just annotating a bunch of metadata plus a unique ID (which is actually just a timestamp, which seems problematic to me for a number of reasons, eg tracking edits, not being necessarily unique,...).
- iLemming 1y ago
- taeric 1y agoIn this case, I'd view it more as an interactive mode to use ffmpeg? That is, it isn't like emacs is the thing that is doing the trimming. It is just providing convenient access to ffmpeg to do that. That it is able to do this using roughly 300 lines of code is quite impressive and largely speaks to why people love doing things in emacs. It would be one thing if this was code golfed to get to a working state. Reading the code, it is remarkably straight forward interactions with ffmpeg.
- skydhash 1y agoEmacs more like a platform like DOS or the Terminal/Shell/TUI combination than an editor like Vim/Micro. The wealth of libraries, all centered around the concept of buffers and windows, make it easy to integrate pretty much any other tools. Is it an REPL? use comint. Is it a tool that act on text files (lint, test,...)? Use compile Do you need input with completion? Use the minibuffer. Do you need multichoice selection? Use a buffer and mark stuff (there's a mode that you can extend from if you need to display tabulated data). Do you need to define flags on the fly? Use transient. Network request? Calling shell command? A combination of all the above? Emacs got your back. And because it's a live programming environment, you can start quickly with a prototype (or just altering stuff) and then tweak things until you have a proper package.
- dustfinger 1y agoI use exwm as my windows manager [1], so for me, everything is emacs-first. Therefore, trimming a video in emacs is more natural than using another program to do it. I love the experience of using exwm and emacs for everything whenever possible. [1]: https://github.com/emacs-exwm/exwm https://github.com/emacs-exwm/exwm
- brudgers 1y agoAn Emacs tool to trim video most likely has a conventional Emacs API, conventional Emacs documentation, and was developed using conventional Emacs user personas. Modulo the skill of the tool’s developer, this means it won’t require a lot of unnecessary brain cycles to learn or use or automate. It won’t require switching to a browser. It won’t require creating an account. No going to the app store. No license consent. No dangerous program warning. No turn on notifications. No unlock premium features. No an update is available. No marketing emails. No cookies. It’s just gonna STFU and do what it says it does in a way that makes sense. And if it is good enough, it’s good enough. It won’t add bullshit to your day.
- shadowgovt 1y agoAnd at under 400 lines of code, if you want to extend it or integrate it into an existing workflow, it's extremely straightforward to see what it's doing.
- jlg23 1y agoI did not "get it" from the post itself, but it linked to a post that mentioned "subed", subtitle editing for emacs with syncing with/control of video playback in mpv. I could see myself doing that and then would be happy if I could also trim the video while I am at it.
- karthink 1y ago> would be happy if I could also trim the video while I am at it. You can, see the command subed-crop-media-file. https://github.com/sachac/subed/blob/main/subed/subed-common.el#L2732 https://github.com/sachac/subed/blob/main/subed/subed-common...
- sussmannbaka 1y agohmmm, I'll try. Think of these things like you think about using cli tools. If you ONLY had ffmpeg or imagemagick in isolation, there would be no benefit to using them on the command line. You are working with images and video after all. That's what GUI is for! Even if you end up using them, you use them through a GUI wrapper. I bet Resolve uses ffmpeg somewhere under the hood. They don't work in isolation, though, and I bet you can easily think up a bunch of usecases for either. They're scriptable and they compose well, after all, so the tradeoff is worth it. You put up with the headache to automate that batch job of changing the intro sequence of the thousand video files and generate new thumbnails and put the new subtitles in one go. In emacs, everything tends to be composable and scriptable. You are in GUI land but things feel powerful like in CLI land, except discoverable. It's the "vim is the text editor of the unix IDE" idea, except they put the whole unix into your editor. When people jokingly claim it's an OS they're only half joking. It's malleable. You are already running it. You are already familiar with the way it works, with the way you discover features, get help etc. Why start another program for a task like this?
- voidUpdate 1y ago> It always seems to me like playing Doom on a pregnancy test you can't do it >:( that reddit post is so annoying to me, the only bit of that which was "pregnancy test" was the plastic shell, everything else was replaced, but everyone keeps going "hey did you know they ran doom on a pregnancy test?" (and breathe...)
- TacticalCoder 1y ago[dead]
- coro_1 1y agoIf Emacs hardcodes the start and end times then a (single) benefit I can imagine is that QuickTime's UI (the typical go to) can be mildly frustrating if 100% of focus isn't on the screen. Somehow they manage to make moving a [] annoying. Indeed there are more options though.