Resource | Tools, tips & tricks

Tools, tips & tricks

Tools, tips & tricks

Pushing the limits of our toolsets

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.

Some of our favourite tools (ordered by popularity)

Github-CLI

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

Using `gh pr status’ to check for relevant PR information

Oh My Zsh

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

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

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.

Google Sheets

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

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:

  • Tab completion to display options complete with man page entries
  • Autocompletion suggestions based on past history and current directory
  • Web-based configurator accessed by running fish_config
  • Included vim keybinding integration (if you’re into that)

  • Great documentation

FZF

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

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 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

This helper displays the available branches, previews the commit history and switches to the branch selected

Ansible

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

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

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)

Running git status in all nine terminals. (A more useful example would be doing deployments simultaneously)

Vim/Neovim

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

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

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

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

This does the same as above but shows a scrollable preview and opens directly to the selected line in the file

Rubymine

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

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

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

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

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

Navigation with previews and opening a file using ranger

Tmuxinator

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

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

VS Code is a fan favourite among the devs at Abletech, just a ‘few’ of their favourite extensions include:

Voted most used/useful tips and tricks

  1. 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.

  2. 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.

  3. Replace manual/repetitive tasks with scripts

  4. 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.

  5. Inspect react component in developer tools to identify it

  6. 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.

  7. Using Ctrl+Tab to switch files quickly in VS Code

  8. Create shortcuts for running tests or set up automatic triggers so you have no excuse to not be running those tests!

Conclusion

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/](https://xkcd.com/1319/)

A comic that feels just a little bit too accurate https://xkcd.com/1319/

Message sent
Message could not be sent
|