I’ve been meaning to write up something more comprehensive about the Free Software tools I use daily to help me work remotely or with distributed teams. I have no idea if this will be interesting or helpful to anyone but my hope is it might in some small way…
In B.C. (Before Coronavirus) time I was already working towards being able to work from anywhere. One of my personal computing goals is to be as computer-agnostic as possible.
I think when computering, most people are focused on the software they’re using and not as much the underlying OS (if anything I’d bet the primary interface to the OS and filesystem for most would be a file manager). They want to use particular programs to get their work done and if the programs are cross-platform the OS just fades into the background. As I believe it should be—just get out of my way and let me get to work! :)
On that note, I wanted to talk about the programs that help me get work done!
(Note: all of these programs/projects are Free/Open Source Software, which is a primary requirement for me, as well as cross-platform.)
I’d say that the majority of my work, both personal and professional, is centered around writing things. As such I like to have an environment that I’m comfortable and familiar with. This goes for writing prose as well as writing code. For this purpose there really is only one editor for me: Vim. (Come at me, Emacs!)
The bigger point, though, is to invest time learning a tool that you feel the most productive in and can get the job done for you. Some people may use a different editor for certain tasks and that’s just fine! The important thing is being comfortable in your editor. (It’s one of those things when if you get into a good groove of writing or working even the editor itself hopefully fades into the background.) It’s also important that your editor can allow you to grow into better or more efficient work. A simple text editor (Notepad, TextEdit, etc.) may be comfortable but lack the ability to expand and grow with you.
Conversely, some editors have a ridiculous amount of capability and expandability but have a correspondingly steep learning curve just to get started using it. Vim is one of those but I feel there’s only a small initial learning curve to get the absolute basics down, and the payoff later is huge for productivity.
What’s the old joke?
I’ve been using Vim for about 2 years now, mostly because I can’t figure out how to exit it.
After all: 1 in 20,000 visits to Stack Overflow is to figure out how to quit Vim).
Honestly, just 20-30 minutes of time with
vimtutor is enough to let you do as much as you could in something like
notepad but you’re building a foundation for some ridiculously efficient text editing later on.
Plain Vim is rather sparse as an interface for writing. Luckily some much smarter folks than me produce some fantastic plugins that have made my environment much nicer for writing. These are not essential for using Vim to write, but they make the overall experience so much nicer for me.
Goyo is described by it’s author, Junegunn Choi, as Distraction-free writing in Vim and boy does it deliver! This is mostly a visual upgrade to Vim for writing but it does make a world of difference when writing to have something pleasant to look at. (If it’s ugly, and you don’t want to look at it, you’re less likely to actually use it.)
junegunn also creates an even more focused plugin for writing called limelight.vim that mutes the colors of lines not currently under the cursor (so you can focus on the sentences that you’re currently writing better).
My font of choice when writing prose is Cousine by Steve Matteson (seen here). For code or most other uses I like to use hack.
A pretty editor is only useful if the functionality is there and this is managed quite well by Reed Es and his fantastic vim-pencil plugin! This is the plugin that makes the markdown in the screenshot above look great (concealing in Vim) and also provides great line breaking options (and much more).
He also produces a neat plugin for checking language usage to avoid weasel words, excessive adjectives, and more (16 different dictionaries covering different types of word usage) called vim-wordy. It’s a great tool for checking your writing and getting you to think about clarity and succinctness.
One last plugin worth mentioning quickly is a simple one (out of many) from Tim Pope: vim-surround. This provides a much easier (to me) method of deleting, changing, and adding surroundings to text (parentheses, quotes, brackets, markup, etc.). There’s not really any neat animated gifs to show off here. Just a very handy new set of mappings for quickly dealing with surrounding elements.
I’ve written about Nextcloud previously here and I’m happy to report that it is still working perfectly for me! As I mentioned previously, my major use cases are simple:
- Temporary file sharing
- Storing my ebook library and syncing for Calibre
- KeepassXC password database storage and sync to all my clients (previously about KeepassXC)
- Automatically uploading photos from my phone to my home server.
As a drop-in replacement for something like Dropbox or Google Drive it’s perfect. Especially for being able to control my data on my own server and not worrying about it being scanned or data mined (plus upgrades to more drive space are dirt cheap). I also gain a nice collaborative markdown editor and other perks (calendars, contacts, my own maps service and more).
There’s a Nextcloud client for all major platforms (desktop and mobile) which means I have access to all of my files on any machine I want or at least web access to those files through a browser if needed.
Joplin and jrnl
A nice perk of having my own file syncing service is easy use of tools that leverage it. In particular I’ve been looking at journaling and note taking options.
I spend much of my time at least SSH‘d into my server at home for various reasons (port forwarding things that a firewall restricts me from doing, using SSH as a sort of poor mans tunnel, and other nefarious activities). As such I thought it might make sense to have a journaling system in place to let me access it from my SSH session if I wanted. Plain text is nice as it lets me easily search and filter my entries and of course it allows me to use that fancy Vim environment to do my actual writing.
I had originally looked at using the neat application Joplin for this, but was slightly put off using the GUI to manage the notes and notebooks.
It definitely has a neat interface and uses the concepts of “Notebooks” to collect notes and to-do lists. What I didn’t like as much was the plain text files for the notes are stored as hashed filename markdown files:
pat@mother ~/Nextcloud/Joplin $ ls -1 0792d9698eef4a9797ff1c22be31a4f6.md 0d3248bfff3f4c75893ed78b1a0c9d04.md 0d80d7400ece4c1e92ee3fad7a07bbc2.md 0faac5399f984d3db1139bdb4ecd9221.md 1069385084794e239690124c68ea12e7.md ...
I could still use tools to check the text quickly, but it’s just an ugly view of the notes from the filesystem. Of course, if you use the actual application it all looks quite nice and orderly. So I may be nitpicking here.
I do confess to not having quite solidified a good process for this yet. I looked briefly at vimwiki and a couple of other note taking options but I’m still undecided on this.
I had previously written about using
jrnl successfully, and I still try to write there every time I remember to sit down and take the time to do it.
At this point I think I’m due for a deeper dive again on a good note-taking solution that lets me stay in Vim mostly.
As I wrote in the
jrnl article, the hardest part is certainly not the tools but the discipline to set aside time to actually write every day if possible.
I try to make myself as easy to reach as possible in general. Email is still king in my opinion (for asymmetric communication, that is) but if someone wants to reach me right now I can usually be found on IRC (old habits die hard). The best places to reach me are usually #GIMP on gimpnet or #pixls.us on freenode.
Lately I’ve transitioned to using the fancy new Matrix network. It’s a nice protocol for handling all manner of realtime communication needs (chat, telephony, video). Their client, Element, is available on all of my devices and with their IRC bridge I can keep a persistent connection to my IRC channels including notifications on mentions (this last bit is awesome as a solution to staying connected to an IRC channel on your phone).
If you want to reach me there my username is: @patdavid:matrix.org
Of course, I’m on many of the usual social channels these days and you can find those links on my About page.
I meant to write about a bunch of other tools but I figured this would get boring quickly and it might make more sense a series of smaller posts. As such, this is just a short look at my writing environment and how I pull together a handful of incredible Free Software tools to help me work better no matter where I am or what device I’m using.