What I use

A snapshot of the hardware, software, and small habits I actually use day-to-day. Updated occasionally — last touched May 2026.

Editor & terminal

  • VS CodePrimary editor. Workspace per project, minimal extensions: ESLint, Prettier, GitLens, Tailwind IntelliSense, Flutter, Error Lens.
  • JetBrains MonoMonospace font with ligatures. JetBrains Nerd Font variant for terminal glyphs.
  • Zsh + Oh My ZshWith git, z, fast-syntax-highlighting, and a custom prompt that shows git branch + Node version.
  • tmuxOne session per project. Three panes: editor / dev server / logs.
  • fzf + ripgrepFuzzy file search and grep — wired into Ctrl-T / Ctrl-R bindings.
  • zoxideSmarter cd. z proj instead of long paths.

Hardware

  • Lenovo Legion 5Daily driver. 16GB RAM, NVMe SSD, dual-boot but mostly stays on Ubuntu.
  • Ubuntu 24.04 LTSPrimary OS. Faster for Docker workflows and node-gyp builds than my Windows partition.
  • External 27" 1440p monitorVertical for code review, horizontal for designs and dashboards.
  • Mechanical keyboard, 75% layoutTactile switches. Function row matters for IDE shortcuts.
  • Logitech MX MasterHorizontal scroll for wide log panels & spreadsheets is non-negotiable.
  • Wired Ethernet when possibleCuts a noticeable amount of "wait, what?" out of WhatsApp calls with clients.

Backend dev

  • Node.js + TypeScriptDefault for most APIs. Strict tsconfig, no any, no implicit return.
  • Express / NestJSExpress for small services, NestJS when DI & modules pay off.
  • MongoDB + MongooseDefault for flexible schemas. PostgreSQL when relations dominate.
  • RedisSessions, rate limits, pubsub fan-out for WebSockets.
  • PinoStructured JSON logging. pino-pretty for local, raw JSON for prod.
  • ZodRuntime validation that also gives me TypeScript types. Worth every byte.

Frontend & mobile

  • Next.js + TailwindApp Router. Tailwind for components, occasional CSS modules for one-off layouts.
  • Flutter + DartClean Architecture, Bloc for state. Riverpod only when the project starts with it.
  • FigmaFor reading client mockups. I don't design from scratch — that's not my job.

DevOps & deployment

  • Docker + Docker ComposeEvery project ships with a docker-compose.yml that brings up the whole stack.
  • DigitalOcean DropletsCheap, predictable, Linux. SSH + Caddy + Docker = production.
  • VercelFor static + Next.js frontends with no backend logic.
  • CaddyReverse proxy with automatic HTTPS. Simpler config than Nginx for small fleets.
  • GitHub ActionsBuild, lint, test on PR. Deploy to DO via SSH on push to main.
  • CloudflareDNS + CDN + DDoS shield. Free tier covers most of what clients need.

Daily tools

  • Postman / BrunoPostman for collections shared with clients. Bruno for solo work — local files, git-friendly.
  • TablePlusGUI for Mongo + Postgres. Saved queries beat the CLI for one-off investigations.
  • NotionProject notes, client docs, post-mortems.
  • ObsidianPersonal knowledge base + draft blog posts in Markdown.
  • Linear / GitHub IssuesLinear for paid project clients. GitHub Issues for OSS contributions.
  • WhatsApp WebLike it or not, the primary client comms channel in the MENA region.

Open source I depend on

  • nanoidEvery ID I generate. Top contributor and grateful daily user.
  • Helmet.jsFirst middleware I import into every Express app. Contributing back keeps me sharp on security defaults.
  • express-validatorInput validation that won't surprise you in production.
  • Mongoose / Pino / ZodThe Node trio. Honestly couldn't do my job without them.
  • adhan_dartPrayer-times for Islamic apps. I'm the top contributor — it's the one I maintain most actively.

If you want to copy my setup verbatim, don't. Pick the parts that solve a problem you actually have today; replace everything else with what you already know. Tooling is the wrong place to spend your novelty budget.