Email in Emacs

I really did try mu4e. Really. But the setup required a custom emacs build on macos, and I am unfortunately constrained to Macs for work at the moment, so it was kind of a non-starter to jump through so many hoops to get it working. And of course, I also highly value resilience, and nothing says unresilient than not being able to successfully build a crucial feature like mail handling into your editor of choice.

So that occassioned a turn towards notmuch. Oh my, how delightful. At it’s simplest, notmuch is just a xapian-powered tag database for your email. Imagine that, no crazy indexers or long-polling to check for new email. Notmuch just tags and allows you to search your email.

Combined with isync’s mbsync and msmtp, I now have a really functional and resilient email seutp in Emacs. Even more delightful is looking through my tag database and realizing that if I tag things effectively, finding all those board agenda emails for church are just a tag search away.

Of course, such things were always available in Gmail or a mail client. But I was always unimpressed with how slow Thunderbird or Mail.app got with lots of messages. And Google is reading all my messages, so that sucks too.

Combine the ease of syncing and tagging messages, and the fact that they exist in a directory on my computer, synced via Dropbox to all my other computers and my email suddenly mine again, not living on an IMAP server that I hope doesn’t fail me.

Doomed Emacs

After a year or so of dedicating myself to getting Spacemacs setup just right, I made a pretty substanial jump a few weeks ago. I’m now running doom-emacs which provides fewer nice surprises (missing evil-surround shortcuts by default) than spacemacs, but loads much … much faster. The other day I found myself coding while sharing my screen on Zoom and is was painfully obvious what price I was paying for spacemacs not cleaning up after itself and generally lazy loading things leading to less than fast context switching.

I was willing to struggle through some the slower operations for my own sake, but getting caught with other people watching as my editor on a brand new computer struggled to do basic things like searching for symbols in the codebase was embarrassing.

I’m not done with Spacemacs. I still love the idea, and I also believe that half the problem was likely the way I was using it and configuring it. But part of the appeal of spacemacs are the defaults. And it was the defaults that was making it hard to use it on a daily basis.

Another nice aspect of Doom Emacs is that aside from a handful of evil-mode shortcuts, a lot of what you’re encouraged to use are stock emacs keystrokes. That means that I’m not learning some cryptic layer on org mode when I use emacs, I using the default keystrokes that I will find in vanilla emacs. That’s very useful and will hopefully make me a more respectable member of the emacs community, rather than a vim outcast.

Continuous tool improvement

I was reviewing the feeds I subscribe to in elfeed this evening when it occurred to me that a lot of my feeds have to do with Emacs. I will often blow through updates on feeds, making sure to only pickup things that are truly useful. But I discovered an amazingly high signal to noise ratio regarding tips for using Emacs more effectively. This got me thinking about how I couldn’t possible remember all this stuff, so I tossed some of the things I was learning in my learnings.org file to review later. At that point, it dawned on my how important tool choice is, and how important it is to learn how to use your tools effectively and be receptive to learning new things about them.

This could apply equally to any well made tool for any discipline (woodworking, drawing, research), but for me that means Emacs. Not everyone is going to ever need to touch Emacs. For me, I can’t imagine not having it, and everytime I learn something new, I get a little more effective with it.

For reference, tonight I learned how to make all URLs, regardless of buffer, clickable I also learned how to break an org-mode block in two with a single keystroke to insert a comment.

Reading Lists

Oh Goodreads. Your website is a cluttered mess. Your UX hasn’t been improved in years. The only value I derive from keeping my reading list on you is that my friends can see what I’m reading. Which is a neat trick, but since I’ve mostly given up on Facebook too, it not really enough to keep me.

I was an early adopter of Goodreads, but my life has taken a turn towards the personal and the text-based. I use Emacs (via spacemacs) as much as I can. Org-mode might be the single most impressive IDEA rendered into software I’ve ever seen. It simply makes the things I use on a regular basis more powerful and expressive, which is not something I can say for Word, Twitter, or Chrome. Those are merely tools. They don’t amplify my ability to document and create.

Really the post Leaving Goodreads is what convinced me to go, one more time, back to my reading list in org mode. But the killer feature this time around was ox-hugo, which allows me to easily dump Org-mode subtrees into a hugo-powered blog directory. A simple rsync later and I can publish random subtrees, including book reviews!

The whole thing is so elegant, I couldn’t have dreamed up the process if I had tried. The whole thing was truly an evolution of tools, and one that was only possible because each tool, Emacs, spacemacs, org-mode, hugo, ox-hugo, does it’s job so elegantly.

Running Tired

After an angsty 25+ years of my life, I’ve come around to love running. This is obvious to anyone who knows me. I discovered it as a great hobby when you live in a rural area and can’t get together on a regular basis to play sports. Combined with the ability to track running with technology, it has become a hobby that at this point I would even if I couldn’t track, or had access to regular sports events. I just love being out on the road, listening to nature (or music) and feeling the air and precipitation.

But that’s not what this is about. This post is about when I’m less than joyful on a run. A big part of running is making it a habit so that it isn’t a struggle. The hope is that you can condition yourself to be able to use relatively little effort to get out there. That’s the goal. Of course, reality being what it is, running it not always effortless.

The last few weeks I’ve changed my diet and had an explosion of personal and professional commitments. The changes in routine have led to runs that have been crammed in my schedule sideways and at times that are not my favorite. Which ultimately has led to runs that would normally be close to effortless, requiring more effort. But there’s an opportunity here too. The opportunity is to toughten my mental state to run while under effort. Even when things don’t go right, we have to practice a combination of mindfulness and grounding in your ability to push through, while still listening to your body and not pushing too hard.

Intentions

