M

Murilo Pereira

murilopereira.com · Personal blog · on HN since 2014

Murilo Pereira writes about Emacs, Lisp, editor communities and the technology choices behind tools like VSCode and Neovim.

What HN saysCommenters point to his Emacs file-opening post for debugging performance and to his values-of-Emacs essay to explain why VSCode is used differently.
19HN people shared it
9linked it in comments
27stories submitted
1.2Kstory points
10 months agolast shared
2014people per year2026

Most-shared posts

  1. 1
  2. 2
  3. 3
    The Case for React.js and ClojureScript
    3 people · 202 points · first shared 2014 · 85 comments on HN
  4. 4
    Cathedrals, Bazaars, and Fusion Reactors
    3 people · 25 points · first shared 2021 · 2 comments on HN
  5. 5
    A rabbit hole full of Lisp
    2 people · 228 points · first shared 2021 · 37 comments on HN
  6. 6
    The “Why” of Technology
    2 people · 22 points · first shared 2021 · discussion on HN
  7. 7
    From catching up to getting ahead: an Emacs wishlist
    2 people · 18 points · first shared 2021 · discussion on HN
  8. 8
    What's good about staying inside Emacs?
    1 people · 9 points · first shared 2021 · discussion on HN
  9. 9
    I just made my first $1 on the internet!
    1 people · 2 points · first shared 2023 · discussion on HN

What HN people wrote when they linked it

kangaroopouch · 2021-11-09
> But are there any other reasons, technical or otherwise, why people don't seem to use VSCode for things beyond editing code? The best answer I've seen to this question is https://www.murilopereira.com/the-values-of-emacs-the-neovim-revolutio… Amongst other things, it lists different values that each tool prioritizes, and how "Core values are self-reinforcing. They attract like-minded people, who will then defend them." Emacs: Extensibility, Freedom, Introspectability, Keyboard centrism, Stability, Text centrism. VSCode: Approachability, Integration, Maintainability, Progressiveness, Velocity. That is, even if VS Code achieves technical parity with Emacs (wrt introspectibility/extensibility), its community might not prioritize using VS Code for things beyond editing code. Or maybe it will. These things are difficult to predict!
BeetleB · 2021-03-12
It's funny you mention that. https://www.murilopereira.com/how-to-open-a-file-in-emacs/ The summary is that the author tried to open a remote file and Emacs froze for several seconds. He dived deep into finding out why that was and how to fix it, pointing out how great Emacs's introspection is that one can find solutions to problems like these. And then two thirds of the way into his essay, he has this: > More recently, I’ve been very put off by the performance and stability (or lack thereof) of building large scale software via Tramp. This has been sufficient to have me looking out again. On a whim, I installed VSCode for the first time and tried its “remote development” capabilities and holy smokes are they good. Getting up and running was trivial and the performance was great. Saving files was snappy and LSP worked out of the box. What a different experience from my carefully-put-together, half-working, slow Emacs setup. And then later: > Improve Tramp performance to match the experience of using terminal Emacs via SSH, or VSCode’s Remote Development.
Ferret7446 · 2023-12-10
I disagree. The Emacs community has, at least historically, strongly valued backward compatibility. Breaking existing users is just about the worst thing you could do in Emacs. If we aren't strongly considering reverting a breaking change immediately, that signals that the Emacs devs no longer value backward compatibility as highly, which means Emacs is abandoning many of its existing users. https://www.murilopereira.com/the-values-of-emacs-the-neovim-revolutio… Core values matter. The Emacs maintainers did something that violated a core value, and the community is rightfully offended.
senkora · 2023-12-10
I’ve found this article useful for understanding how to debug performance issues in Emacs: https://www.murilopereira.com/how-to-open-a-file-in-emacs/
ParetoOptimal · 2022-02-12
> being steeped in Emacs Lisp traditions is hardly an advantage. I used to think this, but sometimes this determines how deeply your package integrates into emacs. The obvious example here being seamless tramp support. IIRC this is demonstrated in this very interesting blog post[0] about debugging why opening a remote file is slow in the projectile package, likely didn't exist in the project.el alternative that is more steeped in those traditions. 0: https://www.murilopereira.com/how-to-open-a-file-in-emacs/
b3morales · 2021-05-25
If you are interested in continuing to use emacs, I'd suggest using the profiler to investigate. There's a good demo/depiction of doing that here: https://www.murilopereira.com/how-to-open-a-file-in-emacs/ (posted recently to HN). I think it's most likely to be something pretty specific/small in the config you're using. I am using emacs on a Mac, often with a 4K screen, and generally have no problems. I did have a scrolling lag issue a few months ago, but it was because of a bit of code that I had added to my modeline that was doing way too much work every time something changed in the buffer. The profiler pointed me right to it.
williamsmj · 2021-03-24
You might find "The values of Emacs, the Neovim revolution, and the VSCode gorilla" article interesting reading https://www.murilopereira.com/the-values-of-emacs-the-neovim-revolutio…
mpereira · 2021-01-13
Hey Thiago! You are mentioned in the essay that contains the article in this HN post btw :) Check out the Neovim section in https://www.murilopereira.com/how-to-open-a-file-in-emacs/#the-values-…
DougBTX · 2014-05-06
> and using string concatenation React.js uses a "virtual DOM" made up of JavaScript objects, so there isn't any concatenation of HTML strings, just generation of virtual DOM objects. The next step up from that is their JavaScript variant, JSX, which has HTML-like syntax for instantiating those virtual DOM objects. JSX looks quite like HTML templates, except the programming logic (which in a templating language might be {{if foo}} ... {{/if}} etc) is plain JavaScript. Introduction to JSX here: http://facebook.github.io/react/docs/jsx-in-depth.html Slide 49 has a bigger example, and the slide before shows the plain JavaScript version: http://murilopereira.com/the-case-for-reactjs-and-clojurescript/#/49

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close