Posts

Showing posts from October, 2021

Heuristic String Comparison with Levenshtein Distance

  The Levenshtein Distance algorithm provides a practical example of dynamic programming.  It allows us to determine the minimum number of operations required to transform one string into another using the operations: Add, Delete, Alter, or Keep.   Compare strings "kitten" and "sitting" s i t t i n g 0 1 2 3 4 5 6 7 k 1 1 2 3 4 5 6 7 i 2 2 1 2 3 4 5 6 t 3 3 2 1 2 3 4 5 t 4 4 3 2 1 2 3 4 e 5 5 4 3 2 2 3 4 n 6 6 5 4 3 3 2 3   In the top row we have how many operations it would take to change the substring (up to the column) to a null string.  This would require a delete for every character of the source string.  Therefore the top row is the count of the characters in the source string and the horizontal move across the matrix r...

Engineering Truisms

This is a brief collection of quotes, laws, and truisms that I've gathered over the years.  I've kept those that have consistently proved themselves across organizations and projects during my career.

Vendor Lock In Anti-Pattern

Image
Porter's Five Forces is a framework taught in business school for analyzing the competitive landscape of an industry.  Students learn the framework then apply it to multiple case studies to understand the motivation and actions taken by companies and thereby gain exposure to the strategic thinking necessary to successfully run a competitive business. The framework breaks down the major influences to an industry into four groups: Threat of New Entrants, Threat of Substitute Products, Bargaining Power of Suppliers, Bargaining Power of Buyers.  In software, we rarely have the opportunity to think at this macro level.  Nor are we expected to.  However, this framework is useful not only to upper management but can also effectively be applied in software architecture and design decisions.  I'd go as far as to assert that it SHOULD at least be considered in such planning.    In particular, lets explore it as it applies to Bargaining Power of Suppliers....