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.

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.

Real Problems I Encountered When Developing With AI Agents

A practical account of the real implementation and maintenance problems I ran into while using AI agents for internal business system development.

AI in Real Development Work

A practical reflection on how AI changed my daily work, why coding agents raise both productivity and risk, and why design matters even more now.

Designing Meaningful Types

Explains how meaningful types help determine when inheritance is structurally appropriate.