Greg, thank you for article.
Could you please refrain from providing SELECT * FROM table example - it's a proverbial ticking "time bomb".
Changes in table schema like creating new or dropping existing column could trigger a chain reaction of bug further down stream in middle-tier and/or on UI. My favorite anti-pattern - combining SELECT * with querying system views EVERY time somebody try to retrieve data. in this scenario even renaming a column could be a potential problem.