The idea here, cribbed from Bryan Cantrill’s talk on oral traditions in software development, is the importance of making as clear as possible your intentions when you do things. Often I feel as though intention gets a bad rap. The road to hell, and what-not. But the reality is that, if you are doing something, it is best to do it with intention. God help us the things we do impulsively or emotionally. Sometimes they work out alright, but it’s usually best to go back and see if we can learn why it happened. That’s still applicable when doing things intentionally, but because there was forethought, we are already a step ahead.

Of course, what this really means is that we also need to make sure we document our intentions. This is where we come back to Bryan’s talk. It’s not enough to solve a problem, or build a product. You have to document the process that got you there. In software, you leave your intentions via comments, documentation, blog posts, podcasts, talks, or just conversations with co-workers and friends. But one way or another, you should document what you set out to do and whether you accomplished it. In the absence of this, we are really just throwing darts. I’d wager dollars to donuts that few significant works were created by throwing darts.

I’m currently reading the book Sing, Unburied, Sing by Jesymn Ward. The most disturbing aspect of one of the characters in Ward’s brilliant story is the complete lack of intention in her actions. Her internal governor appears to be fueled entirely by impulse and emotion, leaving those around her hurt, confused, angry and afraid. When humans act without intention, the results tend to appear brutally selfish, even if the underlying logic is not. When we impulsively shoot off an email, we have, by definition, not given it any thought. The repercussions of such an action are hard to understand.

Thus, while the road to hell may indeed be paved with good intentions, it’s probably better than the road that’s paved with impulsive and emotional outbursts.

Another Engine

Once, I used Jekyll. Then I switched to Pelican. I’m finally here on Hugo, and hoping that this will make it easier to keep things updated. The eternal question when chosing a method to publish a blog is, why publish a blog. I don’t really have an answer for that yet. I wish I did. Honestly, I do. You don’t have to believe me, because I believe in myself, and if this is all one big simulation, you don’t matter anyway.

Incidentally, perhaps the best part of this transition is the ox-hugo plugin, which makes writing new posts and publishing them a dream. Now, instead of some complicated cocktail of adding a new file with the write filename and proper metadata, I can just org-mode capture the thing. The more I use emacs (and specifically spacemacs), the more in love I am.

Campaigning

Campaigning has been a very interesting trip. The most memoroable aspect of running for select board so far has been finding people standing up along side me and asking how they can help me gain a seat at the table. Mostly, that’s because I tend to think of myself as a relatively unimportant person. And I am, even now. Yet my desire to serve the town intersects with a lot of other folks' desires for their town, and I’m amazed that they see me as someone who can help them.

Mostly, what that means to me is that this has become a responsibility. Not that I didn’t already know that to a certain degree, but extent to which service is really responsiblity has fully dawned on me now.

Free and Responsible

The way I was raised, certain people were simply wrong. If they didn’t share the same enthusiasm for science, they were incorrect. If they believed in a benevolent (or even malevolent) Christian god, they were wrong. There was very little gray in many of the positions that were espoused to me. One of the great aspects of humanity is that we are given the opportunity to raise our children with our values and beliefs. But, of course, there are responsibilities there too.

It almost seems absurd to say this, but I don’t think I was always responsibly educated. Absurd, because that’s a high bar and I’m not sure anyone can ever claim to have been educated under the perfect paradigm. But to the extent that it took me many years to understand what it means to pursue a free and responsible search for truth and meaning, I think there could have been more openess to what I was exposed to. The Christian Bible is an amazing book. The Bhagavad Gita is absolutely beautiful. Darwin had his doubts about the extent to which evolution allows us to understand life. Newton was downright crazy half the time.

The source of responsibility in our lives is humbleness. When we say we are responsible for our children, that does not mean if we fail to teach them the right things we have failed. It means if we fail to listen to them, and discern what they need based on what we understand about them and what they tell us, we have failed them. There is no test for responsible parenthood, just as there is no test of responsible searching for meaning in our lives. When we have the freedom to search for truth and meaning, we must use discernment and listening as our foundation for responsibility. Listen first, think second, act last.

Finding meaning

What does it mean to encourage others towards spiritual growth? At a recent board meeting, which included a fairly contentious issue, a number of friends and myself certainly did not encourage anyone towards spiritual growth. The root of the problem, as with many problems, lies with differences; differences of opinion, experience, and expectations. As a Unitarian Universalist congregation, we espouse the seven principles, which are as close to dogma as you’re likely to see in UUism. One of these seven “pillars” of behavior as a UU calls us to accept others and help them towards spiritual growth. How can we do that when we’re so different?

I’m repeating myself here, but repetition is the best way to learn anything, so let’s go again. Difference tends to cause us to build walls. Often we do not do so intentionally, but humans are animals, and there is a base tribalness to much of what animals do. It should not surprise us that we like to be with our own kind, to have our ideas reinforced, to spend time with those we’ve shared experiences. But that gets to the crux of it. Share experiences with other people. Embrace our tribalness to create connections with people who are currently strangers. This is not radical acceptance. If you believe that abortion is a sin against your chosen diety, that is not a good place to begin acceptance. Rather, why not talk about youre experience with your children? Talk about sports, the weather, and begin to ask questions.

Do you know where the members on your board were born? Where they were raised? What they personally believe? The stand out experiences in their lives? Their favorite books? Movies? What they love? What drives them crazy? These are not retorical questions. Nor are they questions that I have asked yet. So no need to feel bad. Being an accepting and welcoming human being is difficult preciscely because of our earlier manifestation as uncooperative animals. But by some miracle have developed the skills of discernment and cooperation, and we should perform social exercises to keep our open-ness well conditioned.