Uses

A curated index of hardware, software, frameworks, and developer workflows I rely on daily.

Dev Environment

  • VS CodeRationale: Extensions ecosystem (ESLint, GitLens, PostgreSQL explorer) and integrated terminal. Switched from Sublime once multi-file refactoring became a daily task.
  • iTerm2 + Oh My ZshRationale: Split panes for parallel log tailing during multi-service debugging. Custom aliases for kubectl, docker-compose, and git workflows.
  • GitHub CopilotRationale: Accelerates boilerplate TypeScript (DTOs, test fixtures, migration scripts). Never used for architectural decisions.

Backend Stack

  • Node.js + TypeScriptRationale: Strict typing catches contract drift between microservices at compile time. Combined with NestJS’s DI system, this gives us compile-safe dependency graphs across 6+ services.
  • NestJSRationale: Opinionated structure scales better with team size. Module boundaries map to bounded contexts. Built-in support for guards, interceptors, and pipes reduces custom middleware.
  • Python + FastAPIRationale: Used for data pipelines and ML-adjacent tooling where NumPy/Pandas ecosystem is required. FastAPI’s Pydantic models provide the same contract safety as TypeScript DTOs.

Databases

  • PostgreSQLRationale: Primary OLTP store. Materialized Views with GIN-indexed arrays for read-heavy segmentation queries. CONCURRENTLY refresh for zero-downtime reads. Chosen over MySQL for CTE support and JSONB flexibility.
  • MongoDBRationale: Used where schema flexibility matters — user activity feeds, outlet-specific menu variants. Not used for transactional data where referential integrity is required.
  • RedisRationale: Session management, rate limiting, distributed locks (SETNX), and event deduplication. ElastiCache for managed HA. Never used as a primary data store.
  • ElasticsearchRationale: Full-text search and analytics dashboards. Chosen over PostgreSQL full-text search when query patterns include faceted search and fuzzy matching.

Cloud & Infrastructure

  • Azure Event HubRationale: 32-partition event streaming at 32K events/sec capacity. Chose over Kafka for native Azure integration and BlobCheckpointStore for partition ownership management without ZooKeeper.
  • AWS (S3, SQS, Lambda, EC2)Rationale: S3 for media storage with lifecycle policies. SQS for decoupled async processing where Event Hub’s ordering guarantees aren’t required.
  • KubernetesRationale: HPA scales consumer pods 10–20 based on CPU/memory thresholds. Chose over ECS for multi-cloud portability and Helm chart standardisation across environments.
  • DockerRationale: Every service runs identical images across dev, staging, and production. Multi-stage builds keep production images under 150MB.
  • Apache AirflowRationale: Orchestrates nightly data pipelines (POS sync, MV refresh scheduling, report generation). DAG-based scheduling provides retry logic and dependency management that cron cannot.

Monitoring & Observability

  • DatadogRationale: Unified metrics, logs, and APM traces. Custom dashboards for PostgreSQL pool stats, Node.js memory, and Redis hit rates. Alert thresholds set from production baselines, not defaults.
  • SentryRationale: Error tracking with source maps for TypeScript stack traces. Release tracking ties errors to specific deployments.

CI/CD

  • GitHub ActionsRationale: Native GitHub integration, matrix builds for multi-Node-version testing. Self-hosted runners for builds that need VPN access to staging databases.
  • GitLab CIRationale: Used on client-mandated GitLab instances. Pipeline-as-code with environment-scoped variables for multi-tenant deployments.

Security & Auth

  • KeycloakRationale: Self-hosted identity provider for multi-tenant SaaS. Realm-per-tenant isolation with federated identity (Entra ID integration for enterprise SSO).
  • OAuth2.0 + JWTRationale: Stateless auth with short-lived access tokens (15min) and refresh token rotation. RBAC policies evaluated at the API gateway, not in each service.

Communication & Process

  • JIRARationale: Sprint planning with story points calibrated from historical velocity. Epics map to system design docs; stories map to implementation PRs.
  • NotionRationale: Architecture decision records (ADRs), runbooks, and post-mortems. Searchable knowledge base that survives team turnover.
  • Mermaid.jsRationale: Architecture diagrams as code, version-controlled alongside the systems they describe. Embedded in blog posts and ADRs.