Application engineering
Building maintainable web applications with clear domain boundaries, deliberate data flows, and interfaces that support the work rather than compete with it.
My work spans application development, framework design, language experiments, and the architecture that connects them.
JPMy background is rooted in web application development. Building products pushed me deeper into frameworks, programming-language experiments, frontend systems, and developer-facing APIs.
The recurring question is how much complexity the system can absorb so the developer has less mechanical work without losing clarity.
Building maintainable web applications with clear domain boundaries, deliberate data flows, and interfaces that support the work rather than compete with it.
Exploring how conventions, defaults, tooling, and framework-managed plumbing can make application development more coherent.
Treating names, APIs, errors, documentation, and common workflows as parts of the product developers actually use.
Using framework, language, and runtime experiments to understand the trade-offs beneath higher-level application abstractions.
Names, boundaries, APIs, and control flow should help a developer form an accurate mental model of the system.
Good defaults reduce repeated mechanical choices while preserving explicit escape hatches for cases that genuinely differ.
Documentation cannot repair an incoherent API. The architecture itself should make the intended path easy to discover and hard to misuse.
Performance work should respond to evidence and constraints. Complexity added for hypothetical speed is still complexity that must be maintained.
A process matters when it improves the decisions made inside it.
Define the problem, constraints, and users before choosing architecture.
Remove concepts and mechanical work that do not improve the outcome.
Set clear boundaries, contracts, data flow, and failure behavior.
Implement the smallest coherent version that proves the direction.
Test behavior, edge cases, assumptions, and developer experience.
Use implementation evidence to improve the API and architecture.