Hacker News new | more | comments | ask | show | jobs | submit login
A CEO's Guide to Emacs (fugue.co)
129 points by ingve on Nov 29, 2015 | hide | past | web | favorite | 62 comments

Reading this gave me flashbacks. Horrible, horrible flashbacks.

I used to live in emacs - for years. Browsed the web with it, controlled music playback (via mpd) with it - everything. Nowadays, imo, a combination of Spotlight, tmux with a hotkey drop down terminal, Evernote, and JetBrains IDEs gets you 90% of the way there.

At some point you realize that work requires orders of magnitude more time thinking, reading, and communicating than it does typing. Optimizing your work environment for finger travel just doesn't make sense.

> Nowadays, imo, a combination of Spotlight, tmux with a hotkey drop down terminal, Evernote, and JetBrains IDEs gets you 90% of the way there.

The problem is that those are a pile of (both subtly & grossly) different tools, none of which integrate nearly as well with one another as different emacs modes do.

And of course, you are completely unable to extend any of those as you would with emacs.

> At some point you realize that work requires orders of magnitude more time thinking, reading, and communicating than it does typing.

Emacs improves thinking, reading & communicating just as much as it does typing. Having my data in a consistent, efficient format makes it easier to read, and consequently leaves me more time to think. Being able to read & write emails, send instant messages and use the web from within the same environment improves communication.

Emacs really is the bee's knees, and I've never used anything which comes close. If only there were a good mobile-centric port (tough, I know, but my idea is to make extensive use of command interactions)…

Mm, I don't actually see anything about finger travel in Josh's article. The main advantages he talks about are "no more context switching", "taking everything with you and keeping it forever", and that he likes being able to fullscreen emacs as a complete workflow with no external distractions. You have to admit, these are not as easily done with a multi-program, IDE-heavy workflow.

From the article:

> I have a dual monitor set up at my desk. One of them is in portrait mode with Emacs full screened all day long. The other one has web browsers for researching and reading; it usually has a terminal open as well. I keep my calendar, email, etc., on another desktop in OS X, which is hidden while I'm in Emacs, and I keep all notifications turned off.

You don't need emacs to do this. Fullscreen a JetBrains IDE and install the Org4Idea plugin.

I beat the JetBrains drum a lot, but emacs/vi users don't realize how much functionality is integrated and keyboard-driven in their products - and, importantly, it's built-in (no plugins) and sanely pre-configured. "I thought only emacs could do this" was my reaction when I switched.

OP here. There are lots of great tools for editing text and code out there. Finger travel was a concern due to some RSI issues I was having, but not the most important factor which is that I like Emacs and enjoy using it. I like it's sensibilities, Lisp, and the cleanness of the interface. YMMV, and I'm not at all an Emacs partisan or evangelist, just a guy who made a blog post about stuff I like.

Doesn't Jetbrains require Java? And, isn't Evernote a web service we don't know the ultimate fate of yet? I am just barely competent using Vim, and I am in the process of learning Lisp before I explore Emacs as an option. I just don't think the services you purpose as substitutes really fit the bill; they are simpler to use, especially at the beginning, but long-term I don't think they are replacements.

> Doesn't Jetbrains require Java?

It's 2015. That's a concern for practically nobody.

I think that the old joke about Emacs being an OS is actually very insightful. Living in Emacs is basically replacing most of your interactions with the OS (and in particular its window manager). Some, like me, find that Emacs as a pseudo-OS has a better approach towards productivity than your regular ones. It's opinionated - it encourages all "apps" (elisp scripts, basically) to conform the same text-oriented, fully customizable interaction patterns. And all powerful text-operating facilities of Emacs - navigation, searches, keyboard macros, etc. - can be used to interact with every "application". All the different modes and scripts in Emacs feel like a part of coherent whole, not separate apps. It reduces mental context switching tremendously.

You can get halfway there with a decent WM (xmonad, StumpWM and the like), but you still don't get the other half - unified and very powerful interaction, ability to tweak and instrument - and even combine together - applications, and documentation available at your fingertips. Living in Emacs makes me feel the computer is a powerful tool, not a toy.

Evernote has 90% of the features of Org-mode? The last time I checked, it didn't. Not even close.

