Beyond Booleans
Explores the limitations of the Boolean type in programming and proposes a more expressive type system for logical expressions.
Explores the limitations of the Boolean type in programming and proposes a more expressive type system for logical expressions.
Explores a recurring pattern in programming systems where users iteratively choose options to build code, proposing a 'choose-your-own-adventure calculus' abstraction.
Explains how to use Zig's comptime feature to safely work with subsets of a tagged union, using a real-world example from a terminal project.
Explores implementing pattern matching in Python using predicates and combinators, detailing custom MatchResult types and pattern semantics.
A PHP developer argues for stricter type systems and static analysis to reduce uncertainty and doubt in code, increasing productivity.
A visual history of PHP Data Transfer Objects (DTOs) evolving from PHP 5.6 through modern versions, showcasing syntax improvements.
Explores the technical and architectural reasons why PHP does not yet support generics, examining three potential implementation methods and their challenges.
An in-depth look at generics in PHP, covering their use beyond collections and how static analyzers implement them via docblocks.
An accessible guide explaining the concepts of covariance and contravariance in TypeScript's type system and subtyping.
Argues that static analysis can replace runtime type checks in PHP, enabling features like generics without performance cost.
Explores how a pipe wrench lecture by Vannevar Bush teaches the importance of precision in software engineering and domain modeling.
A proposal to add generic syntax to PHP for static analysis tools, bypassing runtime performance issues by transpiling.
Survey results analyzing PHP developers' preferences for strict type systems versus dynamic typing, and how team/project size influences these views.
A survey analyzing the relationship between PHP type systems and project size, with results published on the author's blog.
An in-depth look at how type system compilers like TypeScript work, focusing on type checks and building a custom compiler.
Explores how type systems in programming can reduce the need for extensive testing by ensuring correct data input, using a color conversion function as an example.
An opinion piece arguing that Go's conservative design and lack of generics is a strength, not a missing feature, and that innovation should come from first principles.
Discusses the challenges of using PHP arrays as data structures and advocates for using typed classes/objects for better code clarity and IDE support.
An exploration of the Liskov Substitution Principle (LSP) and its critical role in ensuring type safety in object-oriented programming and inheritance.
A guide to building a statically typed functional language, covering type checking, interpretation, and transpilation to JavaScript.