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
OpenClose
Front End
Browser technologies and tools
OpenClose
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
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
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
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
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
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
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
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
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
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
OpenClose
Back End
Server-side, systems, API's, frameworks
OpenClose
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/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
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
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
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
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
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
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
OpenClose
Cloud
Cloud platforms, services, and related tools
OpenClose
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
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
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
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
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
OpenClose
Database
Database technologies, tools, and systems
OpenClose
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
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
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
OpenClose
Dev Ops & Tools
Development operations, tools, and systems
OpenClose
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
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
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
Learnt 12 years ago
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
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
Learnt 2 years ago
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
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
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
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.