What I mean is that most people can get most of what they need from something like org-mode by instead using Evernote, Asana, etc.

My experience is that I'd set up something like org-mode thinking, "wow, I can't wait to save hours a week by being able to juggle todo lists around at high speed without taking my fingers off the home row!" and like, that would just never be the case. In reality, all I needed was something a little bit better than a dumb text file.

ymmv. I'm sure there are power users out there who really exercise these tools to the max. But even then, I question how much time they're saving.

"time saving" and "without taking my fingers off the home row" is an extremely shallow view of why people pick emacs and org-mode as a major portion of their computational environment.

Broadly it's about creating a sort of fabric of textual context around your all of your personal and professional projects. It's about owning your tools as a professional.

Orgmode allows you to capture your thinking around a project in a way that's extremely adaptable to whatever structure you need.

You can create an outline of arbitrary depth with todo items, appointments, executable computation or latex.

There is literally no other environment available with that level of power.

Now even if you can assemble this from the bits of flavor of the month web services which of us will still be able to read and use our environment in 2 years? How about 25?


> Now even if you can assemble this from the bits of flavor of the month web services which of us will still be able to read and use our environment in 2 years? How about 25?

I am sympathetic to this.

If I were working alone on a decades-long project - for example, as a researcher, or academic - I'd be hesitant to use something like Evernote. I probably would use org-mode.

But, when working with other (potentially non-technical) stakeholders on projects that clock in under five years, Evernote and Asana would be my go-tos.

How do you manage your personal projects and notes though? Evernote - or any SaaS - seems to me too risky a proposition for something like this.

For brainstorming and architecting I use whiteboards that I take photos of before erasing. If there's no whiteboard available, I use pen and paper - yellow legal pads - which I also take photos of.

Text files and Evernote I use for snipping web pages, organizing bookmarks, and taking meeting minutes. For todo lists, I use text files, Evernote, and increasingly, Asana.

I don't do any brainstorming with the computer.

Yeah, I agree. I use emacs avidly. I still think for editing raw text it's a fairly nice experience. I like a lot of the features in emacs but I rarely need some of the more advanced ones. In order to leverage them, you need some highly specific use cases. Maybe my brain-meats aren't as myelinated as others, but most people don't want or need the universal pocket knife.

I'm not sure this is about finger travel. In my opinion it's more about consistency and features. Personally I spend most of the time on shells, interpreters and editing text, and I like the fact that the same key-bindings and basic operations work everywhere. For tasks that require little or no textual input, such as browsing the web or reading mail I do prefer GUIs though.

That is exactly my experience.

For me Emacs has always been a poor man's IDE.

The best replacement I got to get on UNIX to compensate for the lack of IDEs I already knew from PC and Amiga worlds.

