An event-driven mindset
Explores the benefits of an event-driven architecture over linear code when building a gamification system for a tech platform.
Explores the benefits of an event-driven architecture over linear code when building a gamification system for a tech platform.
Argues that Java's pattern switches are a simpler, more modern alternative to the traditional Visitor design pattern for separating operations from object structures.
Argues for opinionated software design over excessive configurability, based on experience with an in-house framework.
Explains the concept of business logic in software development, using examples like a BMI calculator to distinguish it from other code.
Explores the complex decision-making process behind adding new features to the Java programming language, addressing common developer requests.
A fictional interview exploring an alternative universe where software creation is viewed as a design discipline, not engineering, and its cultural implications.
An analysis of the Go programming language's strengths, praising its simplicity, stability, and suitability for internet-scale software development.
Explains why boolean function parameters are often a code smell and suggests better design alternatives.
The article argues that successful tech alternatives succeed by simplifying and refining core ideas, not expanding on them, using examples like Alpine Linux, Go, and UTF-8.
Argues that encapsulation, not reusability, is the primary purpose of functions in programming, using a budget summary example.
First part of a guide on improving software design skills using .NET and C#, focusing on design principles over data structures.
Explores why software becomes complex over time, focusing on the additive nature of feature requests and the lack of a strong constituency for simplicity.
Explores the historical origins of Object-Oriented Programming, tracing its roots from Sketchpad and Simula to Alan Kay's definition.
A developer's first week at Recurse Center, focusing on pair programming, analyzing PHPUnit's codebase, and planning a web-based command prompt project.
Argues that professional programming tools should prioritize utility and power over ease of use, accepting a steeper learning curve for long-term productivity.
A guide to effective naming in code, covering principles for clarity, precision, and consistency to improve software design and maintainability.
The article outlines four core principles for building quality software: robustness, reliability, stability, and simplicity.
Explains how to categorize and manage stable vs. volatile dependencies in front-end architecture for better design.
Advocates for writing 'honest code' through practices like referential transparency and explicit dependencies to improve software understandability and maintainability.
The article critiques modern OS design, arguing that Windows, macOS, Android, and iOS now prioritize vendor interests over user needs, coining the term 'vendor-purpose OS'.