Why I Avoided a SPA for a Large Internal System

A practical reflection on why a large CRUD-heavy internal business system with many screens was easier to build and maintain without making SPA architecture the default.

Small-Team Development Without Losing Continuity

In teams of one to three people, continuity depends less on role separation and more on shared understanding, document granularity, and records that let the work be handed over when necessary.

The Birth of the Form Abstraction

Why Cotomy ended up with multiple form layers, and how that structure came from the gap between desktop application habits and web runtime reality.

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.

How I Work Solo Without Losing Reliability

I do not follow development methodologies rigidly. Some environments break them entirely. What actually moves projects forward is adapting to the real constraints in front of you, not applying theory.

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.

Working Safely with AI Coding Agents

A practical reflection on how I use ChatGPT, Codex, and Copilot to design first, code second, and reduce the risk of AI-driven development.