Posts
All the articles I've posted.
-
Don't treat code like magic
Why you should reproduce problems reliably, document your investigation, test assumptions, and map dependencies before implementing fixes.
-
Don't use navigation properties in EF Core
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.
-
My CloudFormation Template Organization
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
An in-depth exploration of implementing the Singleton pattern in Flutter applications, combining static and instance-based approaches for better maintainability.
-
Detecting Manual AWS Changes in CloudFormation Stacks
How to detect and manage configuration drift in AWS CloudFormation stacks, ensuring infrastructure consistency and preventing unauthorized changes.
-
EF Core Migrations Quick Reference
A comprehensive quick reference guide for managing Entity Framework Core migrations, including common commands and best practices for database schema updates.
-
8 factors that make code unmaintainable
A comprehensive guide to identifying and avoiding common practices that lead to unmaintainable code, with real-world examples and practical solutions.
-
The hidden ETL pipeline in your system
Understanding how most software systems inherently function as ETL pipelines and how to leverage this perspective for better system design.
-
Google sheets as your backend: Preserving business logic instead of rebuilding it
A practical approach to using Google Sheets as a lightweight backend solution, preserving existing business logic while avoiding unnecessary rebuilding of systems.
-
Prototype first, production second
How prototyping reduces development risk by allowing safe experimentation and validation before making production changes, with practical examples and best practices.
-
Refactoring complex loops with transformation pipelines
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.
-
Testing ProblemDetails responses in ASP.NET Core
A comprehensive guide to testing ProblemDetails responses in ASP.NET Core integration tests, ensuring proper error handling and RFC 7807 compliance.
-
SSH tips on Windows
Essential SSH configuration tips and troubleshooting guide for Windows users, including key management, connection setup, and common issues.
-
Chocolatey Package Manager Snippets
Common commands and best practices for managing Windows software installations using the Chocolatey package manager.
-
AWS CLI Command Snippets
A collection of frequently used AWS CLI commands for managing cloud resources, with examples and practical use cases.
-
NPM and NVM Command Snippets
Essential commands and tips for managing Node.js versions with NVM and handling package dependencies with NPM.
-
PostgreSQL Query and Command Snippets
A practical collection of PostgreSQL queries and commands for common database administration tasks, performance tuning, and maintenance operations.
-
RabbitMQ Command Snippets
A collection of essential RabbitMQ commands and configurations for common administration tasks, monitoring, and troubleshooting.
-
Problem-solving guide for developers
A systematic framework for tackling complex programming challenges, with practical strategies and mental models for efficient problem analysis and resolution.
-
PowerShell Command Snippets
A comprehensive collection of commonly used PowerShell commands and scripts for system administration and automation tasks.
-
Serilog setup for .NET Core worker services
A detailed guide on implementing Serilog logging in .NET Core worker services and Windows Service applications, with configuration examples and best practices.
-
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.
-
Excel exports in .NET Core using ClosedXML
A practical guide to implementing Excel file exports in .NET Core applications using ClosedXML library, with code examples and best practices.
-
Overriding services ASP.NET Core integration tests using ConfigureTestServices
Learn how to effectively override services in ASP.NET Core integration tests using ConfigureTestServices, with practical examples and testing patterns.
-
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.
-
PostgreSQL development setup with Docker Compose
A step-by-step guide to setting up a PostgreSQL development environment using Docker Compose, including configuration, persistence, and common troubleshooting tips.
-
HTTP Retry with Flurl and Polly in .NET Core
Implementing resilient HTTP requests in .NET Core applications using Flurl and Polly libraries, with examples of retry policies and error handling.
-
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.
-
Global Day of Coderetreat 2016 Skopje Event Recap
A summary of the Global Day of Coderetreat 2016 event in Skopje, featuring pair programming exercises, TDD practices, and coding challenges.
-
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.