Hi, I'm Joey
I like building things. I write software for a living as a professional software engineer, amateur scrum master, part-time DBA, pipeline build failure fixer, restart-er of production servers, and connoisseur of cheap beer. I like to write about things in code that mostly have to do with .NET and web development, while also adventuring into a wide variety of technology stacks to blog about. I work at a SaaS company currently writing lots of C#, .NET, and Vue, but I dabble in just about everything the modern web and application frameworks have to offer.
When I'm not sitting in front of an IDE or breaking production environments, you'll find spending time with my wife and dog, hanging out with friends, or probably sitting at the bar of one of my town's local breweries.
I write about a lot of things, mostly .NET and web development in general these days. The world of software is big, and there's no lack of topics for me to ramble on about. Grab a cold beverage of your choice, sit back, and have a look into the things that keep me up at night (mostly null references).
Implementing dark mode in Angular with Tailwind
Because light mode is so 2018.
Build a Tailwind modal with Angular and NgRx
Out-of-the-box modals are nice, but often times inflexible and can bring a lot of unnecessary code into a project for something as simple as displaying a message. Let's use Tailwind to build our very own state-based modal instead!
Decoupling controllers with ApiEndpoints
No one likes monolithic controllers, and with ApiEndpoints, API design just got a whole lot easier.
.NET Core Service lifetimes in a nutshell
Learn to register your lifetimes accordingly with .NET Core's built in dependency injection and IoC container.
State Management with Blazor using Fluxor (Part 2)
Use Fluxor to encapsulate the business logic of our Blazor apps and build clean view components.
State Management with Blazor using Fluxor (Part 1)
Manage state in your Blazor applications using the tried-and-true flux pattern with Fluxor.
Blazor basics - calling external APIs with typed HTTP clients
Clean architecture, Dapper, MediatR, and buzzword bingo (part 4)
Write encapsulated business logic with the help of MediatR and the CQRS pattern.
Clean architecture, Dapper, MediatR, and buzzword bingo (part 3)
Testing code with xUnit, Dapper, and Shouldly.
Nullable reference types and designing with intent
Null reference exceptions can be a thing of the path, but with great power comes great responsibility.
Clean architecture, Dapper, MediatR, and buzzword bingo (part 2)
Implement the unit of work and repository patterns with Dapper.
Clean architecture, Dapper, MediatR, and buzzword bingo (part 1)
Build an API using Dapper, MediatR, and clean architecture principles with the help of beer.