Technical Skills

I have experience with a wide range of technologies, tools, and languages.
Here are some of the key ones I have used.

Front End

Browser technologies and tools

Open

CSS3 logo

CSS3

Learnt 9 years ago

I am highly experienced and knowledgeable in writing CSS. I stay up to date with the latest CSS features and syntax, seek to follow best practices and write clean and maintainable CSS. I am familiar with using CSS preprocessors such as Sass and Less. I have used CSS modules and CSS-in-JS solutions such as Emotion and Styled Components. Currently I am using Tailwind CSS in most of my projects, mostly for it's amazing developer experience.

HTML5 logo

HTML5

Learnt 9 years ago

I am very experienced in writing HTML and knowledgeable in all areas of the markup and how to use it to create any UI or layout. I use semantic elements and always follow HTML best practices. Accessibility is always on my mind and I always use the correct attributes and tags to make my websites accessible. I always follow SEO best practices and use the correct meta tags and attributes.

JavaScript logo

JavaScript

Learnt 9 years ago

I am highly experienced and very knowledgeable with JavaScript and all of it's concepts. This ranges from a deep understanding of how the language works & behaves in both the browser and server-side environments. I always make use of modern syntax and new features of the language and use strict linters to enforce this. I have extensive knowledge of the DOM and how to manipulate it and also how to use the browser APIs as well as a vast knowledge of the JavaScript ecosystem and how to use npm to manage dependencies and publish packages.

React logo

React

Learnt 5 years ago

I am very proficient with React and have used it in many projects. I have a deep understanding of how React works and different rendering methods. My knowledge ranges from single-page applications, static sites, to server-side rendered applications. The vast majority of projects I have worked on have used React with TypeScript. When writing React components I aim to make them functional, re-usable, and composable components wherever possible. I strictly use hooks and follow the current standard React conventions.

TypeScript logo

TypeScript

Learnt 4 years ago

I use TypeScript in all of my projects where JavaScript is used or required. I always enable strict mode with all checking flags enabled to take full advantage of the added type safety. This helps me catch type errors in development before runtime! and is a crucial part of my development process. I am very familiar with creating types and using them throughout a codebase using many different techniques and patterns.

Redux logo

Redux

Learnt 3 years ago

Have used Redux in many projects to manage client state. I am familiar with the core concepts of Redux and how to use it in a React application. I have also used Redux with TypeScript and mostly use Redux Toolkit nowdays.

Tailwind CSS logo

Tailwind CSS

Learnt 1 year ago

I have used Tailwind CSS in a few projects and am still learning all of it's capabilities. I am familiar with the core concepts of Tailwind CSS and how to use it to style a website. I have used it to style React applications and static sites.

Web Worker logo

Web Worker

Learnt recently

I have learnt how to use Web Workers to run JavaScript in a separate thread. This is to keep heavy computations in a separate thread to keep the main thread responsive. I used a web worker to read, and process a large file system in a project - the user would select a folder and it would recursively read all the files and folders and display the file structure in the browser while also scanning the metadata of each file. This was a great use case for a web worker as it kept the main thread responsive while the file system was being read.

Vue logo

Vue

Learnt 2 years ago

I have used Vue in a single project at work and have sound knowledge of the core concepts of Vue and how to use it to create a single page application.

WorkBox logo

WorkBox

Learnt 3 years ago

I have used WorkBox to create service workers for a few projects. I am familiar with the core concepts of WorkBox and how to use it to create a service worker that will power a single page application in offline mode and cache static assets.

Back End

Server-side, systems, API's, frameworks

Open

Tomcat logo

Tomcat

Learnt 2 years ago

Strong knowledge of Tomcat and how to use it to deploy Java applications. Have used it to deploy Java EE applications and also Spring Boot applications. Knowledge of how to configure Tomcat and how to deploy applications to it and also how the servlet system works.

fastify logo

Fastify/Express

Learnt 4 years ago

Have used both Fastify and Express to create RESTful APIs and GraphQL APIs. I am very familiar with creating routes, middleware, and handling requests and responses in both. I have also used these frameworks to serve static files and render React applications.

GraphQL logo

GraphQL

Learnt 2 years ago

Have used GraphQL in multiple projects to create APIs. I am very familiar with the core concepts of GraphQL and how to use it to create an API. I have used it with both Node.js and Java/Spring Boot.

Java logo

Java

Learnt 2 years ago

Strong knowledge of the Java language and it's core concepts. I always keep up to date with the latest features of the language. Have used Java to create RESTful, Servelt, and GraphQL APIs. I have also used server-side rendered applications with struts/JSP combination. I am familiar with using Java with Spring Boot and Java EE to create web applications. I have knowledge of the Java ecosystem and how to use Maven and Gradle to manage dependencies and build projects.

Next.js logo

Next.js

Learnt 2 years ago

Solid understanding of Next.js and how to use it to create server-side rendered applications. Knowledge in App Router and React Server components pattern and how to use the to create the blend of static and dynamic pages and where to use each.

Node.js logo

Node.js

Learnt 6 years ago

Have used Node.js in many of my personal projects to create RESTful APIs and GraphQL APIs, with usually either one of the frameworks Express.js, Fastify.js, or Apollo Server. I have a good understanding of the event loop and how to write non-blocking code. I am also familiar with Streams, Buffers, Promises, and the fetch API. I always stay up-to-date with the latest features of Node and use them in my projects.

