Quick Summary of Recent Exploration Productivity Tools

Lately I've been exploring some productivity tools for MacOS and I thought I'd share my findings so far.  My biggest push has been learning the Vim text editor (actually NeoVim) by going through the book 'Practical Vim'.  The idea on a working day is to review a particular chapter, and go through one or two new hints.  I've also been going through the educational RPG 'Vim Adventures'.

 This exploration of Vim led me to discover various Vim inspired extensions for internet browsers.  I ended up choosing Tridactyl for Firefox and it is great; I really can browse the internet, only rarely touching the mouse.  There are exceptions however; blogger.com is being unresponsive as I write this, for example. I chose Tridactyl over others because it has the most Vim-like feel with a command line like in Vim.  I also have Vimium installed for chrome, which I can use as well as its keybindings are very similar. 

 This positive experience with these browser extensions led me to explore other mouseless ways of interacting with the computer.   The most basic one was installation of Alfred launcher for MacOs (wasn't free) as recommended by British YouTuber/doctor/productivity guru Ali Abdaal (https://aliabdaal.com/).  It basically allows you to open apps from a smart search entry triggered by a keyboard shortcut.  It is possible that the built in Spotlight could have fit my needs, but I bought Alfred, so I am using it. After launching the application through Alfred, the built in CMD+tab lets me easily switch between applications, and CMD+` lets me switch between windows of applications.  

That's already a lot of mouseless functionality, but I wanted to go further. I wanted a way to geometrically arrange windows on my screen without dragging them with the mouse.  For years I've been using Moom (also not free) which provides window snapping functionality for Mac. I did some google searches and I found out about the free Amethyst tiling window manager for Mac (available on Homebrew) I went through the documentation and even made a cheat sheet (pasted below).  But ultimately I was left disappointed by some lack of flexibility: It is only possible to resize the main window horizontally, and not possible to resize the other windows directly; you can send windows to new Desktops (called spaces in the documentation)  but there is no shortcut to create a new desktop (and neither is there one in MacOS itself). I also find the default keybindings to be cumbersome, although I could get used to them. I probably poured too much time into learning them and making the cheat sheet, and I don't want to pour any more time into making my own keybindings. 

While I was learning Amethyst I came a cross a seemingly better, although still imperfect solution called Yabai (https://github.com/koekeishiya/yabai).  It has much more functionality (see the comparison with Amethyst on the GitHub) but has two major drawbacks.  The first is that to get full use you have to disable some security features to get full functionality (although  you can use a reduced set of features that is probably still quite good).  The other is that, like may Linux tiling window managers, it required extensive configuration.  Yabai by itself is actually pretty  useless; to use it you have to manually map keys to shortcuts using the SKHD shortcut-creating extension from the same developer.  This is accomplished by writing out a text file with key bindings using a particular syntax.  I was able to get a good idea of how to do this, but I'm not ready to sink that much time into actually doing it right now.  So it's interesting, but using Yabai will just be a thought in the back of my mind for now.  I might slowly start building up capability in SKHD configuration, and slowly move into using Yabai.

So after two non-ideal solutions I think I have one that is still not ideal but suffices.  I took a second look at Moom and it actually has built-in keybindings as well.  I can snap windows left and right and also manually paint an area of the screen to move them to using the mouse.  I can also send windows to other screens.  I think I will just be using Moom with the keyboard for now.

I'll mention that there are two tools (from this blogpost: https://charlesagile.com/osx-without-mouse) that tried that I find to be ambitious but suboptimal.  Vimac doesn't really replicate the features of Tridactyl/Vimium across all OSX interfaces, although it does for some.  I find the XEasyMotion tool to be very difficult to use.  

So what do I do now?

The goal is to build streamlined workflows.  Something like the Netflix programmer/Twitch Streamer The Primagen demonstrates here: https://youtu.be/bdumjiHabhQ.  I've opted to learn a UNIX-ish way of doing things, combining Vim with other utilities (whereas I could have gone with Emacs; Emacs + Evil mode + Org Mode could be a consideration for the future,  but I'm not there yet).  As I said, I'll be using a very basic tiling window manager for now.  In addition to the learning I'm already doing, learning tmux (which stands for terminal multiplexer), which will be a great investment because I know it is very cross-platform.  For organization and task planning I might look a the Taskwarrior command line utility (https://github.com/GothenburgBitFactory/taskwarrior) which seems to be a good competitor for Org Mode. Another item on the agenda might be finding a better blogging platform that this one (one that works with Tridactyl and lets you write in markdown). Eventually, if I switch to Linux I might pick one of the excellent tiling managers available such as I3, DWM, or XMonad, but those are also big investments of time to configure (writing C code for DWM or Haskell for XMonad). I might see if there is a minimal and simple window manager like Moom for linux. Switching to linux is contingent upon the kind of work I end up doing in the future; if I'm a more hard-core developer/data scientist then it might be a good option.  On the other hand I recently watched this excellent video from Noah Kagan about his early work with Mint (https://www.youtube.com/watch?v=5L9cilUWOrE) which is a reminder to me that I should always be exploring and broadening my horizons.  Lastly, I to be productive I have to actually get things done rather than sinking all my time into learning productivity tools.


Ok this is where I am now with productivity tools for Mac! I will keep on balancing learning these tools with actually getting things done.  Let me know if you have any hints or suggestions.  Or if you think I'm crazy. 

 Goodbye!

Comments