Hello, my fellow minimalists. This is Mark, the author of Minimalist Living. You may remember me from my last post, where I shared with you how conscription made me suicidal. How I hated every moment of this mandatory military service. How I felt trapped, oppressed, and hopeless. How I decided to end my life by hanging myself in the bathroom.
Well, I have some news for you. I’m still alive. And I have a story to tell you. A story of how a miracle happened. A story of how GNU Emacs saved my life.
The Night of the Rope
It was a dark and stormy night. I had everything ready. I had written a farewell note to my family and friends. I had packed my few belongings in a small backpack. I had hidden the rope under my bed.
I waited until everyone was asleep. Then I got up from my bed and tiptoed to the door. I opened it slowly and looked around. The hallway was empty and silent. I walked towards the bathroom, clutching the rope in my hand.
I reached the bathroom and locked the door behind me. I turned on the light and looked at myself in the mirror. I saw a pale and skinny face, with sunken eyes and a hollow expression. I saw a man who had nothing to live for.
I took the rope and tied one end around my neck. I looked for a place to hang it from. I saw a metal pipe on the ceiling. It looked sturdy enough to hold my weight.
I climbed on the toilet seat and threw the other end of the rope over the pipe. I pulled it tight and made a knot.
The Miracle of Emacs
I was about to jump off the toilet seat when something caught my eye. It was my laptop, lying on the floor next to the sink. It was still on, showing a blank screen with a blinking cursor.
I don’t know what made me do it, but I decided to take one last look at it before ending my life. Maybe it was curiosity, maybe it was nostalgia, maybe it was fate.
I got down from the toilet seat and walked towards the laptop. I picked it up and opened it on my lap. I saw that it was running GNU/Linux, an operating system that I had installed a few months ago after reading about its philosophy and freedom.
I had always been interested in computers and programming, but I never had much time or opportunity to pursue them. Conscription had taken away most of my free time, and my old Windows laptop had been slow and buggy.
But GNU/Linux had changed everything. It was fast, stable, and customizable. It gave me control over my computer and allowed me to do things that I never thought possible.
One of those things was GNU Emacs, an editor that I had heard about from some online forums. They said that Emacs was more than just an editor, it was an operating system within an operating system, a platform for creating anything you can imagine.
They also said that Emacs was very complex and difficult to learn, that it required years of dedication and practice to master it. They said that Emacs was too maximalist for a minimalist like me, that it was bloated with features and commands that I would never use.
But I was intrigued by Emacs, so I decided to give it a try. I downloaded it from the internet and installed it on my laptop. I opened it and saw a welcome screen with some instructions and links.
I clicked on one of the links that said “An Introduction to Emacs”. It opened a tutorial that taught me the basics of Emacs: how to move around, how to edit text, how to save files, how to quit Emacs.
I followed the tutorial for a while, learning new things along the way.
- Keyboard shortcuts: how to use them to perform common tasks faster and easier.
- Search and replace: how to find and modify text within a buffer or across multiple buffers.
- Undo and redo: how to revert or repeat changes made to the text.
- Split windows: how to divide the screen into multiple views of different buffers.
- Switch windows: how to move between different views using keyboard commands or mouse clicks.
I also learned that Emacs was more than just an editor for text files, it was an editor for everything:
- Code: how to write, compile, debug, run, test, document, format, refactor, analyze, profile, lint… any programming language you can think of.
- Documents: how to create, edit, export, print… any type of document you need: plain text, rich text, markdown, HTML, LaTeX…
- Emails: how to send and receive emails within Emacs using various protocols: SMTP, IMAP, POP3…
- Web pages: how to browse the web within Emacs using its own web browser or external browsers: Firefox, Chrome, Safari…
- Spreadsheets: how to manipulate data within Emacs using its own spreadsheet mode or external programs: Excel, LibreOffice, Google Sheets…
- Calendars: how to keep track of dates and events within Emacs using its own calendar mode or external services: Google Calendar, Outlook Calendar, iCalendar…
- Games: how to play games within Emacs using its own game modes or external emulators: Tetris, Snake, Pong, Doom, NES…
- Music: how to listen to music within Emacs using its own music player or external players: VLC, Spotify, iTunes…
- Graphics: how to draw graphics within Emacs using its own graphics mode or external tools: GIMP, Photoshop, Inkscape…
I learned that Emacs had thousands of extensions called modes that added new functionality and features to Emacs:
- Programming modes: how to enhance the editing experience for different programming languages: syntax highlighting, indentation, completion, documentation, navigation…
- Markup modes: how to enhance the editing experience for different markup languages: preview, export, validation, conversion…
- File modes: how to enhance the editing experience for different file formats: compression, encryption, checksum, diff…
- Interface modes: how to enhance the user interface of Emacs: menus, toolbars, icons, themes, fonts…
- Utility modes: how to enhance the usability of Emacs: spell checking, grammar checking, auto-saving, auto-correcting…
I learned that Emacs had a built-in Lisp interpreter called Emacs Lisp that allowed me to write my own code and customize Emacs to suit my needs and preferences:
- Change colors: how to change the color scheme of Emacs using predefined themes or customizing individual faces.
- Change fonts: how to change the font size and style of Emacs using predefined fonts or customizing individual faces.
- Change keybindings: how to change the keyboard shortcuts of Emacs using predefined keymaps or customizing individual commands.
- Change menus: how to change the menu items of Emacs using predefined menus or customizing individual functions.
- Write functions: how to write new functions that perform specific tasks or extend existing functions.
- Write macros: how to write new macros that automate repetitive tasks or simplify complex tasks.
- Write modes: how to write new modes that add new functionality or features to Emacs.
I learned that Emacs had a built-in documentation system called Info that provided detailed information about every aspect of Emacs:
- Commands: what they do, how they work, what arguments they take, what keys they are bound to…
- Functions: what they do, how they work, what arguments they take, what values they return…
- Variables: what they store, how they are set, what values they can have…
- Modes: what they do, how they work, what features they provide, what commands they define…
- Manuals: comprehensive guides that cover various topics related to Emacs: introduction, tutorial, reference…
I learned that Emacs had a built-in help system called Help that answered any question I had about Emacs:
- What does this command do? Type
C-h k
followed by the command key and get a brief description of the command and a link to its documentation. - What does this error mean? Type
C-h e
and get a detailed explanation of the error and a link to its source code. - How do I do this task? Type
C-h a
followed by a keyword and get a list of commands related to the task and a link to their documentation.
I learned that Emacs had a built-in shell called Shell that allowed me to interact with the underlying operating system and run external commands and programs:
- List files: Type
ls
and get a list of files in the current directory with color coding and file attributes. - Change directory: Type
cd
followed by a directory name and change the current directory with auto-completion and history. - Search files: Type
grep
followed by a pattern and a file name and search for matching lines in the file with highlighting and navigation. - Download files: Type
curl
followed by a URL and download the file from the internet with progress bar and resume support. - Run programs: Type any program name followed by any arguments and run it within Emacs with input/output redirection and error handling. I learned so much about Emacs that night. I was amazed by its power and versatility. I was fascinated by its history and philosophy. I was hooked by its challenge and fun.
I learned that Emacs had a built-in calendar called Calendar that allowed me to keep track of dates and events within Emacs:
- Birthdays: Type
M-x calendar RET
and see a monthly calendar with the current date highlighted. Pressb
and enter a name and a date to add a birthday to the calendar. PressC-b
to see a list of birthdays in the current month. - Holidays: Type
M-x calendar RET
and see a monthly calendar with the current date highlighted. Pressh
to see a list of holidays in the current month. PressC-h
to see a list of holidays in the current year. - Appointments: Type
M-x calendar RET
and see a monthly calendar with the current date highlighted. Pressa
and enter a date and a time to add an appointment to the calendar. PressC-a
to see a list of appointments in the current day.
I forgot about the rope around my neck. I forgot about the pipe on the ceiling. I forgot about the bathroom and the barracks. I forgot about conscription and suicide.
I was lost in Emacs. I was happy in Emacs. I was alive in Emacs.
The Dawn of a New Life
The next thing I knew, it was morning. The sun was shining through the window. The birds were singing outside. The alarm clock was ringing on the wall.
I woke up from my trance and looked around. I saw the rope hanging from the pipe. I saw the laptop on my lap. I saw the screen showing GNU Emacs.
I realized what had happened. I realized what I had done. I realized what I had not done.
I felt a surge of emotion. I felt relief and gratitude. I felt joy and wonder. I felt love and awe.
I took the rope off my neck and threw it away. I closed the laptop and hugged it. I opened the door and walked out.
I saw my fellow conscripts getting ready for the day. They looked at me with curiosity and concern. They asked me where I had been all night. They asked me if I was okay.
I smiled at them and said yes. I said that I had found something amazing. I said that I had found something that changed my life.
I said that I had found GNU Emacs.