My top ten productivity tools (as a Python developer)

July 7, 2023 • productivity, Python
Cover

Photo by sofia neumann on Unsplash

I know, there are already tons of articles on this topic. Nonetheless, here is my personal take on it (i.e., as a Python web developer working on a Mac). Enjoy!

1. Rectangle for window management πŸ–ΌοΈ

Before I install anything else on a new machine, I need an easy way to manage multiple windows on the screen. If you’re on a Mac, Rectangle is the perfect tool for the job. It’s free, and the keyboard shortcuts work really great. For me, it’s an absolute must have.

rectangle

2. iTerm2 with zsh and Oh My Zsh πŸ’…

If you’re setting up a Mac for development, the macOS Setup Guide by Sourabh Bajaj is a great resource I’m always comming back to. He recommends using iTerm2 with zsh and Oh My Zsh. I know a lot of developers get really fancy with their terminal configuration. For me, the default settings of Oh My Zsh work great, and I love the key bindings from the git plugin. In particular glola, which makes the git logs look awesome (don't you think?)

glola

Note: There is a nice blog post by Michael Hoffman suggesting a similar setup, and a number of other great CLI tools worth checking out.

3. pyenv for Python version management 🐍

If you work on multiple projects, pyenv makes it really easy to switch between different Python versions. You can list and install available versions like this:

$ pyenv install --list | grep "3.11"
3.11.0
3.11-dev
3.11.1
3.11.2
...
$ pyenv install 3.11.4
# set python version in current directory
$ pyenv local 3.11.4
$ python --version
Python 3.11.4

Pyenv, like many other tools, can be easily installed using Homebrew.

4. Thunder Client for API testing ⚑️

Thunder Client is a lightweight REST API client in the form of a VS Code extension. Think Postman, but without all the noise and ads. It allows you to create collections of requests to different endpoints, variables and environments (e.g. dev, prod etc.), tests and GraphQL. Katarzyna Kmiotek has written a great blog post of some of the awesome features of Thunder Client.

In the past I’ve created collections for the various internal APIs in the organizations. I shared them with my team via a git repo, which has been a great timesaver. Apparently the git sync functionality is now a premium feature, but it’s still possible to import/export collections in the free tier.

5. Notable for taking notes in Markdown πŸ“

I know, Notion is great, automatic sync, team collaboration, databases, etc. pp. …

However, if you like it a bit more basic and want to have more control over where your notes are stored, I find Notable a great alternative. It ships with great features such as multi-cursor editing, syntax highlighting and many more. You can even integrate Mermaid diagrams.

6. reveal-md for awesome slides in Markdown πŸŽ†

I’m sure you’ve heard about revealjs, or seen some amazing presentations created with it. Did you know that can use the same tool, and create stunning slides with just Markdown? Yes, you can, with reveal-md.

Check out my reveal-md starter repo. It shows some of the cool features, including different themes, sytax highlighing, animations and more.

7. Stretchly for mini-breaks ⏸️

Taking breaks is important. But it takes a lot of self discipline to actually do regular breaks, in particular when you’re super focussed on finally shipping that new supercool feature! Stetchly is an app that reminds you to take breaks by cheekily taking over your screen for a little while every now and then. It even gives some suggestions of how to use that time, for example to get a stretch, think of something else for a moment etc.

stretchly

You can configure intervals and times for mini- and longer breaks. It’s great, you should give it a try!

8. Dark Reader browser extension πŸŒ™

As developers we love dark mode. However, not all websites and browser apps offer that option. Dark Reader browser extension to the rescue! One of the good things about it is that it can be enabled for each website separately.

9. KeePassXC for password management πŸ”

KeePassXC is a great cross-platform password manager. There is also an Android app that supports the same file format, e.g. if your encrypted database is stored on Dropbox or another cloud storage.

10. llm for ✨ChatGPT✨ superpowers in your terminal

Congrats for making it to the bottom of the list! Now, here comes a real treat.

llm is a CLI tool created by Simon Willison that allows you to access large language models from the command-line. It’s super easy to use, and saves you from constantly having to switch between your terminal and the browser tab.

But hang on, it get’s even better. llm can be combined with other CLI tools from the same author, such as symbex (finding things in your codebase), strip-tags (removing html tags), ttok (counting tokens), etc. This opens up tons of possibilities, e.g. you can search for a particular function in your code base, and ask ChatGPT to do s.th. with it, like to summarize it, refactor, add type hints etc.

symbex my_special_function \
  | llm --system 'Describe this code succinctly'

Simon has written a great article (actually multiple ones, you should check out his blog) on how to use these tools in combination, just to give you some ideas.

By the way, all these tools can be easily installed using pipx. This way they are available from anywhere on your machine, no matter which directory you’re working in.

-//-

That’s a wrap. I hope you’ve enjoyed it, and that you’ll find some of the tools useful.

Now have fun using some of your new superpowers!

superpowers


Recent posts