/Ryan Faulhaber/posts


Cool Emacs Things: Dired

Today we continue my ongoing series on Emacs with a feature of Emacs that feels genuinely magical: Dired. One of the first things I did when I became a Linux user was to learn how to use the terminal. The terminal is an indispensable tool in the Unix world broadly because of its versatility. I got to a point where I used the terminal so heavily that eventually on Linux I stopped installing file explorers, and on macOS I had entire directories that never had those annoying .

Quest for a Better Scripting Language

I’ve been a Linux user for quite a few years now, and writing shell scripts is a pretty common thing for me. I have written many little scripts to do repetitive tasks in various languages. In this post I want to think out loud about what makes a worthwhile scripting language. Also please note that these are purely my opinions based on subjective experience, I’m not really interested in making any objective claims in this post.

My Advent of Code 2020 So Far

This is my first year participating in Advent of Code. I enjoy doing coding challenges but I’m not competitive about it, so I tend to use them as a learning opportunity. Like for most people, the end of the year is a time of reflection, and when I look back on what I wanted to do this year, I often found myself saying “that’s a language I wish I knew better.

Cool Emacs Things: Magit

This is part of an ongoing series where I talk about the little things that make Emacs a nice editor. Today’s entry: Magit, a Git interface for Emacs. I’m not much of a Git client person myself. I don’t use or particularly like Sourcetree or GitKraken. VS Code and JetBrains IDEs have some nice features, especially when it comes to merging and rebasing, but they’re still not quite like Magit.

Critique of the Magic of Modern IDEs

The StackOverflow blog recently posted this article asking why so many people continue to use Vim and Emacs when modern editors like Atom exist. This is a question I have personally addressed before with regards to Emacs, but I want to address this post specifically because I think it gets at a commonly held misunderstanding about these editors. The basic point of the post explores why people would want to use an antiquated editor like Vim or Emacs, and that those who continue to use either are missing out on the so-called magic of a newer IDE.

Some First Impressions of Nix

In my relatively few years of software development I’ve seen first hand how hard it can be to set up a consistent environment, development or otherwise, across a team, and I think Nix might be a solution.

Cool Emacs Things: Edit Files Over SSH

This is the first installment of an indefinite series calling (in lieu of a better name) “Cool Emacs Things,” little things about Emacs that makes it a very handy editor. Today’s entry: Editing files over SSH. This was something I discovered recently by accident. I run a private email server and the IMAP portion of the server is handled by Dovecot. Dovecot is great but by default the configuration is spread across dozens of files, and, while trying to tediously edit multiple files over SSH in Vim, I thought, “Wouldn’t it be nice if I could do this with Emacs?

You Should Try Linux

I’ve been using Linux since about 2013 and it’s been a consistently rewarding experience. Not only am I far more productive on Linux than I am on macOS or Windows, I have the satisfaction of using a system that’s uniquely mine.

Ways Emacs Has Changed What I Do

Previously I had written about trying Emacs, but looking back on that post I felt like I was bit vague about the ways in which it’s changed the things I do, so I wanted to provide some examples. Emacs has replaced a number of programs in my life, and not all of them are developer related.

A Guide to Promises in JavaScript

Although the async and await keywords are now part of standard JavaScript, under the hood they ultimately use Promises. Here we’ll explore what Promises are, why they’re needed, and how you can “promisify” callbacks in JavaScript. I find a lot of newcomers are often confused by terms like “callbacks”, “Promises”, and what exactly async and await do. I hope to clear that up with this article. For the sake of clarity, this guide will use function syntax, and not arrow functions.