Why You Should Learn Regex (Regular Expressions) - It's Not Just for Code

I spent a significant part of my career thinking of regular expressions as tools only for complex pattern matching in code—and the inevitable debugging nightmare when I had to revisit that code later. Now I know how helpful they are for tasks that support writing code, and I use them regularly for the massive productivity boost they can provide.

Read full post gblog_arrow_right

OWASP Top 10 Series: Broken Access Control - Part 2

This is the second in a series of blog posts about the OWASP Top 10. You can find the OWASP Top 10 List here . This is part 2 on the topic of Broken Access Control . Today we’re taking a look at access control vulnerabilities at the data model layer. In this post, I’m using “data model” to describe the part of the system in the application layer that talks to the database—what you might think of as the “M” in MVC.
Read full post gblog_arrow_right

Top 10 Software Development Skills for 2025

This is my list of the top 10 software development skills for 2025. The list is based mostly on my own experience. Both skills that I see and work with on a daily basis, as well as trends I see emerging in the industry. Being a software developer requires a lifelong learning mindset. (side note: I’m planning a follow up post on what I think are the best qualities of a software developer.
Read full post gblog_arrow_right

OWASP Top 10 Series: Broken Access Control - Part 1

This is the first in a series of blog posts about the OWASP Top 10. I’m writing this both as a learning tool for myself and to help others who are exploring secure coding practices in .NET. It’s always a good idea to keep security top of mind when developing software. So, I decided to write a series on the OWASP Top 10 security vulnerabilities. You can find the OWASP Top 10 List here .
Read full post gblog_arrow_right

How to Query Large SQL Tables Efficiently Using Only the Primary Key

Do you need to query a massive SQL table with millions of rows, but there is no index on the column you care about? In this post, we’ll look at a simple technique to speed up your queries by using only the index that you do have — the primary key — to improve performance. Including the primary key in the SQL query when no other index exists on the target table can significantly reduce the amount of database resources it takes to find the data you are looking for.
Read full post gblog_arrow_right

Improve C# App Performance by Eliminating Nested Loop Lookups

The Problem: Nested Loops and Repeated Queries Data lookups can often cause a common performance problem to be introduced into code. In this post, we’ll look at an example of that problem and one possible solution. For this example, we’ll be using a C# console application that reads from the country table of the MySql sakila sample database. However, the refactoring solution presented is language and database agnostic. This solution is only meant to demonstrate a common problem with nested loops.
Read full post gblog_arrow_right

Making Better Software Decisions: Trade-offs and the Type 1 and Type 2 Strategy

After 25 years in software development, I’ve come to realize that every decision involves a trade-off. Do you need to make an algorithm highly performant? Then you may need to make some sacrifices in maintainability and readability. Do you need to make the architecture of a software system extremely flexible and resilient to change? Then you may need to make the architecture more complex. Do you need to use a framework that is a great fit for solving specific business needs?
Read full post gblog_arrow_right