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.

Where It Gets Interesting.

  • LangChain

    2 years

    Orchestration layer for most LLM chains — retrieval, tool use, and multi‑step prompting in production systems.

  • LangGraph

    1.5 years

    Preferred for multi‑agent workflows — graph‑based control flow handles conditional branching better than linear chains.

  • OpenAI API

    3 years

    GPT‑4o on the majority of client AI features — function calling, streaming, vision, and embeddings all in production use.

  • Anthropic Claude API

    2 years

    Preferred for long‑context document analysis and structured output tasks where instruction‑following matters most.

  • RAG Pipelines

    2 years

    5 production RAG systems from scratch — chunking strategy, embedding model selection, retrieval tuning, and reranking layers.

  • Hugging Face

    2 years

    Embedding models and open‑source LLMs where cost or data‑privacy requirements rule out hosted APIs.

Where the Data Lives.

  • PostgreSQL

    9 years

    Relational DB of choice for structured data — indexing, query planning, and JSONB columns cover 90% of use cases.

  • Redis

    5 years

    Caching layer and session store on most projects; pub/sub for real‑time event distribution between services.

  • MongoDB

    7 years

    Document store for content‑heavy projects and flexible schemas where the shape of data changes as the product evolves.

  • Qdrant

    1.5 years

    Vector database on all production RAG deployments — filtering by payload metadata is where it outperforms alternatives.

  • Supabase

    2 years

    PostgreSQL + auth + storage for fast‑moving projects — eliminates infra setup time without sacrificing query power.

How It Ships.

  • Docker

    6 years

    All projects containerised from day one — Compose for local dev, single‑image deploys for production simplicity.

  • GitHub Actions

    4 years

    CI/CD for most client projects — lint, test, build, and deploy on every push; matrix builds for multi‑environment releases.

  • AWS

    5 years

    EC2, S3, Lambda, and RDS on enterprise client projects — reach for it when managed hosting isn’t enough.

  • Vercel

    4 years

    Default deploy for Next.js and static frontend projects — edge functions, preview deployments, and zero‑config DX.

  • Railway

    2 years

    Preferred for backend services and managed databases where simplicity matters more than fine‑grained AWS control.

What Powers the Product.

  • Node.js & Express

    9 years

    REST APIs, WebSocket servers, and background job queues — the workhorse of most client backends.

  • Python

    6 years

    Primary language for all AI/ML work, data pipelines, and scripting — pairs naturally with the LLM ecosystem.

  • FastAPI

    3 years

    API layer of choice for Python services — async‑native, auto‑documented, and fast enough for streaming LLM responses.

  • PHP & Laravel

    10 years

    Pre‑Node era foundation — still maintain several client WordPress and Laravel installs in production.

  • REST & GraphQL

    9 years

    Designed 20+ production APIs — REST by default, GraphQL when clients need flexible querying across complex data graphs.

What the User Sees.

  • React

    8 years

    Primary UI framework for all client web products since 2019 — including this site.

  • Next.js

    4 years

    Default choice for SSR/SSG projects; handles SEO-sensitive client sites and the frontend layer of AI-powered products.

  • TypeScript

    5 years

    Default over plain JS for anything that needs to outlive the weekend — static types save debug hours.

  • Tailwind CSS

    4 years

    Replaced custom CSS for most client sites — fast iteration, consistent design tokens, easy to hand over.

  • Framer Motion

    2 years

    Used for complex UI transitions and scroll-linked animations in React — where CSS alone falls short.

Currently Learning.

Things I’m actively working through — not yet production‑ready but on the path.

  • Rust

    Systems programming

    Building 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 / ML

    RAGAS 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 / ML

    LoRA and QLoRA on Hugging Face for domain‑specific model adaptation — exploring where fine‑tuning outperforms prompt engineering and RAG for specialised tasks.

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 – 2019

    Replaced 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 – 2016

    Replaced 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 – 2016

    Replaced 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