In my day-to-day work with technology, I have found there is No Silver Bullet [ucsf.edu] to the essential difficulties of software development. Essential best practices are situational and defined by context.

What a difference a year makes. When I wrote AI Is The New Rubber Duck (Force Multiplier) last April, AI really was a rubber duck. At least for the low-grade AI I had access to on a minimal budget with no corporate or venture capital sponsorship. It was helpful, but it couldn’t write complete applications […]

Find Me In Chicago is a fun project to make public data from the City of Chicago more accessible via Google Maps. Originally written in 2016 using JQuery it is now refreshed with new styling, coding assistance from various AI’s, the addition of AWS Lambda and Microsoft Azure serverless functions, and the complete removal of […]

Though this art of artificial intelligence arose long after my time, its nature is familiar. No craft emerges from nothing. AI is shaped by centuries of reason—by the logic we devised, the mathematics refined, the natural laws discovered. Its pattern-seeking mirrors our induction, its reasoning, our syllogism. Though AI lacks the soul’s intellect, it reflects […]

Rubber Duck Debugging

This article is OBSOLETE, see AI Is NOT a Rubber Duck for my latest thoughts. Rubber duck debugging is when a developer explains their code to an inanimate object to spot problems and clarify their thinking. It works because verbalizing the problem forces the developer to think through each step more clearly, often revealing the […]

Web applications accessible to the public Internet are guaranteed to be the target of random or focused attempts at mischief or abuse and recovering from a root compromise always painful. At a minimum, web applications require the planned design and consistent implementation of diverse technologies based on: education in the Most Critical Security Vulnerabilities [owasp.org] […]

There is a definite Art in Computer Programming [pragprog.com] shaped by the Structure and Interpretation of Computer Programs [mit.edu] and established Design Principles and Design Patterns [depaul.edu] From a technical pespective, Refactoring [refactoring.com] is the essential technique to incrementally remove harmful code patterns such as the Go To Statement [c2.com] and other AntiPatterns [antipatterns.com] such […]