Skills

Twenty-six tools.
Three honest depths.

Every tool below carries two things I can defend: a depth I chose in plain English, and the year it entered my stack. Read the matrix down a column to see where I am strongest, or across a row to see what I bring to one kind of problem.

The number that is not here

This page used to say React 95%. Nobody measured that. It came from a lookup table that turned the word “expert” into a number so a progress bar would have something to fill.

A depth is a category, so it is shown as one — a position in a matrix, not a length. A year is a number, so it is shown on a timeline, where length means elapsed time and nothing else.

Stated
Depth, in one of three words
Stated
The year it entered the stack
Never
A percentage, a score, or a five-star rating

26 tools tracked5 groups8 at the deepest rung2018 earliest year in the stack

The capability matrix

Five groups down, three depths across. Filter to one group, or search for a tool by name. Every cell that is empty says so — an absent skill is information too.

26 tools

Frontend

8 tools

  • React2018
  • TypeScript2019
  • JavaScript2018
  • HTML & CSS2018
  • Tailwind CSS2021
  • Angular2018
  • TanStack2022
  • D32023

Backend

6 tools

  • Node.js2020
  • Laravel2018
  • PHP2018
  • Postgres2023
  • MySQL2018
  • GraphQL2022

Mobile

4 tools

  • Capacitor2022
  • React Native2020
  • Android2022
  • Flutter & Dart2022

Platform

4 tools

  • Firebase2020
  • Supabase2024
  • Cloudflare Workers2023
  • WordPress2018

Craft

4 tools

  • Manifest V3 extensions2021
  • Accessibility2022
  • Design systems2023
  • Technical writing2021

Nothing at this depth.

Read this before the matrix

Three words, each defined against something checkable

A self-assessed label is worth exactly as much as the standard behind it. These are the standards. They are deliberately harder than the usual ladder — 4 of 26 tools sit at the bottom rung, and 8 at the top.

If a definition does not match what you need, say so on a call. I would rather lose the work than have you find out in week three that “Working” meant what it says.

Deep

8 of 26

Years of production work, including the parts that break.

I have debugged this under deadline pressure, know what it is bad at, and would argue with its documentation. If a project lives or dies on it, I do not need a second pair of hands.

Proficient

14 of 26

Shipped with it across more than one project, by design rather than by tutorial.

I can choose the right shape up front instead of discovering it in review. I still reach for the documentation on the unusual paths, and I say so rather than guessing.

Working

4 of 26

Real shipped use, and a shallower floor than the two above it.

It has done a job in production. I would still want review on anything load-bearing, and I would tell you that before quoting rather than after.

The other honest number

When each one entered the stack

Years are a real quantity, so they get the encoding a real quantity deserves. Nothing leaves this list once it is on it — a tool I have stopped reaching for is recorded on the CV, not quietly deleted from here.

  1. 2018

    React · JavaScript · HTML & CSS · Angular · Laravel · PHP · MySQL · WordPress

    8 tools entered the stack

  2. 2019

    TypeScript

    1 tool entered the stack

  3. 2020

    Node.js · React Native · Firebase

    3 tools entered the stack

  4. 2021

    Tailwind CSS · Manifest V3 extensions · Technical writing

    3 tools entered the stack

  5. 2022

    TanStack · GraphQL · Capacitor · Android · Flutter & Dart · Accessibility

    6 tools entered the stack

  6. 2023

    D3 · Postgres · Cloudflare Workers · Design systems

    4 tools entered the stack

  7. 2024

    Supabase

    1 tool entered the stack

What is deliberately absent

A skills page that lists only strengths is a sales page. These are the gaps worth knowing before you scope anything with me.

Native iOS and Swift
There is no Apple Developer account behind this work, so nothing has ever shipped to the App Store. Android and the web are where the store listings actually are.
MongoDB as a headline
It is real inside the Perkforce role and it stays on the CV there. It is not part of what I lead with any more, so it is not on this list dressed up as current.
Visual design as a deliverable
Design systems are on the list because I build and maintain them in code. Brand identity, illustration and art direction are not the same job and I do not take them.
Blockchain and smart contracts
Never shipped, never studied seriously. There is no rung on this ladder low enough to make listing it honest.
A count of certifications
Five course completions exist and they are on the CV, framed as what they are. They are not accreditations, so they do not raise a rung on this page.

A list is not evidence

Depths are a claim. The products are the proof — every one of them shipped, most of them still running. Go and open a few, then tell me what you need building.