Tools4 min read

Tools I actually use every day

Not the tools I should use. Not the tools that look good to mention. The things that are actually open on my screen when I'm building something.

Surya Prakash

Software Engineer & Designer

Every few months someone asks me what tools I use, usually after seeing something I've built. I always hesitate because the honest answer is boring and the interesting answer would be a lie. So here's the honest one.

Editor

VS Code with about six extensions. Vim keybindings (VSCodeVim), ESLint, Prettier, GitLens, and a theme called Catppuccin Mocha that has been on my screen so long it's become invisible. I've tried Neovim twice. Both times I lost more time to configuration than I saved in editing speed. VS Code works. The iteration speed of switching tools has a real cost.

Terminal

Windows Terminal on Windows (obviously), with a WSL2 Ubuntu instance for everything that matters. I do not use PowerShell for development work except when I have to. Fish shell for interactivity, Bash for scripts because I don't want my scripts to require Fish. Starship prompt because it shows me what I need — git branch, exit code, whether Node or Python is active — without asking me to configure much.

My Starship config is basically nothing
toml
# ~/.config/starship.toml
format = """
$directory$git_branch$git_status$nodejs$python
$character"""

[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"

[directory]
truncation_length = 3
truncate_to_repo = false

Database GUI

TablePlus for MySQL and PostgreSQL. I used DBeaver for a while. TablePlus is faster to open, faster to query, and the UI doesn't feel like a Java application from 2008. Worth the price.

API testing

Mostly just the terminal. curl with jq for quick checks. For anything involving a session or complicated auth flow I'll open Bruno — an open-source alternative to Postman that stores collections as plain files in your repo, which means they show up in git diff and work with your existing tooling. I switched to it about a year ago and haven't looked back.

Monitoring

UptimeRobot for uptime checks (free tier covers everything I need), Grafana Cloud for dashboards, and a Telegram bot for alerts. The bot integration is maybe ten lines of bash. I get a message when a server disk fills up, when a site goes down, and when a server's load average spikes. Three checks. They're enough.

The best monitoring setup is the one that pages you when something is actually wrong and is silent the rest of the time. Alert fatigue is real and it will eventually train you to ignore your own alerts.

The one thing I wish more people used

Git aliases. Most people type full git commands by hand. I have `git st` for status, `git lg` for a readable one-line log, `git uncommit` for undoing the last commit without losing the changes. Each alias saves maybe two seconds. Across a day of active development, that adds up to nothing measurable. But it reduces friction, and reducing friction matters for flow.

The aliases from my .gitconfig
toml
[alias]
  st = status --short --branch
  lg = log --oneline --graph --decorate --all -20
  uncommit = reset --soft HEAD~1
  aliases = config --get-regexp alias

None of this is novel. If you came here hoping to discover some secret tool that would change how you work, I'm sorry. The secret is using fewer tools, knowing them well, and being honest about what you actually open versus what you tell people you use.

Surya Prakash

Software Engineer & Designer

I build software, run systems, and design interfaces.