I first started learning to code in grade school – which is not that strange these days but in 1982 it was pretty groundbreaking. I wrote more about that on my dj-codes site.
I started coding again in the early days of the web. I created sites from scratch and tinkered with HTML wherever I could. I didn’t really do much more, except for adding some ActionScript to my Flash animations (another relic of a bygone era).
After I started using WordPress to build websites around 2009, I didn’t really move beyond HTML tinkering. Somewhere in the back of my mind, I always thought I would go back to learning to code so I could create applications or make robots move. Someday…
Last year, I decided to start learning to code again for real. Partly because I’m just a geek and partly because as a software developer, I would make a lot more money than in any of my current freelance gigs or screen printing business. I also like to learn new things.
So far I’ve been learning on my own through Udemy courses, YouTube, books and other developers who know more than I do. It’s slower to learn that way, but I think I’m getting more depth of knowledge than if I did a quick-start bootcamp kind of thing. Nothing against bootcamps, I just know how I learn best.
I’m going to start documenting my journey into coding here and I may also start a YouTube channel. I’ll try to stay more on the journey side and less on the code side. I don’t want your eyes to glaze over in case you operate heavy machinery while you read my posts.
The last six months has been really fun. I’ve loved every minute of my learning, even if sometimes it makes me want to scream (looking at you, PHP). I’m learning to fail more often and pick myself up more quickly. I don’t really have a set deadline for when I’m supposed to be “done,” I’m not thinking of it that way. I’m just doing what I can, as much as I can and building projects that might be fun and useful.
I hope you’ll follow my journey. I need all the encouragement I can get. And if you’re on a similar journey, I’d love to hear about it.
Are you ready to get your geek on? Let’s talk about Emacs.
The first thing to understand about Emacs is that it’s not a sandwich. It does sound like it might be a tasty snack, but unfortunately being food is among the small percentage of things Emacs is not.
Emacs is a text editor. No, wait. Emacs is for writing code. Ummm… it’s also for organizing your calendar and using email. You can play games. Here’s the definition from the creators of the most widely-used variant of Emacs:
GNU Emacs, describes it as “the extensible, customizable, self-documenting, real-time display editor.”
It was invented in 1976, and is amazingly still used and being developed today in (mostly) it’s original form. It doesn’t have a pretty, graphical user interface like the software you’re used to in 2021. It looks more like the terminal window that Neo uses in The Matrix.
Rather than navigating with a mouse, you do almost everything using key commands. It takes a little time to learn them but once you do, it becomes second nature. If you use bash (terminal) a lot, you’ll get the hang of it pretty quickly. In fact, you can even use Emacs inside your terminal, but that’s a story for another day.
Like the description says, Emacs is customizable and extensible. There are packages you can download and install (all from within Emacs) that extend the functionality and look of your Emacs. Someone else’s Emacs could look totally different from mine, which is pretty cool.
Emacs is also self-documenting, which means that everything you need to know about using it is built right into the program. If you try it, I highly recommend doing the built-in tutorial.
Another thing to love about Emacs is that it’s cross-platform. You can move your whole Emacs setup between Mac OS, Windows or Linux and pick up right where you left off.
Here’s a screenshot of my Emacs setup (click for a close-up):
I use two monitors and Spaces (Mac OS). So my #4 space is dedicated to Emacs. I’ll give you a quick tour, then I’ll describe what’s going on. There are several windows open, some with one frame and one split into two frames. From the left; Scheme, Projects, Agenda, Notes (below), and a Game. Here’s what they are:
This is the reason I started using Emacs in the first place. I write code in a few different languages, but I never really learned computer science itself. I picked up a book called Simply Scheme that teaches computer science and programming from a very basic level. For several days (weeks?), I got wrapped up in learning how Emacs works, and of course I had to find out everything I could do with it beyond running Scheme.
There is even a package that highlights syntax errors in PHP and other languages. While my main code editor is VS Code, I’ll edit some code in Emacs from time-to-time.
Emacs is a very basic text editor, but it does have some features that allow you to create nicely organized lists and documents. The thing I like about it is that it’s very much distraction-free. Unlike writing in MS Word or even Google Docs, there are no formatting options or little pop-ups that happen while you’re composing something. I use it to get my thoughts down, edit, then paste the final version into Open Office or Google Docs later for formatting. Using Markdown language you can also do some nice formatting in Emacs and export as HTML or a PDF.
One of the things I love using it for is to list projects I’m working on and next actions (similar to David Allen’s Getting Things Done, but me style). I can create To-dos and even manage them with scheduling and completing them with simple key commands.
One feature I love is org-mode. I can look at my schedule and to-dos by the week or day. Any to-dos I have added to my other files, like Projects, will sync up with my agenda file. It takes a little setting up, but once it’s done it’s awesome.
Like most people in 2021, I use my phone for almost everything. So it wouldn’t do me a lot of good to set up an agenda if I couldn’t view it or manage tasks when I’m not home. Luckily, there’s an app for that. It’s called beorg and I love it. It syncs via my iCloud acccount (you can also use WebDav or Dropbox).
Again, as a text editor, Emacs is great. Anytime I want to make quick notes on something, I create a new file/buffer and start tapping away. In my screen shot, I was copying and pasting notes from a chat with tech support about a client’s site. Sure, I could just use TextEdit or a bunch of other word processing apps on my laptop, but the beauty of Emacs is that I can do almost everything right there.
If you used a PC back in the early 1980s like I did, the first thing you wanted to know was what kind of games can I play on this thing? Back then, computer games were mostly text-based unless you had a system like Pong. The games included with Emacs are very similar, although these days there are more graphical-based games like Tetris and even Pac-Man (I haven’t tried that yet). And yes, Pong is there, too.
The game open on my screen is Dunnet, which is a version of an interactive adventure game called Zork. I keep that buffer open and jump into it every now and then.
If you’re even slightly geeky about computers, you should give Emacs a try. Maybe it won’t be as useful to you in your day-today like it is for me, but it’s fun to try it out. There’s a bit of a learning curve, but there are tons of resources online to help you figure stuff out.
Do you use Emacs? Have you ever tried it? I’d love to hear your experience!