Tools I Use to Build and Validate Software
This is a curated list of tools I rely on to design, test, and maintain reliable systems. I prioritize debuggability, signal quality, and long-term maintainability over trends.
Workstation
MacBook Pro (Apple M3 Pro)
Core toolMy primary development machine. The M3 Pro provides the performance and battery life needed for running local services, automation suites, containers, and multiple browsers simultaneously without friction.
Languages & Frameworks
Core technologies I rely on for building maintainable, production-grade systems.
TypeScript
Core toolMy default language for frontend, backend, and automation work. Strong typing and editor tooling help prevent entire classes of bugs before they ever reach runtime.
Java
Core toolUsed extensively for enterprise-grade test automation and backend validation. I value Java for its maturity, ecosystem, and suitability for long-lived frameworks.
React / Next.js
Core toolUsed for building production UIs, internal tools, and this site. I focus on predictable rendering, accessibility, and performance over novelty.
Testing & Automation
Tools I use to reduce risk, increase confidence, and surface failures early in the development lifecycle.
Playwright
Core toolMy preferred tool for modern UI and end-to-end testing. Deterministic execution, strong debugging tools, and cross-browser support make it ideal for validating critical user flows.
Selenium (Java)
Used in legacy and enterprise automation frameworks. While heavier than modern tools, it remains relevant in large, established codebases.
JUnit / TestNG
Core test runners for Java-based automation. Familiar, stable, and well-integrated into CI pipelines.
Postman
Core toolUseful for exploratory API testing, contract validation, and debugging integration issues before automation is introduced.
CI, Observability & Infrastructure
Jenkins
Core toolPrimary CI system for running automation, gating releases, and validating changes at scale. I care deeply about fast feedback and actionable failure signals.
Splunk
Core toolUsed for log analysis, debugging production issues, and validating system behavior across distributed services.
Azure DevOps (ADO)
Core toolUsed for work item tracking, test planning, pipelines, and release coordination in large teams.
Docker
Used for local development, reproducible environments, and isolating dependencies during testing.
Developer Tools & Productivity
Visual Studio Code
Core toolMy primary editor for TypeScript, JavaScript, and automation work. Extensions, debugging tools, and Git integration make it a reliable daily driver.
IntelliJ IDEA
Core toolEssential for Java-heavy projects and large enterprise codebases. Strong refactoring tools and static analysis help maintain long-lived systems.
Notion
Used for documentation, planning, and knowledge capture. I treat documentation as part of the system, not an afterthought.
Excalidraw
Used for lightweight architecture diagrams, test flow sketches, and system discussions. Optimized for thinking, not polish.
Design & Collaboration
Figma
Used to understand designs, mock ideas quickly, and collaborate with designers—primarily as a communication tool, not a design crutch.
Teams
Primary communication tool for cross-functional collaboration, incident coordination, and day-to-day testing discussions.
Slack
Primary communication tool for cross-functional collaboration, incident coordination, and day-to-day engineering discussions.
Tooling evolves over time. I focus on fundamentals—observability, determinism, and feedback quality—rather than chasing short-lived trends.
