Tech Stack & Approach
The technologies I use and the principles that guide my technical decisions. Boring, proven, reliable.
Technical Philosophy
How I think about technology choices
Boring Technology
I choose proven, stable technologies over trendy ones. PostgreSQL over the latest NoSQL fad. React over the newest framework. Reliability beats novelty.
Simple Architecture
Start simple, add complexity only when needed. A monolith that works is better than microservices that don't. Premature optimization is the root of all evil.
Performance Budget
Every page should load in under 3 seconds. Every API call under 200ms. Performance is a feature, and it's measured, not assumed.
Version Everything
Code, infrastructure, documentation — if it can be versioned, it should be. Git is non-negotiable. Rollbacks should be trivial.
Data Integrity
Database constraints, foreign keys, transactions. The database should protect your data even when the application has bugs.
Test What Matters
Not 100% coverage, but critical paths tested. Integration tests > unit tests for business logic. If it breaks the business, it needs a test.
Technology Stack
Tools I use daily to build scalable systems
Frontend
Modern, performant user interfaces
Next.js 16
React framework with App Router, Server Components
React
Component-based UI development
TypeScript
Type-safe JavaScript for better DX
Tailwind CSS
Utility-first CSS framework
Framer Motion
Production-ready animations
Backend
Scalable server-side solutions
Node.js
JavaScript runtime for server-side
Express/Fastify
Fast, minimal web frameworks
PHP/Laravel
When the project requires it
GraphQL
Flexible API queries
REST APIs
Standard HTTP interfaces
Database
Data storage and management
PostgreSQL
Primary relational database
MySQL
When PostgreSQL isn't available
Redis
Caching and session storage
Prisma
Type-safe database client
Elasticsearch
Full-text search
Infrastructure
Cloud and deployment
Docker
Containerization for consistency
AWS
EC2, S3, RDS, Lambda, CloudFront
Vercel
Optimal for Next.js deployments
DigitalOcean
Simple, cost-effective VPS
Nginx
Reverse proxy and load balancing
DevOps
Development workflow
GitHub Actions
CI/CD automation
GitLab CI
Alternative CI/CD
Sentry
Error tracking and monitoring
Jest
Testing framework
ESLint/Prettier
Code quality tools
Why This Stack?
After 18+ years of building systems, I've learned that the best technology choices are often the most boring ones. The latest framework might be exciting, but PostgreSQL has been rock-solid for decades.
My stack is optimized for:
- Maintainability — Can a new developer understand this in a week?
- Reliability — Will this work at 3 AM without intervention?
- Scalability — Can this handle 10x growth without a rewrite?
- Developer Experience — Is this enjoyable to work with?
- Hiring — Can we find developers who know this?
I'm not dogmatic about specific technologies. The right choice depends on your context, team, and constraints. But I will push back on choices that prioritize novelty over stability.
Let's Discuss Your Technical Requirements
Every project is different. Let's talk about the right approach for yours.
Start a Conversation