Every year, I post on the software tools and workflows I’m using. I always pick up tips from seeing other people’s posts outlining their tools and workflows and it’s helped tweak and improve my toolchain to squeeze out extra productivity. This is what the end of 2019 looked like in tooling.
I’m always mildly surprised when I do this post how much my setup evolves over the course of a year. Sure, there’s innovation in software, and slow changes are often the hardest to see, but as I’m always trying to simplify things GTD-wise changes can be pretty dramatic year to year. For the interested, you can see the 2019, 2018, and 2017 editions of these posts as well if you’re digging for some better ways to do things, especially as we’re in the new year (and decade!).
I’m still using my now-too-long-in-the-tooth, trusty 2016 Macbook 12” which is well over its viable lifetime and needs to be retired, though I’ve been unable to find a better machine to replace its hardware use case and advantages for my particular needs. At this point, PC laptops seem to be going in the opposite direction to what I want, so I am punting and getting a maxed out Macbook Air very shortly (since most of my computing is cloud based for heavy lifting.). While I would like to experiment a bit with some novel approaches to me being productive (iPad Pro, Pixelbook with ChromeOS etc) finding the time and dealing with similar lock-ins mean it’s more an academic exercise.
Simplifying last year meant focusing a lot more on cross-platform capabilities and moving productivity and workflows into the browser, emacs, or terminal. About 90% of my daily driving works flawlessly in linux as well but it’s the 10% non-daily that doesn’t and friction points with the linux desktop keeps me on OSX. And yes, I’m still surprised I am using emacs. Real work I do still revolves around my desktop since its where I do most of my writing and planning. I use my mobile phone as more of a client for capture and to reference files and systems than real productivity getting work done.
Convenience apps and interface on OSX are what makes it a superior user experience to linux. All these applications make a big difference and if you’re not using them, I’d check them out.
Alfred is damn useful. Launcher, clipboard and snippet manager, calculator, File Mover, search shortcut, and has a workflow system I abuse to not break flow and add
TODOs to my emacs org-mode inbox. Hotkeyed to
⌘-Space it’s now muscle memory. I really miss it on other peoples’ OSX and when I’m on a Linux machine (where there is no integrated clipboard manager or snippet manager to integrate well with Albert which does similar, but fewer, things on linux.).
While OSX’s native Terminal.app has closed the gap with iTerm2, iTerm2 has crisper text display and for command line work, legibility and aesthetics matter (on linux, I really like guake‘s rolldown HUD though Tilda is another option there.).
I switched last year from bash to fish (the friendly interactive shell, which has made me more vastly more productive in shell. Being able to script sanely is a big bonus amongst its other user-centric features.
Package management is handled via the excellent Homebrew on OSX.
I make the terminal doubly effective using tmux with
tmuxp as a configuration manager to make moving
between CLI apps effortless and quick (and recoverable in a crash with the startup command
tmux attach -t C || tmuxp load ~/.tmuxp/c.yaml or to have it boot up my saved tmux pane config.). In OSX, I have the terminal full screened and use fast window switching hotkeyed to
CTRL-➜ (though I’d prefer something more like Guake or HUD). If you do use the CLI a lot, please make sure to peruse the CLI apps section below.
I’m a big fan of Mozilla working hard to keep the internet free and open, and not a fan of ad tracking, so this is my choice even though Safari is a slightly nicer user experience on OSX. Firefox also has some fantastic plugins available (like One Tab) which keep me using it. On FF, I’ve stripped everything out of the tab bar to have a minimalist button bar, use compact mode, and the stock Dark theme to make it work well on my little 12” screen.
I abuse Firefox’s integrated Pocket functionality (I pay for Pocket), but these are the other Extensions I recommend to make your life better:
- One Tab Sucks all your open tabs (except those pinned) into a single tab for later perusal. Super handy and way better than bookmarking.
- Simplify Gmail plugin Takes all the cruft out of Gmail (if you use the web interface) and makes it faster, slimmer, and more usable. Love it.
- Video Speed Controller I tend to watch screencasts, talks, and lectures on a 1.5X speed. This makes is super easy to do that.
- uBlock Origin Firefox’s tracking blocking is already good. This makes it even better.
I would mention that occasionally the plugin process on Firefox eats an unbelievable amount of memory according to
htop on my system. So, I sometimes have to kill it and restart it if my system seems sluggish. Can;t figure out what causes slowness, but seems plugin related.
Neckbeard jokes aside, the central role emacs has in my GTD workflows surprised even me after a year (note below that I end up using VS Code for actual coding). It comes down to a trio of features on top of its ridiculous customizability:
- Deft and Org-mode
- Ridiculous customizability
Org-mode for documents acts as a structured text format which is hierarchically based. A better markdown though focused on structure, rather than human readable text (though it is also that). Effectively,
* denotes hierarchy in docs making for ordered, coherent representations that you can fold and unfold in place to focus on info needed.
Paired with Deft which is a Notational Velocity clone which simply allows you to type to filter for relevant documents and (if none exists or you need a new one) create them with a simple keystroke ends up providing a means of ubiquitous capture and search that I find ridiculously fast and easy. I have switching to emacs hotkeyed in OSX and Deft hotkeyed to
CTRL-d in emacs. Fast for capture, fast for search, ridiculously organized, and resilient, not to mention future proof as everything is just plain text.
Org-agenda is the second leg of the three-legged stool. Org agenda is a date- and tag-aware collector that vacuums up a collection of org files (in my case, in directories), processes them, and then spits out an agenda of all the
TODO keyworded items (
WIP etc) buried in the files. It’s default mode is handy, but I’ve paired this with org-super-agenda which allows me to craft a particular view which has let me meld org-agenda’s charms with Taskpaper’s awesome tagging system. Due items show up in a nice, warning orange, things far away are greyer, and overdue items are in red (at least in the doom-theme I’m using.). Very handy for your dailies. I still need to craft a more useful weekly and monthly view that gives me just the info I care about at that high level.
Which brings us to the customizability. Quite frankly, while you need to dive deep, the benefits are huge. For example, one of my big beefs with Taskpaper was that it was not date-aware. Org-agenda has this out of the box, but anything not dated is then ignored. I use tags much as I did in Taskpaper to denote weeks for things in the form
w04 for week 4, and have
org-super-agenda set to display a list of things I had set for week 4, including a lightweight CRM system tied to my contacts file which reminds me to keep in touch with certain people more holistically than direct Todos related to them.
Technically, there are mobile apps which can help you manage this kinda complexity in emacs, but I don’t find any of them as effective as managing things from my desktop. I do use Beorg, but find it’s more useful for capturing on-the-spot
TODOs into my Inbox than managing a large complex list of tasks and deadlines. As I use Dropbox to keep my org files in sync across machines and the mobile app I sometimes find if I do anything more than have this add things to an inbox file, I get conflicts, but as long as I handle this via inbox, it seems to work fine. it’s handy for reference as well when I need to look up something.
There are a bunch of things I wish emacs does, or does better, like allow me to write and sync directly to Google docs rather than as a file export (so I have one canonical source of Goog docs - which my org runs on), craft presentations more easily than with
reveal.js, or have some of the nice sharing capabilities of Notion (which some on my team like.). It is an imperfect beast, but as a tool I like it for what it allows me to do well, and I try not to go too far down the rabbit hole of trying to do everything in it as some do (the joke about it being a good operating system with a poor text editor is not far off.).
Useful services enhance my workflow and desktop/mobile experience. Most of these either have a menu bar app or browser plugin which makes them relevant but keeps them out of the way of GTD except when needed.
Dropbox is ridiculously useful as its client allows me to symlink from my desktop machines to make sure I have a consistent config and files in sync across OSX and Linux and with my iPhone. This effectively gives me a syncable setup for CLI apps and important libraries (music, videos, etc). Sensitive things are gpg encrypted and I’m even using a selective sync folder for doing encrypted backups via Arq below. This is on top of its already unmatched ability to share things securely and easily. Worth every penny imho despite the recent cost increase.
My roles and work often mean I can’t trust public (or even our office) wifi, and with me on the go all the time, I need to make sure I am secure. NordVPN is trouble-free, unobtrusive with its menu bar-only mode, and guarantees no tracking or logging. Most importantly, it gets me round geoblocking for sites (ok, mostly Netflix, I admit.). Nord seemed to be the most reliable, had very wide country coverage, and offered a huge 3 year discount plan which I took advantage of (and which I think is still available). For no-nonsense, reasonably priced, and available VPN in almost all countries security, it’s a good option.
After a decade working for organizations often attacked by state-sponsored actors (Amnesty, Greenpeace, GetUp), though, I take security seriously so am taking a look at the Algo VPN and Wireguard projects for lightweight, reliable, and performant DIY VPNs that are self-hosted and don’t require a provider to depend on for security.
Arq has been a great, no-nonsense backup client. If you are not backing up regularly and automatically, your immediate urgent takeaway from this post should be to sort that out. Today. Your data is vastly more important than your hardware (which is practically a commodity at this point). If my hardware dies or is stolen, I grab another machine, bring down the backups, and restore my system setup (I haven’t geeked out enough to automate it, but it’s pretty close.). Downtime is virtually negligible.
Arq stays out of the way and once configured dumps block level, encrypted backups, in the background, on a schedule you specify, to a specific storage media (for me, a non-syncing Dropbox directory.).
Restores are painless. And yes, backups have saved my bacon in a catastrophic hardware failure that happened (in Tonga, of all places. :-/ )
This is an undervalued service from the Mozilla Foundation and integrated directly into Firefox, so it, combined with One Tab, makes an excellent long term storage and “junk drawer” for filing items of interest away for the longer term with tags. I find its recommendations for content less useful, but as a bookmarking app which will also allow me to get my data out if required, I find it great. I’m a paid customer so I get fully archived bookmarks.
Command line apps are actually small superpowers. More people should get proficient doing things on the CLI.
Habitctl is a minimalist habit tracking app that I have to say I’ve been really enjoying. The app provides a simple way to track habits, a nice text-based log file as a data source, and a clean consistency graph of your habits so you can spot patterns and get an idea of how you are tracking. Quite loving this though the developer has largely abandoned it so I had to fork and add in support for skips, warnings, and fix a big time-zone bug (last I checked, PRs still had not been merged). I’m happy with it now and like how it separates out my habits and provides the nice graph. It has replaced emacs org-habits for me (which, if you are an emacs power-user, might be all you need.).
Newsboat (formerly Newsbeuter) is a great CLI app for ripping through rss and atom feeds. I prefer this to every GUI newsreader out there (and yes, I know I could use emacs). You should really try it. I actually lament the fact fewer sites are providing rss and atom feeds as they try to track more through email newsletters and paywalls, but it makes me hyperefficient for shredding through the technical articles and journals that I have to keep up with for my day job and technical skills. Try it!
Passpie is an excellent, simple password manager in a nice plain text directory structure that is encrypted, has a master password, and stored in the open. Easy to use, very responsive developer, and works pretty much flawlessly. I keep thinking I want to re-implement it in Crystal or Rust since it is a pokey in python. Works great though it doesn’t have a browser plugin like 1Password or others in that ilk.
pass is another alternative to this but seems clunky in comparison (Note that both passpie and pass both work in conjunction with gpg. I prefer passpie because you can store your database out in the open and git version controlled but the security of your passwords are dependent on the strength and complexity of your passphrase.).
GMVault backs up my mail in case the Goog catastrophically does something to my mail or account. It keeps a nice updated sync of my systems which I update every day via a running cron job and which is backed up via Arq as well I wrote a post on enabling cron back on OSX which still works great in Mojave btw). And here’s a nice little code snippet for you if you ever need to search through its archives for old mails
find ./ -name \*.eml.gz -print0 | xargs -0 zgrep "STRING to SEARCh FOR"
Ledger is a bit of a new experiment since perviously I had a lightweight, automated system for managing my finances which ran pretty much on autopilot. Somehow though, I did not hit my savings targets for last year, so am seeing if a bit more rigour around tracking would help vs the time investment needed. Looking at options, I figured I’d try a simple, text-based, double-entry accounting system to see how it goes. Ledger’s been around for years. It’s stable, powerful, and even has an emacs plugin for making entries effortlessly, so hoping it helps with course correction and such (I’d also love to hear about other text based, simple finance tracking systems people might have.)
Other Useful Tools
Visual Studio Code
Microsoft have done a great job here. I end up reaching for VS Code on OSX for coding and writing purposes (this blog post, for example). Great plugin ecosystem, integrated git, and a built-in terminal are wins though it’s slightly slower than Sublime Text (whose speed and clean interface I loved). The VS COde interface is a little cluttered for my 12” Macbook’s screen but these are quibbles. Fact is, if someone had a good Notational Velocity plugin and a serviceable org-mode and org-agenda mode plugins for VSCode, I’d switch from emacs. Solid, easy to write in, and painless to configure as well as having nice themes to make it so very, very pretty (which is not at all trivial on emacs). Oh, and works on Linux as well. If you haven’t tried it yet, you should.
Calca is one of those absolute gems of an application you don’t even think you need till someone shows you how many problems it would solve for you. Love this little app and was very glad to see the developer bump it last year to 64bit since I was seriously concerned it was abandonware. Succinctly, it’s markdown that understands math and named variables - which is way more awesome than it sounds, I assure you. You can use this to replace a whole range of spreadsheets and be much surer you do not have errors in them (which was a huge problem at my last job and current one.). Find it ridiculously useful for estimations, budgeting, projections, and a range of sensitivity analyses. Please do try it out if you do any of these things.
Nothing as useful exists in Linuxland imho. I’d love to figure out a way to make this work as an emacs mode. Making it work with org-mode docs and math should be pretty doable. I might take this on as a project when my lisp-fu is up to tackling something of this magnitude (and I can make time.)
The Clock 3
The Clock 3 has a nice drop down calendar view and allows me to add clocks for world locations I need to coordinate with. Handy. Most Linux distros come with the drop down cal these days from the menu bar, but still looking for a nice global time app with this much convenience if you know one.
Transmission is still my bittorrent client of choice. Simple, fast, secure, no-nonsense, and lightweight. I do think the OSX version is superior to the Linux version as the interface feels ugly and clunky on Linux, but works as advertised.
VLC and Jellyfin
VLC works cross-platform and despite a slightly strange interface is great for reasons like being able to speed up and slow down playback effortlessly, and being able to play almost anything.
On my Macbook, I often use Jellyfin which is a free and open source streamer to then stream videos to my TV from the laptop. Clunkier TV interface than it should have but works pretty flawlessly as long as the video is compressed well. I generally use VLC on my AppleTV and use Jellyfin as a streaming source and then play videos that way. Super handy to get stuff on the big screen and more reliable than Apple’s quirky Airplay from Quicktime to the AppleTV. YMMV. This also works great for screencasts of technical videos where I play them on the TV while coding along on my laptop from the couch.
Containerization should be your default at this point if you develop code or if you’re a data scientist. It makes life so much easier as a developer and the ability to deploy to services like Heroku or Kubernetes this way is a blessing. The OSX Docker install has a great menu bar app to control things and makes everything that little bit easier.
iTunes was a car crash of an application design-wise so I was glad to see Apple replace it in Catalina. I want to find something better and simpler that is cross-platform since all I want is a music player that displays album photos, makes it easy to find and source new music, streams to my bluetooth speakers, and syncs to my iPhone without buying into an entire Apple ecosystem. I’m less upset with Music.app but I believe I can do better when I have more time to look (for example, Noise, the music player from the elementaryOS project works great on Linux and is well designed.).
Photos became more irksome. I want photos albums and bidirectional syncing between my mobile phone and laptop. Being forced to do this through Apple iCloud and then having them ML and mine all my photos I find slightly annoying. I can’t find anything I like to replace it at the moment I trust though I do want to move to something that has better longer term prospects and is more open source and cross platform. So far, I’m unhappy with the alternatives in this space and most of them choke on the 40k+ photos I have in my library (going all the way back to 2001. :-/ ).
GUI > CLI for simple database interactions that don’t require scripting.
I ponied up cash for Postico which works as well as it needs to. Heroku uses Postgres natively and it’s handy for making changes or when making changes locally.
Robo3T ends up being my mongo client when I do use MongoDB though that’s mostly due to node projects. It also works well with MongoAtlas which has doubled its usefulness.
My MySQL has tailed off as I’ve started using cloud stores, but for local dev SequelPro, the successor to CocoaMySQL (which was great), is your go-to here.
SQLite is a hideously undervalued and robust databases. If you’ve never looked at it, you really should. There is now even a distributed and very fault tolerant SQLite for larger applications. It is a nice simple choice for local dev or desktop or mobile apps. For a GUI for it, you can use DBBrowser for SQLite which is a very serviceable GUI interface to it.
Is something I use but am constantly wishing for something simpler, better, and to be honest, think the newer versions are a big step down from the cleaner, simpler, older 1.x version (which used to work with Dropbox). In fact, I’d go so far to say my usage is grudging since I am not even big on the mobile app but recognize its utility (I like the idea of a photo a day for journal entries in the display as well as some of the utility features like grabbing your GPS coordinates, weather and other niceties.). If jrnl incorporated pictures and had better search, or org-journal on emacs had encryption I felt was a bit less “it’s just a text file so gpg it” and easily embeddable pictures, I’d switch pretty quickly (right now, I use org-journal for logs to just keep track of my day, rather than the narrative on how I’ve reflected on days.). Much like some of the other personal projects I don’t have time to get to, I often think of re-implementing jrnl in Crystal or Rust to do what I want and going from there. Course then I’d need to build a mobile app, too.
I tend to not like any of them. I do like Apple’s Keynote over Powerpoint (ugh) or Google presentations or other more geeky options (like reveal.js). I find that they’ve made good aesthetic default choices which makes me think much harder about overriding them in the presentations I’m making and it’s easier to handle on my laptop with its smaller screen. Plus the drawing tools are easy to bend to your will. Keynote is probably the only piece of traditional office suite software I like to use. Excel I am often forced to use because of Finance and accounting groups though I feel by far it’s most useful feature is its data filtering feature. I dislike Word, but am forced to keep a copy due to it being the default amongst lawyers and such types (who abuse its change tracking).
Mail and Calendering
I use the Google suite. I don’t use a desktop client anymore. I have pinned tabs in Firefox for mail and calendar and use the excellent Simplify Gmail plugin to compact and make the interface vastly more useful. Add the keyboard shortcuts available (and enabled) and it makes me super efficient at shredding through emails and getting down to Inbox Zero. It is sad there is something not as useful for GCal (which still feels clunky at times though experimenting with an Alfred workflow to make that easier.). On the iPhone, I use the Gmail and Google calendar apps which easily deal with multiple accounts (this would be super helpful on the GCal web interface since you can’t overlay other accounts which makes managing personal with work events cumbersome.).
Bear is handy, speedy and a delight to use. Really this gets used because I often quickly type notes into my phone and then this syncs via iCloud to my desktop app (strangely, mostly for transfer to ematcs org-mode files.). Yes, I could use another app like 1Writer for this, but despite me begging the developer, he has not implemented native org-mode for 1Writer which makes editing org-mode docs directly on Dropbox a pain. Would love an org-mode grokking, Dropbox syncing, iPhone text editor if anyone knows of one with the ease and delight of use of Bear. I do have occasional conflict problems where iCloud seems to lose its mind (not Bear), but these are say, once a fortnight or so and assume are Apple’s iCloud’s service related and not Bear.
And I think that’s about it. Most other choices are things I use sparingly, grudgingly, or marginally (for example, MS Office because I’ve been sent doc or xls files.). Tweaking app selection for your most important tool can have surprisingly positive productivity effects. I hope you made some discoveries in the post above or I convinced you to try some apps you might have been on the fence about or unaware of. If you did, lemme know! Always curious to hear how it’s gone for people or hear more about what works for you and your workflows. Feel free to mention me on twitter @awws to let me know.