The Toolkit
My Technical Arsenal.
Tools I reach for in production, proficiency levels based on real project hours (not tutorials), and an honest note on how I actually use each one.
AI & ML
Where It Gets Interesting.
-
LangChain
2 yearsOrchestration layer for most LLM chains — retrieval, tool use, and multi‑step prompting in production systems.
-
LangGraph
1.5 yearsPreferred for multi‑agent workflows — graph‑based control flow handles conditional branching better than linear chains.
-
OpenAI API
3 yearsGPT‑4o on the majority of client AI features — function calling, streaming, vision, and embeddings all in production use.
-
Anthropic Claude API
2 yearsPreferred for long‑context document analysis and structured output tasks where instruction‑following matters most.
-
RAG Pipelines
2 years5 production RAG systems from scratch — chunking strategy, embedding model selection, retrieval tuning, and reranking layers.
-
Hugging Face
2 yearsEmbedding models and open‑source LLMs where cost or data‑privacy requirements rule out hosted APIs.
Database
Where the Data Lives.
-
PostgreSQL
9 yearsRelational DB of choice for structured data — indexing, query planning, and JSONB columns cover 90% of use cases.
-
Redis
5 yearsCaching layer and session store on most projects; pub/sub for real‑time event distribution between services.
-
MongoDB
7 yearsDocument store for content‑heavy projects and flexible schemas where the shape of data changes as the product evolves.
-
Qdrant
1.5 yearsVector database on all production RAG deployments — filtering by payload metadata is where it outperforms alternatives.
-
Supabase
2 yearsPostgreSQL + auth + storage for fast‑moving projects — eliminates infra setup time without sacrificing query power.
Tools & Infra
How It Ships.
-
Docker
6 yearsAll projects containerised from day one — Compose for local dev, single‑image deploys for production simplicity.
-
GitHub Actions
4 yearsCI/CD for most client projects — lint, test, build, and deploy on every push; matrix builds for multi‑environment releases.
-
AWS
5 yearsEC2, S3, Lambda, and RDS on enterprise client projects — reach for it when managed hosting isn’t enough.
-
Vercel
4 yearsDefault deploy for Next.js and static frontend projects — edge functions, preview deployments, and zero‑config DX.
-
Railway
2 yearsPreferred for backend services and managed databases where simplicity matters more than fine‑grained AWS control.
Backend
What Powers the Product.
-
Node.js & Express
9 yearsREST APIs, WebSocket servers, and background job queues — the workhorse of most client backends.
-
Python
6 yearsPrimary language for all AI/ML work, data pipelines, and scripting — pairs naturally with the LLM ecosystem.
-
FastAPI
3 yearsAPI layer of choice for Python services — async‑native, auto‑documented, and fast enough for streaming LLM responses.
-
PHP & Laravel
10 yearsPre‑Node era foundation — still maintain several client WordPress and Laravel installs in production.
-
REST & GraphQL
9 yearsDesigned 20+ production APIs — REST by default, GraphQL when clients need flexible querying across complex data graphs.
Frontend
What the User Sees.
-
React
8 yearsPrimary UI framework for all client web products since 2019 — including this site.
-
Next.js
4 yearsDefault choice for SSR/SSG projects; handles SEO-sensitive client sites and the frontend layer of AI-powered products.
-
TypeScript
5 yearsDefault over plain JS for anything that needs to outlive the weekend — static types save debug hours.
-
Tailwind CSS
4 yearsReplaced custom CSS for most client sites — fast iteration, consistent design tokens, easy to hand over.
-
Framer Motion
2 yearsUsed for complex UI transitions and scroll-linked animations in React — where CSS alone falls short.
On the Workbench
Currently Learning.
Things I’m actively working through — not yet production‑ready but on the path.
-
Rust
Systems programmingBuilding performance‑critical tooling for AI inference pipelines where Python's GIL is a bottleneck. Currently working through the Book and building small CLI tools.
-
Advanced RAG Evaluation
AI / MLRAGAS framework and LLM‑as‑judge patterns for systematic evaluation of retrieval quality and answer faithfulness — closing the gap between "it seems to work" and "we know it works".
-
LLM Fine‑Tuning
AI / MLLoRA and QLoRA on Hugging Face for domain‑specific model adaptation — exploring where fine‑tuning outperforms prompt engineering and RAG for specialised tasks.
Retired
Tech I’ve Left Behind.
Tools I used seriously and moved on from — not because they’re bad, but because better options arrived.
-
jQuery
2010 – 2019Replaced by React and modern vanilla JS. The DOM manipulation abstractions that made jQuery essential in 2012 are now built into the browser platform.
-
CodeIgniter
2012 – 2016Replaced by Laravel, then Node.js. CodeIgniter was a good framework at the time — it got me comfortable with MVC — but its conventions couldn’t keep pace.
-
FTP Deployments
2010 – 2016Replaced by Git‑based CI/CD. I spent too many evenings fixing “which file did I overwrite?” disasters to miss this workflow for a single second.
Want to know if I can work with your stack?
Just ask. I’ve picked up new frameworks mid‑project before and I’ll give you an honest answer about what I know versus what I’d need to learn.
Just Ask