I talked to someone about the extensibility of emacs, but the person I was speaking to assumed that any IDE is just as extensible by using Plug Ins.

Without turning the conversation into a university style lecture, what is one or two simple actions I can do in emacs to show someone what separates it from other IDES.

  • Psionikus@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    Emacs is a programmable interface to a computer. While it is frequently used to program itself to program other things, it is a foundational bootstrap tool.

    IDE’s seek to present a set of features that fills that domain of work. You hit a ceiling in that world. With Emacs, you continue molding it to things you get value out of years and decades later, after that IDE went away when its most popular language or framework went into decline.

    In the upcoming landscape of AI’s with more well-defined type interfaces and symbolic representations, tools like Emacs will be at the forefront of composing these tools into the long tail of cottage industries of what will amount to a revolution in IP, programming, and human-computer interfaces.

  • no_good_names_avail@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    First I wouldn’t concern myself too much with trying to explain what differentiates Emacs from an IDE. Life is too short to get into such debates. I can’t really summarize why anyone should care about Emacs vs their IDE of choice.

    For me what separates Emacs from vscode for instance is not the IDE aspects but the integration with the broader ecosystem. I’m a PM that works with technical and data heavy products. The details matter. I frequently walk through the pipelines and code of my product to understand how it is implemented by the team(s).

    For example you can break my underlying product down into 3-4 large blocks of pipelines. Each pieline has 6-7 stages that mix Spark and other Python jobs. For each pipeline and stage I have my own little literate org file that points to code, has small samples of inputs and outputs, and generally speaking allows a non data engineering professional such as myself keep up with people that are far better and keeping this all in their head.

    I write down questions as I do this to browse and/or raise with the team. I can, when questioned by our senior leadership, truly explain what it is our team did and the impact it had.

    I can’t do that with an IDE. I can’t see an easy way to do that with any of the other note taking tools. I can’t jump between code browsing, executing and writing as seamlessly anywhere else.

    • rebcabin-r@alien.topB
      link
      fedilink
      English
      arrow-up
      0
      ·
      10 months ago

      I’d rate this as a story about the benefits of literate programming, and emacs org-babel is certainly best-of-breed for that. A more mainstream workflow for it might be through Jupyter notebooks, but they have several deficiencies compared to org-babel, chief of which is that one can’t present blocks out-of-order in Jupyter, but can do with org-babel-tangle. as far as I know, no literate-programming solution can pull code off disk and put it in a document (the anti-tangle direction), let alone update a doc when code is modified. It’s doable (start with git-actions, maybe?) but difficult. The lack of anti-tangle stopped my team from adopting literate programming as a collaboration tool, but it’s still great in the downward direction, i.e., from doc to code.

    • ClerkOfCopmanhurst@alien.topB
      link
      fedilink
      English
      arrow-up
      0
      ·
      10 months ago

      For each pipeline and stage I have my own little literate org file

      Damn, your verbose description checks all the boxes for a bullshit job.

        • C0ntentFree@alien.topB
          link
          fedilink
          English
          arrow-up
          0
          ·
          10 months ago

          PM as in “project” or “product” manager? I’ve never experienced the former that wasn’t an oxygen thief, but I’ve heard unicorns exist. My current product manager is quite good imo: shields engineers from idea ferries from all levels; talks to support and customers; has good track record of picking projects that successfully increases product adoption; etc. I wish our product manager took the time to understand our codebases as the op here does. I think with that knowledge it would be easier to convince the PM of the importance of certain refactors and why certain requests estimates are more difficult and or tedious that the PM expects.

      • no_good_names_avail@alien.topB
        link
        fedilink
        English
        arrow-up
        0
        ·
        10 months ago

        Haha, why is that? To be clear that’s not an expectation of the job. It’s a self imposed process so that I understand wtf is going on. I enjoy it personally and feel it makes me better at what I do. Why do you think it’s bullshit?

  • noooit@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    Show him one of the email clients on GNU Emacs. Vterm’s directory tracking is also unique.

  • Horrih@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    For me, it is not the ability to write plugins : most editors have those to some extent.

    For me it’s more about the ease of writing your own customizations and not be limited to those provided by your plugins.

    A few examples

    • don’t like some built in or plugin behavior ? Copy paste the original source code, tweak it to your likint and use add-advice to use your new version
    • just yesterday i had some tests which generated a log in a temporary folder, 5 folders deep. I wrote a new command and bound it to a shortcut that looked for the new log file and opened it after running my tests
    • i wrote a simple log browser : use a few commands to preformat the file with query/replace, and boom with emacs’ outline mode i can fold sections /subsections. This command is 10 lines long.

    The strength of emacs is not its plugins, it’s your ease of making it your own

  • codemuncher@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    Once you’ve done things for a few years, it’s frustrating to be at the whims of ide developers. Remember the last must have ide? Atom. Gone. The needs of a multinational conglomerate comes before yours comrade. All animals are equal and Microsoft is the most equal.

    Even IntelliJ - which is a great ide - is at the whim of how much jetbrains can make their business model work.

    I like emacs because I’m off someone else’s upgrade schedule and forced obsolescence. My usage isn’t being measure and put into a data warehouse where some pm can figure out how to monetize. No vendor lock in. No data format lock in. This is the killer feature. I don’t have to give up my data to someone else’s cloud, I don’t have to agree to some restrictive license. I can just be, and compute without someone else needing to interject their wallet between me and my computer!

  • ClerkOfCopmanhurst@alien.topB
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 months ago

    It’s the always-on REPL that’s the kicker.

    (defun invert-case ()
      (backward-delete-char-untabify 1)
      (insert (funcall (if (< last-command-event ?a)
    		       #'downcase
    		     #'upcase)
    		   last-command-event)))
    
    (add-hook 'post-self-insert-hook #'invert-case)
    

    Then C-u C-M-x on invert-case to convey the larger point that emacs is always running within a gdb-like harness. Your buddy will immediately bristle at the prohibitive investment necessary to achieve this pointless and trivial hack, at which point he’ll have truly grokked emacs.