-
What I fix after the LLM is done
The design problems LLM-generated code produces, and how to fix them.
-
Developer Command Snippets
Updated:A consolidated collection of command snippets I use regularly — PowerShell, PostgreSQL, RabbitMQ, AWS CLI, NPM/NVM, Chocolatey, and EF Core.
-
EF navigation properties hide your queries
How avoiding navigation properties in EF Core eliminates N+1 queries and makes data dependencies explicit.
-
Git worktrees for parallel branch work
Using git worktrees to work on multiple branches simultaneously without managing local file changes.
-
Handling Enum Values as Strings in C# API Models
A practical pattern for working with enums in API request models - storing as strings while keeping type-safe enum logic throughout your codebase.
-
Standardize Data at Write Time, Not Read Time
Why I normalize data from multiple sources when saving to the database, not when displaying it. Using IoT temperature monitoring as a practical example.
-
Property Getters vs Get Methods: When to Use Which
A detailed guide on choosing between property getters and get methods in object-oriented programming, with practical examples and best practices for API design.
-
A Baseline CloudFormation Layout That I Keep Reusing
A structured approach to organizing AWS CloudFormation templates for containerized web applications, covering VPC networking, ECS Fargate, RDS, and automated deployment processes.
-
The Static-Instance Singleton Pattern in Flutter
Static methods for state changes, instance properties for reads. A singleton API pattern for Flutter.
-
Detecting Manual AWS Changes in CloudFormation Stacks
How to detect and manage configuration drift in AWS CloudFormation stacks.
-
What makes code unmaintainable
Why code becomes hard to change: cohesion failures, coupling failures, leaked decisions, and other structural causes of unmaintainable software.
-
Your system is an ETL pipeline
Understanding how most software systems inherently function as ETL pipelines and how to leverage this perspective for better system design.
-
Wrapping Google Sheets as a backend instead of migrating away from it
A practical approach to using Google Sheets as a lightweight backend solution, preserving existing business logic while avoiding unnecessary rebuilding of systems.
-
Build the throwaway prototype first
Before integrating unfamiliar code into production, explore it in a throwaway project first.
-
A loop that does five things is five problems
How to simplify complex data processing loops by refactoring them into clear, maintainable transformation pipelines using functional programming concepts.
-
Serilog Correlation IDs for background tasks in .NET Core
How to implement and manage correlation IDs in background tasks using Serilog in .NET Core applications for better logging traceability.
-
Use enums over booleans for status fields
Why and how to use enumerated types instead of boolean flags for status fields, improving code maintainability and preventing future refactoring headaches.
-
How to Use Pseudocode to Design Better Software - Working Example
A practical demonstration of pseudocode-driven development for designing maintainable software, with a real-world example from requirements to implementation.
-
Test-specific AppSettings configuration in ASP.NET Core integration tests
How to properly configure and manage test-specific application settings in ASP.NET Core integration tests, ensuring isolated and reliable test environments.
-
Dynamic SQL queries: string concatenation vs SqlKata
A comparison of approaches to building dynamic SQL queries in .NET applications, contrasting string concatenation with SqlKata's query builder for safer and more maintainable code.
-
Type-safe appsettings configuration in .NET Core
Implementing strongly-typed configuration in .NET Core applications with built-in validation, using options pattern and data annotations.
-
Solving the N+1 query problem
A deep dive into diagnosing and fixing the N+1 query anti-pattern in ORMs, with practical examples of using eager loading and joins to improve database performance.
-
How to Extend Select2 with Adapters
A guide to extending Select2's functionality using its adapter and decorator patterns, with practical examples for customizing appearance and behavior.
-
Refactoring a Feature Envy Code
A practical guide to identifying and fixing Feature Envy code smell in C#, with step-by-step examples of moving behavior to where the data lives.
-
ASP.NET MVC5 Feature Folders Structure
How to organize ASP.NET MVC5 projects using feature folders for better maintainability and separation of concerns, with practical examples and implementation details.
-
How to Refactor Business Rules Using the Specification Pattern
A practical guide to implementing the Specification pattern for cleaner and more maintainable business rule validation in your code.
-
Rhino Security and StructureMap Integration Guide (Archive, 2015)
A comprehensive guide to integrating Rhino Security with StructureMap in .NET applications for robust security management.
-
.NET Database Development with FluentMigrator (Archive, 2014)
A comprehensive guide on implementing database versioning with FluentMigrator in .NET projects, including automated migrations, version control integration, and cross-database provider support.