Notes & Thoughts Quick thoughts, technical notes, and ideas.
Notes written to clarify my own thinking, share knowledge, explore ideas, and remember important concepts.
Notes tagged with "Programming"
There are 31 notes in total.
When “DX” Hurts Real Productivity
Optimizing for developer convenience often masks deeper productivity losses. Real output — shipped features and resolved problems — matters more than frictionless workflows.
PHP Typed Arrays
Typed arrays in PHP through PHPDoc enable static analysis, IDE support, and explicit contracts using array shapes, lists, and advanced constraints beyond native typehints.
The Cost of Over-Engineering for Hypothetical Futures
Premature abstraction accumulates invisible debt. Why designing for hypothetical futures consistently produces worse systems than designing for present reality.
Why Debugging Became Harder Than Writing Code
Monoliths were often easier to debug due to direct execution paths and minimal layers, while modern architectures trade transparency for scalability and modularity.
PHP ?? (Null Coalescing) and ?: (Ternary Shorthand)
A small reminder of how "null coalescing" and "ternary shorthand" works in PHP.
Abstraction Debt: The New Technical Debt
Abstraction debt accumulates when layers and patterns are misapplied, creating hidden maintenance costs akin to technical debt.
Learning JavaScript vs Learning an Ecosystem
Understanding JavaScript requires focusing on language fundamentals, while learning an ecosystem requires mastering tools, patterns, and workflows.
Why Performance Regressed Despite Faster Hardware
Performance can regress on faster hardware when software grows in hidden complexity. Abstractions, data volume, and toolchain overhead outpace raw speed gains.
The Rise of Build Pipelines and the Loss of Directness
Build pipelines introduced powerful automation but severed the direct relationship between source code and runtime output. The cost of that indirection is rarely measured.
Understanding Common Edge Cases in PHP and JavaScript
Edge cases in PHP and JavaScript stem from implicit type coercion and loose equality. Strict comparisons, boundary validation, and explicit type contracts are the primary defenses.
Vendor Lock-in Starts at Hello World
Vendor lock-in starts with defaults, APIs, and habits. I examine how early convenience hardens into dependency and how to preserve optionality.
PHP self:: vs static::
PHP self:: binds to the defining class, static:: respects the calling class (Late Static Binding).