© 2009-2023 Strange Loop | Privacy Policy

Often, the worst enemy of a better solution is an existing solution that's just good enough. New programming languages often borrow from prior languages, yet non-ideal choices from the past frequently live on. Haphazardly designed method protocols – method names, parameters, and return values – make core libraries harder to understand and limit their expressive power.
HandAxe is a pattern language for specifying collection protocols. It emphasizes consistency, composability, im|mutability, and mis|understandability. It begins by rigorously defining terms for referencing collection aspects: key, value, element, span, edge, index, etc. – aka “grips.”
Using a small grammar of operators and modifiers, HandAxe enables one to specify an ideal naming, protocol, and semantics for methods. Further, it enables method implementations to be autogenerated on demand. While implemented in JavaScript, HandAxe offers a unified approach for developing collection libraries in a wide range of languages.
I'm Director of Pedagogy at Spantree Technology Group LLC, and am passionate about mentoring junior engineers. I taught software engineering for 10 years, most recently as an instructor at Dev Bootcamp. When not waxing wistfully about the Smalltalk debugger, I enjoy playing board games with my daughter, exploring unusual maps, eating exotic fruits, and acting as the building super at our extended family compound on the South Side of Chicago.