Software Engineer's Blog

Showing Posts From

System Design

Applying OCP with the Strategy Pattern in Java

System Design

Applying OCP with the Strategy Pattern in Java

Jason Yang · 13 May, 2026

Apply the Open-Closed Principle in Java with the Strategy Pattern — add new behavior without editing core logic, shown with a payment-processing example.

DIP vs DI: Understanding the Difference in Java

System Design

DIP vs DI: Understanding the Difference in Java

Jason Yang · 13 May, 2026

DIP vs DI in Java: they work together but differ — DIP keeps logic depending on abstractions, DI supplies dependencies from outside. Explained with examples.

SOLID Principles in Java

System Design

SOLID Principles in Java

Jason Yang · 12 May, 2026

SOLID principles in Java explained with simple examples — SRP, OCP, LSP, ISP, and DIP, each with backend-focused code. The full series index starts here.

PostgreSQL User Creation and Permission Setup

System Design

PostgreSQL User Creation and Permission Setup

Jason Yang · 16 Dec, 2025

Secure PostgreSQL by separating admin and app roles: SQL scripts for schema hardening and automated permissions, for Cloud SQL, AWS RDS, or self-hosted.

Reliability vs. Availability

System Design

Reliability vs. Availability

Jason Yang · 17 Nov, 2025

Reliability vs availability: reliability is how long a system runs without failing; availability is how much of the time it's up. Examples and how to raise each.