Spring logo

Spring

Learnt 2 years ago

Am familiar with the core concepts of Spring and how to use it to create a variety of applications. Understanding of the difference between Spring Boot and Spring Framework and knowledge of dependency injection and inversion of control. Spring Boot is my preference for creating any Java applications.

Go logo

Go

Learnt recently

I have been learing Go for a few months now and have used it in a few small projects. I am familiar with the core concepts of Go and how to use it to create a RESTful API. Solid understanding of Go's concurrency model including goroutines, channels, wait groups, mutexes, and writing thread-safe code in Go.

Cloud

Cloud platforms, services, and related tools

Open

Octopus Deploy logo

Octopus Deploy

Learnt 2 years ago

Very experienced using Octopus Deploy and it's features and how to use it to deploy applications. Expert knowledge of how to configure Octopus Deploy and how to create projects and releases.

Auth0/OAuth logo

Auth0/OAuth

Learnt 2 years ago

I am a huge fan of Auth0 and have used it in many projects. I am familiar with the core concepts of Auth0 and how to use it to add authentication to a project. My knowledge goes beyond just Auth0 and I know how to use OAuth to add authentication to a project without Auth0. I also have knowledge of the different OAuth authentication flows. This includes an understanding of JWT's and how to use them to authenticate requests.

AWS logo

AWS

Learnt 4 years ago

I have used AWS to create a few projects. I am familiar with the core concepts of AWS and how to use it to launch and manage servers. Services I have used include EC2, RDS, S3, Lambda, CloudFront, Route 53, Virtual Private Cloud, and IAM. This is a skill I am actively working on improving. I just need to be exposed to more of the services and use them in projects.

Stripe logo

Stripe

Learnt 2 years ago

I used Stripe in a single project to handle payments. I am familiar with the core concepts of Stripe and how to use it to handle payments and manage everything related to payments.

Azure logo

Azure

Learnt 1 year ago

I have a brief understanding of Azure and how to use it to launch and manage servers. I have only used it at one job for basic maintenance tasks.

Database

Database technologies, tools, and systems

Open

PostgreSQL logo

PostgreSQL

Learnt 6 years ago

PostgresSQL is the database I am most familiar with. I have used it in many projects and have a good understanding of how to use it. Familiar with using PostgreSQL with Node.js and Java/Spring Boot. SQL is my preference for creating databases and I am very familiar with the syntax and how to use it to create tables, views, stored procedures, functions, indexes, and triggers.

SQL Server logo

SQL Server

Learnt 2 years ago

I have experience using Microsoft SQL Server with Java/Spring Boot. I am familiar with using it to create tables, views, stored procedures, functions, indexes, and triggers. Sound knowledge of specific SQL server features.

Redis logo

Redis

Learnt 3 years ago

I have used Redis in a few projects. I am familiar with the core concepts of Redis and how to use it to store data. Have used it to store session information, cache database layer data, and as a plain database.

Dev Ops & Tools

Development operations, tools, and systems

Open

ESLint logo

ESLint

Learnt 5 years ago

I use ESLint in all of my projects where JavaScript or TypeScript is used. Familiar with the core concepts of ESLint and how to use it to lint JavaScript and TypeScript code. Best practices, code style, and code quality are very important to me so I always use ESLint in my projects.

PowerShell logo

PowerShell

Learnt 2 years ago

Expert knowledge in PowerShell and how to use it to conduct a variety of scripting tasks. PowerShell is my preference for writing scripts and automating tasks over bash because of it's explicit nature and cross-platform support.

Prettier logo

Prettier

Learnt 3 years ago

I use Prettier in all of my projects where JavaScript or TypeScript is used. Familiar with the core concepts of Prettier and how to use it to format JavaScript and TypeScript code. Best practices, code style, and code quality are very important to me so I always use Prettier in my projects.

Windows logo

Windows

Learnt 12 years ago

Bash logo

Bash

Learnt 6 years ago

I have used Bash to write scripts for a few projects. I am familiar with the core concepts of Bash and how to use it to write scripts. Have used it to automate tasks such as running tests, linting code, and building projects.

Linux logo

Linux

Learnt 3 years ago

I use Fedora Linux as my daily driver and have used it for a few years now. I am familiar with the core concepts of Linux and how to run servers properly on it.

SVN logo

SVN

Learnt 2 years ago

Vite logo

Vite/Webpack

Learnt 6 years ago

I have used Vite, ESBuild, and Webpack to bundle JavaScript and TypeScript code. I am familiar with the core concepts of each and how to use them to bundle code for production. Familiar with the plugin & loader ecosystem for each and how to configure them. My preference is Vite for new projects as it is very fast and has a great developer experience but would say I know Webpack the best.

Docker logo

Docker

Learnt 4 years ago

I have used Docker to containerize a few projects. I am familiar with the core concepts of Docker and how to use it to create and manage containers. I have used Docker Compose to create multi-container applications.

Git logo

Git

Learnt 8 years ago

Git is my preference for version control and I use it in all of my projects. I am familiar with the core concepts of Git and how to use it to manage code. Have used it to manage code in both personal and team projects.

StyleLint logo

StyleLint

Learnt 4 years ago

Use StyleLint in all of my projects where CSS is used. Familiar with the core concepts of StyleLint and how to use it to lint CSS.