You can see the language work, by looking at the code.
It may not get me a fancy computer job, but I think I am happier on the whole anyway, giving myself to lisp. Something therapeutic about it.
Fun anecdote: I've got my copy of SICP signed by both authors for Sussman invited me to have tea in his office and when I arrived the next day, by sheer chance, Abelson was there too! They joked that had I been there 30 minutes early Sussman's wife, who proofread the book, would have signed it too! I've got a cool pic taken at that moment: me standing along these two legends and proudly holding the purple book... I'll post that pic and full story the day I have a blog.
Besides that I pretty much live inside Emacs. The occasional elisp (3000 lines of custom elisp hackery over the decades) and lots of Clojure/ClojureScript.
I have thought that J Sussman not only proofread the book, but also came up with some of the problem sets and tested many of them: she worked through the book, not just a matter of spell-checking.
But I don't know.
In any event, SICP changed my world in a good way. Very cool that you got both authors to sign a copy!
I am the same way. I have been using Emacs since 1995, but have never had a full-time programming/IT job (although my tech skills have always been integral to my career). Perhaps having the luxury of not having to write code for pay is what makes me want to instead slowly learn Elisp. I read email using VM on Emacs (also since 1995), and over the last few years I have broken out of just knowing enough to maintain Emacs' dotfiles to actually writing substantial routines that expand on/fix VM and Emacs's capabilities.
Help => More Manuals => Introduction to Emacs LispTrack your customizations in a version control. Using customize package and reading the diff in dot Emacs file has taught me quite a bit about certain aspects of the package.
Side note: It would be awesome if Emacs could do the versioning as part of saving the customizations - build Emacs with libgit2 and make it a native git client.
The author mentions that some things can be hard to do outside of the customize interface. That is true. When that happens, I just use the interface and then move the setting from custom.el to use-package. But that's rare, I can't remember the last time I did that.
I'm one of those who track everything Emacs: including all the packages. When I upgrade packages, I first check that nothing broke then I commit "Bump avy to 20220114" or whatever. This way I can easily share the exact same config on several machines/several user accounts and I know I can easily roll back to a known fully working setup. YMMV.
Init a git repo in your $HOME, add a .gitignore that by default excludes everything then manually add just the files and folders you want to track.
Especially if you want to publish the repo, be careful, because it's <<extremely>> easy to accidentally expose confidential stuff.
just like pizza with pineapple, people do occasionally give out downright bad advice.
I really don't understand this pineapple on pizza meme. I think it's delicious!Nowadays you'll find it even in Italy, because tourists demand it and they pay hard cash, so fuck it all anyway.
...by people who don’t know where what they think of as “Italian pizza” actually comes from. Look up “pizza effect.”
I don't like fruit as part of a main course (i.e. not a dessert) or appetizer. That doesn't make me a snob, it just means I don't think fruit belongs there and don't appreciate when it is.
Everyone I've ever talked to that has an issue with it just think it's gross. And they're usually people that are not very big risk-takers with their tastes, and order the exact same item at a restaurant every time they go. And only want either cheese pizza or pepperoni.
I'm pretty sure even Tomatoes weren't. I hope this isn't the reason for the disdain.
Fish and chips for one. Curry wurst. Apple, persimmon, pine nut and blue cheese. Halloumi, pea, and mint. Mushroom, goat cheese and chipotle. Cranberry and white pudding. (Or cranberry and goat cheese) Christmas dinner. (Turkey, stuffing, ham, cranberry). Pulled pork. Roast pineapple and mint. Bacon and egg. Berry and cream cheese. Salmon and cream cheese and wasabi.
I have been known to make specific dinners in order to have the leftovers to put on pizza.
Most Americans use a fairly sweet pizza sauce. Adding pineapple to that makes it too sweet. But I like my sauce with more tomato acid, so a little bit of fig or pineapple complements the flavours. The nice thing about pineapple is that you don't get it in every bite like you do with a sweet sauce.
Edit: and now I sound like the pizza snob. :) It should be 7 -- good pizza has both crisp and chew.
Those that like pineapple on their pizza just don't speak up because they don't feel the need to be harassed over their pizza choices.
Arnold has an opinion.[0]
As a long time Emacs user, I feel that this is slightly unfair. When I first started out, I found that my documents from Emacs were far more common than in other editors. It took me two years to realise that I was often bumping C-t where trying to hit C-r or C-y and silently transposing two characters. In over twenty years of Emacs usage, I have never once used C-t on purpose. I feel that this perfectly matches the "keybindings triggering random stuff" experience and it is fully there in vanilla Emacs.
With twenty years of experience, I have my own, esoteric init file that I would not recommend on any newbie. However, I personally feel that Emacs has succeeded despite its default keybindings.
This is funny to me because, while I'm not an Emacs user, I'm a Mac user who's gotten used to the tiny subset of Emacs keybindings built into Cocoa text fields, and I use C-t fairly frequently! Apparently you do not make character transposition errors as often as I do.
Honestly its a double edged sword here. Doom has so many built in convenience functions like `set-font!` and `set-repl!` that an experienced elisp programmer would probably love it for building their own configuration.
On the other hand it bundles so much that an inexperienced emacs user might be more keen to do the bare minimum and rely on the packages bundled with doom to give them all the cool stuff without much effort. After all, why "reinvent the wheel"? I personally don't agree with that sentiment, I think learning how to build and maintain a personal emacs config makes a person a better programmer generally, and makes them prone to reading and writing documentation rather than copying solutions.
I started off with doom and even though I don't use it anymore I still find myself reading its source to figure out how Henrik approached a solution. Love it or hate it, Doom is great in both very good and bad ways for emacs users.
Fair enough, I came from a background of JavaScript and Python, and Lisp was entirely foreign to me, let alone Elisp.
> After all, why "reinvent the wheel"?
I think its not of "reinvent the wheel", but let the other person do the decision making for you, including picking packages, setting up the modeline, so on and so forth. Starting out with a bare Emacs installation, you have to piece together the various packages that you would want to use, where as with Doom, you get everything out of the box. Also, maintaining your own init.el helps one learn Elisp
> I still find myself reading its source to figure out how Henrik approached a solution
For example?
You can also easily remove anything afterwards.
Doom is essential for my sanity, and extremely flexible. I can do everything I want, just like on a barebones install. But I do it in a way that is way simpler, more practical, and performant. I'd use Doom even without any of its modules, just for the macros, the speed, and the sane configuration layout.
I tried the build your own route for 2 years, ended up with a huge messy init impossible to maintain. Doom removes a lot of complexity and provides extremely useful macros. The guy really knows what he's doing, and the optimizations that he uses are impressive.
I now use my own much simpler config, but I've borrowed heavily from the things I like about Doom.
It's works well because I fall into the Evil+Use-package Emacs hegemony with my custom config.
So I deleted my config. Went through the tutorial with vanilla setup. Then I continuously kept adding packages and tinkering with my config. After about two weeks, I felt that my productivity was on par with what it was previously in Neovim.
I've been using Emacs for a couple of months now and I'm happy I went this route. It is a tool I use almost daily and thus having a deep level of understanding and control is worth it.
This was very educative and I learned a lot about Emacs and Elisp.
The irony is after all of this I'm back to Vim and I don't feel like going back to Emacs (yet).
It's acceptable to people to use the standard Elisp, and Emacs itself, without digesting that code, but somehow using a canned config is bad. I find the choice of where to draw the dividing line somewhat arbitrary.
It follows a similar philosophy as the OP: Start by reading Emacs's built-in tutorial, and then my tutorial shows you how to leverage the built-in help system to figure out how to achieve what you want to do.
It was hugely helpful to me in learning Emacs.
Thank you so much for writing it!
Completely agree with this article, though. Happy with my purchase of this book a while back.
I think these all have a similar theme to them "I am more productive now since I have turned them on, so I wish I had switched sooner" but they ignore the fact that each of those things adds friction to learning the basics, and at some point people will just nope-out.
Reminds me of the old days of IRC posturing, newbie bashing and RTFMing. Today most info can be obtained by a well crafted search query.
very nice write up
I never leave it enabled any more. When I was a beginner it was helpful but as time goes on you learn more of the system and better ways of finding commands.
One thing I suggest is building emacs without dbus and using only Athena widgets. Both contribute to overall emacs stability.
That said, you can always call it up as a pop-up menu.
The toolbar is pretty fungible though, few modes do anything with it and the core functionality you get from the standard chords you find in the tutorial, little bang for the pixels.
I stopped reading after this. If you want to look like you're objective, don't use pizza as an argument
- read the manual - follow the tutorial - customize it to your liking
wow, what enlightening advice! this must be unique to emacs and not _any_other piece of software!
once again, all you need to get FP'd on hackernews is to put the word "emacs" in your title. zoom! to the front page!
e.g. "Emacs Prelude", one such configuration or "distribution" of Emacs, used to disable the menu-bar by default as recently as a year ago: https://github.com/bbatsov/prelude/commit/878cffb
One thing I dislike about the manual is that it rarely presents examples, but commands like describe-variable and describe-function often help elucidate usage. Not to mention external packages that makes all that even easier.