Having migrated to JVM and .NET worlds reduced my Emacs use to machines where no other option is available. (Vi is only an option when Emacs isn't available)

But what happens when your IDE is discontinued with no easy way to migrate projects? That has bit me several times over the last twenty years -- so I only rely on established proprietary tools like Emacs these days.

It was never a concern, since I only use platform languages.

If the IDE doesn't matter it is usually because the platform doesn't matter anymore.

I feel that optimizing your work flow to minimize context switches is worthwhile, though. Doesn't have necessarily anything to do with one another but even getting your thoughts out without grabbing your mouse or mashing shift-right half a dozen times help me tremendously.

I agree.

Evernote has a hotkey for bringing up a note taking window.

OS X users can use Spotlight to bring up their favorite note taking app without touching a mouse.

True, at one point you care about abstractions that makes editing support moot. That said I still enjoy a customizable input / render lisp thingy that doesn't require me to have a core i5. Maybe time for an emacs descendant. systemacs /jk

I think helm is the new thing that replaces ido:


Ace Jump is pretty incredible. All editors and IDE's should be required to implement it. Here's a video demo:


Easy Motion does the same thing in vim: http://www.vim.org/scripts/script.php?script_id=3526

Helm is terrific. I switched to it from ido in the past 6 months and it's really increased my efficiency. In particular helm + projectile allows me to really quickly switch between projects and navigate to the file I need. I remapped some of the most-used emacs commands to their helm equivalent's and haven't looked back:

  (global-set-key (kbd "C-x r l") 'helm-bookmarks)
  (global-set-key (kbd "M-x") 'helm-M-x)
  (global-set-key (kbd "M-y") 'helm-show-kill-ring)
  (global-set-key (kbd "C-x b") 'helm-mini)
  (global-set-key (kbd "C-x C-f") 'helm-find-files)
  (global-set-key (kbd "C-c g") 'helm-git-grep)
  (global-set-key (kbd "C-c C-.") 'helm-git-grep-at-point)
  (global-set-key (kbd "C-x C-d") 'helm-browse-project)
My one complaint is getting used to C-z to drill into a directory when navigating the file system with helm-find-files. I haven't et figured out a way to map RET to do anything other than open the selected directory in Dired.

Does TAB not work for you to drill into a directory? I never have to use C-z in helm-find-files, just a simple `C-x f`, type a few characters, TAB expands the directory, and ENTER opens the file or directory.

Toying with helm led me to discover decipher-mode, unrelated but worth mentionning.

I've switched from ace-jump to avy with De Bruijn hints; it shows all the hints at once rather than in sequence, even if the hints overlap with one another.

The downside is that, sometimes, the hints are longer, but I've found it faster to know right away to type "wxyz" than to receive "w", "x", then "y" one at a time.


Ivy, part of swiper, is also good and more light weight, it's what I use for completion now. (though I used helm for ages and really liked it too).


Nobody is going to read this since this post is over a day old, but:

Emacs searches not only ~/.emacs but also ~/.emacs.d/init.el (and probably more) places for its init file. So you don't have to mess around with symlinks, you can just have a synced folder that is your ~/.emacs.d and have init.el be at the top of that folder.

This is a nice intro guide to emacs, but I think it goes without saying that if your CEO decides to learn emacs from scratch, you are in big trouble.

I say this as a dedicated, daily user of emacs and co-founder of a startup. Realistically it takes a year to get the hang of emacs to the point where you are more efficient in it than in other editors. The last thing I want my CEO (and friend and cofounder) doing is battling a weird Drop symlink issue with his .emacs file.

But I do agree that org-mode is amazing :)

I don't think it takes that much to be more efficient than in other editors; avy/ace-jump alone already exceeds what I was using before. After mastering basic navigation and learning several other choice plugins such as undo-tree, expand-region, smartparens, evil/spacemacs if you secretly want to learn vim, I could see emacs already being more efficient.

The weird issues and workarounds are annoying, though.

I don't think it goes at all without saying?! Are all CEOs obliged to use MS Office, arguably inferior editing experience to pure text editing, or be doomed to yakshaving their dotfiles?

Emacs out of the box works.

Unfortunately there is a misconception that you need a 10kloc init.el to be productive. Worse still are the opinionated configurations targeted at newbs.

emacs out of the box most definitely does not work well. You could say that vim works out of box -- most vi people don't end up customizing their editors up the wazoo like emacs people do at least.

(By the way I say this is as an emacsian)

If you're an emacsian, I'm not surprised that you think emacs needs customization for your use. As an emacsian, years ago I decided to stop customizing it, and guess what? Works great for me. So, as you can see, opinions about this differ.

You should file a bug report.

Emacs out of the box requires you to learn new key chords.

OP here. It took me about three weeks to get back up to a high level of productivity in Emacs. At the time, I was learning a new keyboard (truly ergonomic) which was the greater challenge. My wrist tendons are thankful to me for those weeks of awkwardness. I think Emacs is wrong for the vast majority of CEOs, but for some (at least one) it's pretty great.

Although I am not a CEO (but a marketer), I have a similar setup using Acme. I do all my note-taking inside Acme and have my plumbing logic set up so that all documents/JIRA issues/etc. are a single click away.

I think there is something to be said about using a few (if not one) text-centric tool to get stuff done: it's much lower on your cognitive load and wears you out less.

I would love to see some of your Acme setup. Emacs and Acme are my two favorite editors, but using Acme is a little less feasible for me due to not having found a proper (3-button + trackball) mouse to use with it. While I was using Acme, though, I did get most of the way there using the mod keys to simulate clicks.

>Acme is a little less feasible for me due to not having found a proper (3-button + trackball) mouse to use with it.

I use Evoluent at home and HP's 3-button mouse on the go (http://www8.hp.com/us/en/products/oas/product-detail.html?oi...): while Evoluent is more ergonomic, it's too bulky to be portable.

A blog post on your setup along the same lines as OP's post would form an interesting counterpoint to this demo...


whenever i see a i3 (or similar) setup these days, i keep getting reminded of a Acme demo i viewed. i3 with a bunch of terminals, Acme and Emacs all seem to land on pretty much the same usage scenario via different means.

CEO's Guide to Vim:

  1. Press `Escape` key
  2. ":q!"
Jokes aside, text files are a wonderful medium. Not everything can be expressed easily as text, but I highly recommend using it to everybody for whatever can. Emacs may not be the best tool for less technologically literate individuals (for this Atom or Sublime Text are very good), but the format is certainly very useful. I think people should look into using the command line more, as it can be much more productive after a period of learning.

> If you like the new and shiny and want to get straight to work without much investment of time and mental cycles, it's likely not for you.

After I discovered Spacemacs, I somewhat disagree with this, because you get so much funcionality in a well thought package, you don't need much customization at first.

I was a bit surprised when I saw the link to the Nix package manager; it seemed rather out of context. I wonder if he just googled Nix and copy-pasted the first result?

I think he Googled “*nix” and Google ate the asterisk.

It was originally *nix, and got changed to Nix and linked in the editing process somewhere. Thanks for the find!

Jetbrains IDE is great. I use Eclipse for Java. But emacs is my go to editor.

It has his weak points but I find myself always keeping it fired up and using it for any text editing that doesn't require a large IDE.

I just wish there was a site to setup Emacs as the ideal IDE for say:

- Javascript - Python - Django ...

I used to write small Java MIDlets using just GNU Emacs because the laptop I was using at the time was too old and slow to run NetBeans.

I have to say that since the Javadoc format for documentation is the best format ever, I was productive anyway.

Actually, it made me get very very quick at browsing documentation and appreciate it.

Also, by browsing documentation manually, I got to discover many neat stuff within the default-provided Java packages.

... Did you know you can do neat stuff with java.awt.Robot? ;)

Spacemacs is a better Emacs with Vi keybinding and preconfigured programming modes for major languages.

there is: https://github.com/syl20bnr/spacemacs

There is a Django layer in it, you can start runserver witha keystroke, open settings.py with another keystroke, run all tests, etc..

Seriously, people should stop over customizing their .emacs.d . I use mostly default (community) config from Spacemacs and it works just fine. You can use both vi keybinding and emacs keybinding at the sametime in Spacemacs. I reduced 2k+ lines init.el config to about 200 lines in Spacemacs.

Wow. The site loads the text with javascript simply to achieve a fade-in effect. With noscript enabled it's simply a blank page.

Fuck this trend in web design, and fuck this site. I hate how javascript-heavy the web has become. Why do I need scripts enabled to read a page of text?

Ohhhhhhh, so that's why so many pages were recently blank for me.

I was racking my brain trying to figure out why pages were blank on my default browser with extensions, but not on other browsers.

I also experienced the same thing.

Could someone explains the tech aspect of this?

If noscript is enabled then how is code being executed? HTML and CSS tricks?

Firefox's reader mode works well on it, though not on all sites.

Bikeshedding, which your link complains about, is offering opinions on minutia instead of addressing the actual problems that actually need discussion.

Expressing concern about the trend the web is going - executable code instead of open documents - is a primary concern if we want to preserve what's left of the open web. It's important to call out social problems like this so people get accurate feedback[1] about what is and isn't acceptable behavior.

[1] see B. F. Skinner and his box (operant conditioning)

> the actual problems that actually need discussion

That's some mouthful you've come up with to avoid involving "the article", which is the blindingly obvious context for top-level comments on a link aggregator.

> It's important to call out [...] problems like this

The HN admin seems to disagree.

> top-level comment

What? This doesn't make sense.

> That's some mouthful you've come up with to avoid saying "the article"

I'm not referring to the article. That "actual problem" was in reference to the parent comment about requiring readers to execute javascript to read text.

Not a clue what you're trying to imply by posting this.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact