Where State Actually Changes

In CRUD screens, the core problem is often not where state is stored, but whether the mutation path is defined. Once load, input, save, and reload are allowed to diverge, the screen becomes difficult to reason about.

Synchronizing UI and Server State

Server-side postback screens were limited, but they kept one execution path. Once Ajax became the main update mechanism, keeping display, input state, and server truth aligned became a structural problem.

Screen State Consistency in Long-Lived UIs

State failures in business UIs are usually not isolated bugs. They appear when DOM state, in-memory state, and server state have no explicit ownership and synchronization rules.

Entity Identity and Surrogate Key Design

Why I moved from natural keys to surrogate keys, and why that change made both database design and application code easier to manage.

Consistent Data Flow from Persisted Models to the Frontend

Why I care about keeping names consistent from Entity Framework models to Razor Pages forms and Cotomy, and how that reduces mistakes in long-lived business systems.

Shared Foundation Layout for Razor Pages and Cotomy

Why I stopped placing shared TypeScript infrastructure at the solution root and moved it into Core so Razor Pages and Cotomy could form one coherent application foundation.

Integrating TypeScript into Razor Pages with Cotomy

How I place page-level TypeScript next to Razor Pages files and build a small shared foundation so Cotomy can stay aligned with endpoint boundaries.

How I Split Projects in Razor Pages Systems

How I use solution and project boundaries in Razor Pages systems to keep business functions understandable, extensible, and manageable in solo development.

Object-Oriented Thinking for Entity Design

Why inheritance is rarely used when designing entities in business systems.

Designing Software for AI Code Generation

AI coding agents are useful, but they work from narrow context rather than stable architectural intent. That makes software design and compact feature boundaries more important, not less.