The PE is back! It’s been a while now, hope you all had a relaxing break. I’m excited for the new year and I have lots of new ideas to share with you every week.
Here’s to the next ~50 posts for 2025! Let’s dive in.
Intro
I recently started a new role at Proofpoint, so I needed to set up my new laptop and remember all the dev tools I’ve been using before—which inspired me to write today’s post.
Whenever I’m picking a new tool, I always ask myself two questions:
Will this increase my developer productivity, and by how much?
Will it help me take on the Editor Fluency challenge?
For those unfamiliar, the Editor Fluency challenge from The Pragmatic Programmer book says:
Can you lose your mouse/trackpad for a week and go keyboard only?
With these questions in mind, here are the 12 tools I use to maximise my developer productivity.
1. Rectangle
My go-to app for window management on macOS.
Whether that be splitting windows, resizing, moving around, or entering full screen, Rectangle makes all of that possible using keyboard shortcuts! You can upgrade to Pro version, but I’m happy with the free version, for now.
2. iTerm2
Improved version of MacOS's terminal with features like global search, autocompletion, copy-pasting, profile configuration, etc.
I use iTerm2, which offers more customisation and features than the default Terminal application on Mac. Check out its full list of features here.
Terminal Theme
🔗 https://github.com/MartinSeeler/iterm2-material-design
An iTerm2 theme based on Google’s Material Design Color Palette.
To install Material Design colors in iTerm2:
Clone the repo.
Import the
material-design-colors.itermcolors
file into iTerm2 as a color preset.And done.
Gotta love the sleek look!
3. Oh My Zsh
Open-source framework for managing your ZSH configuration.
This is where your terminal can shine! Oh My Zsh allows you to optimise your zsh config file and install themes, plugins, helper functions, and more.
You can install oh-my-zsh by running:
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
Note: Running the above command moves your existing .zshrc file to .zshrc.pre-oh-my-zsh and generates a new .zshrc file. You can still access your old config file (.zshrc.pre-oh-my-zsh) and copy any configuration you want.
🔌 Recommended Plugins
zsh-autosuggestions - Pre-populates your prompt with the most relevant previous command, allowing you to hit the “right arrow” to automatically complete it.
zsh-syntax-highlighting - Highlights the commands you type, indicating whether they are valid. For example,
python
will appear in red if python isn’t installed, but turn green if it is as you type.zsh-completions - Adds additional completions, allowing you to hit “tab” for more accurate command suggestions as you type.
Check out the full list of plugins here.
4. Starship
Customising any shell prompt!
I use a small configuration that gives a simple prompt with my username, followed by the directory, git status, programming language, etc.
Here’s my starship config:
// ~/.config/starship.toml
add_newline=true
[username]
style_user = "white bold"
style_root = "green bold"
format = "[$user]($style) "
disabled = false
show_always = true
Here’s the breakdown by running starship explain:
Starship offers lots of prompt customisation and presets, you might be interested in checking out the presets available.
⭐️ Tip: Don’t forget to install NerdFonts, then go to Terminal → Settings → Profiles → Text → Font → NerdFonts!
5. Notion
🔗 https://www.notion.com/product
I use Notion everyday for technical docs, planning, notes, and research.
Create a Notion account for free, install the app, or use the web version!
Notion Web Clipper
🔗 https://www.notion.com/web-clipper
I use the web clipper to quickly capture snippets from any website into my notes.
⭐️ Tip: Notion’s Web Clipper is great for tech spikes! I use it to capture notes from developer docs, engineering blogs, latest updates, etc.
6. tmux
🔗 https://github.com/tmux/tmux/wiki/Installing
tmux is a terminal multiplexer that I use to easily switch between terminal sessions, detach, and reattach—all within a single window. It’s perfect for running commands in separate sessions using a single SSH connection to a remote server.
Here’s an example of three sessions showing logs from two servers during an HTTP request.
For practicing tmux shortcuts, check out this quick cheat sheet.
7. VS Code Editor
🔗 https://code.visualstudio.com
I used JetBrains IDEs in the past during academia (PyCharm, WebStorm, CLion) and they were excellent. However, nowadays I prefer using VSCode with a few extensions for a high-quality dev experience.
🔌 Recommended Extensions
Here are my general-purpose recommendations for any software engineer (Frontend, Backend, DevOps, QA, etc.).
GitLens - Powerful extension for interactive Git actions on VSCode.
Better Comments - Categorise your comments whether they’re todos, alerts, docs, etc.
vscode-icons - Prettify your folder structure and differentiate them using icons!
indent-rainbow for making code indentations more readable.
A Python developer’s gem! 💎
GitHub Copilot - if you’re not coding with AI, what are you waiting for?
Remote - SSH - Open any remote folder on any server on VSCode.
Resource Monitor - Display your CPU and memory usage on VSCode.
8. Postman
🔗 https://www.postman.com/downloads
I use Postman every now and then as an alternative to testing APIs with curl
. It allows you to create and share collections of endpoints (JSON) for quick and easy testing.
⭐️ Tip: If you’re working on a take-home coding task (like building an API), I highly recommend sharing Postman collections. This highlights your testing and documentation skills to the interviewers. Here’s a simple example.
9. Excalidraw
I use Excalidraw for sketching high-level designs, drawing technical components, practicing system design interviews, and creating visuals for this newsletter!
You can use it for free, unless you plan to collaborate with others at work, in which case you’ll need a paid subscription (or check out Lucidchart 🎨)
10. ChatGPT
Instead of relying on a jack-of-all-trades GPT with initial prompts, opt for a community-built model specialised in a specific domain.
For example, you can choose a programming-specific GPT for coding tasks.
⭐️ Tip: Joining a new team that uses an unfamiliar programming language? Look for a <language>-specific GPT and use it as your personal assistant at work!
11. Demo Magic
🔗 https://github.com/paxtonhare/demo-magic
If your work involves frequent terminal demos, I highly recommend this!
Demo Magic is a shell script that lets you pre-script demos in a bash environment, so you can present as if you’re typing live, without actually typing.
Think of it as PowerPoint slides on your terminal!
12. k9s
A terminal-based UI for interacting with Kubernetes clusters!
k9s is a great tool for monitoring the health of a Kubernetes cluster, enabling quick and easy navigation between provisioned resources.
While I still enjoy some good old kubectl
commands, k9s is a great alternative for quickly debugging a broken cluster.
⭐️ Tip: Use k9s to inspect Helm charts and checkout Popeye, a Kubernetes “Linter”.
Wrap Up
And these are the top 12 tools I carry with me wherever I go. This is not a comprehensive list nor a static one, especially with the impact AI is having on dev tools. I’m sure I’ll need to write another post with newer tools next year.
Let me know if you found this useful and if you have an interesting tool to share!