Our dev team recently sat down to share our favourite tips, tricks and tools. This resulted in great conversations and everyone went away with more tools, and productivity or workflow tips & tricks, on their tool-belt. We would like to share these here so you can benefit too.

github-cli is a must-have for any terminal-based developer that uses Github. It aims to bring all the things you need from the github web interface, right to your terminal.
*Using gh pr status’ to check for relevant PR information*
Oh My Zsh is a framework for managing your zsh configuration and has many plugins/themes, for example, the git plugin, which you can configure to show you information about the status of the current repository such as uncommitted files, unpushed commits and which branch you are on. Oh My Zsh makes these plugins/themes far easier to install and manage than if you were to do it manually.
autojump’s claim to fame is ‘a faster way to navigate your filesystem’, it allows you to start typing a path and jump there automatically, it does this based on frequency, recency and current locality. The more you use it, the more it learns and the faster and more accurate it becomes.
asdf is a version management tool for installing and managing software. The list of plugins asdf supports includes most programming languages and lots of other tools such as docker and terraform. One of the most impressive things about asdf is that you can specify directory dependent versions, this means you can seamlessly use two different versions of a programming language across projects.
In the right hands, google sheets can be a more powerful tool than you may think. Our resident sheets whizz Sooz uses it as a colour-coded planning tool to see an overview of what is going on at any point in time.
fish** **is a shell which can be used as an alternative to other popular shells such as zsh and bash
Finally, a command line shell for the 90s
although fish was released in 2005 their tagline is a play on the fact that the other two previously mentioned shells were released in the 80s. Fish aims to be a modern shell with ‘sane scripting’ that just works out of the box. Some of the features include:


fish_config
Included vim keybinding integration (if you’re into that)
Great documentation
fzf is a command-line fuzzy finder tool which allows you to search through a list of input. Because you can pipe in any input and utilise the output however you like, the possibilities are almost endless. It even supports previews, which can contain whatever you want whether it be git commit messages or file contents. A favourite here at Abletech is one of the shell extensions that come with fzf, Ctrl+r, which launches fzf with your command history.
Using fzf to search the files in a git project with a scrollable preview
This helper views git log history, previews the commits and prints the hash of the commit selected
This helper displays the available branches, previews the commit history and switches to the branch selected
ansible is an IT automation system which can be used for automating small tasks or automating a complete setup of your workstation. When you have to set up a new computer, you can be up and running within minutes.
Storybook is a UI component building tool for frontend developers that supports many languages. An advantage of using Storybook is that it is easy to mock without having to set up a backend and can handle large datasets otherwise impossible locally.
tmux is a terminal multiplexer, this means you can create multiple terminals to be accessed and controlled from a single screen, you can even close the window and then carry on from where you left off at a later date. If you need to run the same command in multiple different files or directory you can use synchronized mode which does the same thing in as many different terminals as you want.
Running git status in all nine terminals. (A more useful example would be doing deployments simultaneously)
Vim (VI Improved) is a terminal-based text editor which has a long history, it was released in 1991 as a replacement for an older editor called VI which dates back to 1976. For something to survive that long it’s got to having something going for it right? And that it does. It is a powerful text manipulation tool that many swear by but it has a notoriously steep learning curve as it is nothing like what you’re used to. Neovim is a fork of vim that has an emphasis on extensibility, usability and is a drop-in replacement for vim. Neovim adds a few speed improvements, quality of life changes and sensible default settings. I would highly suggest using vim-plug for all your plugin needs.
Vimium is a browser extension to add vim keybindings to your browser. Even if you don’t use vim, this extension is still worth downloading as it allows you to navigate in your browser using your keyboard.
ripgrep is a command-line tool that recursively searches for a regex pattern and can be used on file names or file contents. It pairs excellently with fzf. For example, the following command will search the ~/Documents directory recursively for any match of result and then let you select an option in fzf. The last part just filters the output to print the filename which can be used to open the file in your favourite text editor. Once the options show up in fzf you can even filter the search further.
rg 'result' ~/Documents/ | fzf | awk '{split($0,a,":"); print a[1]}'
An example of using the command mentioned above
This does the same as above but shows a scrollable preview and opens directly to the selected line in the file
Rubymine is an IDE for ruby and rails development that comes with great defaults and many additional plugins available for download. Things like test runners, git helpers, project search/replace and project navigation all come standard with fantastic integration. It really can be your one-stop shop for development if you make it so.
Alfred is a replacement for the launcher in Mac OS. It includes extra features such as hotkeys, text expansion, custom actions and web searching.
Boostnote is a markdown editor marketed as a note-taking app for programmers. It has the ability to take screenshots and have code snippets within notes.
Microsoft todo is a todo list application that features a daily planner, task management and shared todo lists which can be used together with co-workers or family members.
ranger is a command-line file explorer the utilises vim keybindings. It is a very useful tool for exploring directories and previewing/managing files from the terminal.
Navigation with previews and opening a file using ranger
tmuxinator is a tool to manage tmux sessions and create reusable layouts. I have a separate tmuxinator configuration file for each project where each configuration opens a unique set of tmux windows/panes in a specific directory.
This script allows me to select a project using fzf and tmuxinator. Once a project is selected it will either connect to the existing session or create a new one. It opens a default layout which includes two windows, the first of which has two panes with the first being ranger the file explorer mentioned above.
VS Code is a fan favourite among the devs at Abletech, just a ‘few’ of their favourite extensions include:
Settings Sync: sync your VS Code settings to a git repo
Git History: pretty git log
Git Project Manager: switch between git projects
Git Tags: manage git tags
Git Tree Compare: compare git branches
GitHub Pull Requests and Issues: open PR’s and issues from VS Code
GitLens: inline git blame annotations among other things
Open in GitHub: jumps to the current file/line in GitHub
Generact: generates react components using existing components as templates
VSNotes: a markdown based note taking extension which syncs to a git repo
Coding Tracker: keeps track of dev time by repo/file
Turbo Console Log: insert logging statements for variables, can delete all generated logging in one command
React PropTypes Generate: generate prop types declaration from component signature
REST Client: in-editor HTTP client
Docker: makes it easy to build, manage, and deploy containerized applications
Use /gif <phrase> to post gifs in slack, this one is a bit hit or miss as you just have to shoot your shot and hope slack selects an appropriate gif for your use of the phrase.
Add git/shell aliases for your most common git/shell commands, this can be a big time-saver, one of my favourites is shortening docker-compose run web test which I use often to run tests to dcrt and naming folders which I find my myself navigating to a lot such as alias cd ~/Documents/Client/Project1 to simply project1 so I can navigate there from anywhere in one command.
Replace manual/repetitive tasks with scripts
Create separate profiles in your browser for separate projects, when you switch profiles it will switch your bookmarks, history, open tabs and which sites you are logged in to (with which account), this can be useful if you switch projects often. Most browsers support a variation on this functionality and some support syncing these profiles across computers.
Inspect react component in developer tools to identify it
Monthly reflection of new shortcuts/productivity tips. There are always new ways of improving your workflow which makes it a good idea to have a monthly reflection on what’s working for you and what else is working for others. If we all combine our productivity tools everyone will benefit.
Using Ctrl+Tab to switch files quickly in VS Code
Create shortcuts for running tests or set up automatic triggers so you have no excuse to not be running those tests!
Hopefully, you have found something useful in this article and maybe you will even start using it every day. If you have something to share too, make sure you let us know.
A comic that feels just a little bit too accurate https://xkcd.com/1319/