A collection of the skills and tools I use to craft experiences
I am well-versed in a lot of different languages, libraries, frameworks, and applications. Here's a categorized list of what I use to solve problems. As a lifelong learner, this list is always growing and changing alongside myself.
Languages
C#
Microsoft's Java challenger, C# has been around for a long time and continues to improve with every release. When combined with .NET you gain an impressive developer experience and a powerful ecosystem.
CSS
Most of the work I do when it comes to styling things is done with Tailwind CSS. I also have a lot of experience with Sass and styled-components.
Elixir
Elixir runs on the Erlang VM and is one of the most pleasurable functional programming languages around. It's easy to understand and has a friendly community.
HTML
The foundation of the web. Understanding semantic HTML and how to best use it to aid in accessibility is an often overlooked skill.
JavaScript
JavaScript has permeated the web, mobile, and desktop applications either through the browser directly, on the server, or through a bridge to the native platform.
Kafka
Kafka is one of the most popular event streaming platforms for coordinating large, distributed systems. Due to its easy-to-grok API, many developers find working with it to be pleasant. Cluster management can be a bit of a pain, though.
MongoDB
Though not a language, I opted to include Mongo here alongside SQL. I have a lot of experience working with MongoDB, including writing aggregate pipelines and using change streams.
PHP
Often considered the laughing stock of the programming world, PHP has grown a lot from the early days of the web. It's quite pleasant to work with now, especially when combined with Laravel.
SQL
While ORMs exist, sometimes you just need to write some SQL. I often find myself writing raw SQL queries to optimize performance or build complex queries.
TypeScript
My preferred language for writing code, TypeScript is a superset of JavaScript that adds static typing and makes it easier to build easy-to-understand applications.
Libraries
date-fns
date-fns is the preferred way to manipulate and format dates in JavaScript until the Temporal proposal is finalized, which should hopefully be any time.
Framer Motion
Framer Motion makes coordinating complex animations across an application easy and determinative.
Headless UI
Headless UI is a collection of accessible, reusable, and fully customizable UI components.
Lodash
Lodash has been around for a long time and for good reason. It provides a lot of utility functions for working with arrays, objects, and strings.
Prisma
Prisma is an indespensible tool for interacting with databases and supports PostgreSQL, MySQL, SQLite, SQL Server, and MongoDB. When used in a TypeScript project, it also provides an intuitive API for interacting with the database.
React
React is a declarative library for building and composing user interfaces. It provides primitives that can be used to build components that can be combined and reused to build complex experiences.
TanStack
The TanStack is a series of various libraries that are used to simplify things from managing queries from the client, to complex tables, and all the way through to routing.
Vue
Vue makes building complex user interfaces easy and allows developers to work with standard APIs that they are already familiar with, such as HTML, CSS, and JavaScript.
Zod
Zod is a TypeScript library for building schemas and validating data against the schemas. It has incredible type-inference capabilities and allows you to compose schemas together to handle more complex validation logic.
And many more...
I've highlighted a few of my favorite libraries that I often reach for when building new things, but I have experience with more than I could reasonably list on this page. If you're curious about any specific library, feel free to reach out and ask.
Frameworks
ASP.NET
ASP.NET is the go-to framework for building web applications in C# and can be run on any platform that supports .NET (Windows, Linux, and Mac with the latest versions).
Entity Framework
Entity Framework (EF) is an object-database mapper for .NET supporing LINQ queries, change tracking, updates, and schema migrations. It can be thought of as Prisma for the .NET world and is indespensible.
Laravel
Laravel is a framework for building rich web applications with PHP. It provides practically everything you would need out of the box, has excellent documentation, and has a rich ecosystem of packages to simplify most tasks.
NestJS
NestJS is a framework for building web servers using TypeScript that is heavily inspired by AngularJS. It makes heavy use of dependency-injection and the MVC pattern to make building complex applications easy.
Next.js
Next.js is one of the leading frameworks for building full-stack React applications that run in traditional server environments, serverless environments, or as static sites.
Phoenix
Phoenix is a framework for building web applications with Elixir that allows you to build real-time applications with ease. It is also incredibly resilient thanks to the Erlang VM.
Remix
Remix is a new framework that builds on top of web standards and allows you to build full-stack applications with ease. It takes care of a lot of edge cases around data mutation and refreshing that you would otherwise have to solve yourself.
Applications
Affinity Designer
Similar to Photoshop, Affinity Designer is a tool that I use to create various graphics, especially for print jobs. It has an elegant interface and is highly performant.
DBeaver
DBeaver is my go-to tool for interacting with SQL databases. It makes it easy to see and edit data as well as ensure secure environments that force transactions and prevent accidental operations.
Git
Git is the de-facto version control system for software. I use it for all of my projects, regardless of their size or complexity.
Oh My Zsh
Oh My Zsh is a framework for customizing your terminal experience that I use on Mac as well as in Ubuntu (WSL). It has a large community of users and a lot of plugins to extend its functionality.
MongoDB Compass
Compass is the official GUI for interacting with MongoDB. It has a brilliant visual editor for creating aggregates/pipelines allowing you to preview the results of every step.
Photoshop
While not related to programming, Photoshop is a tool that I find myself using quite often to edit images and create graphics. I've been using it for over 10 years and have a good understanding of how to do most things in it.
Postman
Postman is one of the most useful tools for interacting with APIs. It provides a centralized hub for making requests to your API, writing tests to ensure your API is correct, and allows you to easily share your work with others.
Turbo Repo
I am not sure if Turbo Repo is considered an application, but it is a powerful build tool for managing and coordinating dependencies across a monorepo.
Visual Studio Code
Visual Studio Code is my preferred editor for writing code. It has an incredibly varied and useful extension ecosystem allowing you to customize and configure it to your liking.