Commentary You're Not an Impostor You're good enough, you're smart enough, and doggone it, people like you.
Risk Management Mail: An Allegory Behold, the world's greatest literary allegory since George Orwell penned "Animal Farm."
Commentary Declaration of Database Design Altering the schema of a production database is not a step to be taken lightly. But when requirements dictate, it must be done.
Commentary Access Migrations Data migrations are high risk operations. You can't prepare for every pitfall, but a good plan will maximize your chances of success.
Commentary How It's Always Been Done Good programmers know how to code. Great programmers know why. The best programmers question why.
Intermediate Short-Circuiting VBA? Beware of clever workarounds for missing language features. Sometimes the simple approach is best.
Commentary Copying and Pasting Code with Purpose The first commandment of software development is, "Thou shalt not copy and paste code." Sometimes that's wrong.
Commentary Backward Compatibility: A Go Perspective "What actually makes code, advice, and tutorials obsolete?" Let's explore the answers as they relate to the Go programming language and MS Access.
Commentary 7th Grade Career Day Using this approach, I manage to teach multiple programming concepts to absolute beginners in the span of about fifteen minutes.
Debugging Debugging Automation Errors Come join me on a journey debugging hard-to-reproduce "Automation error" bugs.
Hidden Features VBA's Case Changing "Feature" VBA likes to change the casing of our code (upper/lower/mixed). It may seem random, but it's not. Read all the details here.
Commentary Web Apps - Bane of my Existence Whatever modicum of credibility I may have had with "real programmers" I am about to douse in gasoline and light on fire with this article.
Commentary Cruft Sale! Everything must go!!! Dead code, obsolete reports, and bunches of binary backups! No offer too big or too small!
Code Library Creating Optional Dependencies Using conditional compilation to avoid the "Dependency Train" problem.
Code Library The Dependency Train Let's torture a train metaphor to illustrate the dangers of dependency chaining.
Commentary The Golden Rule of Data Migrations The fastest and most reliable way to run a migration is to repeat it many times. I call this the "Repetition Paradox."
Defensive Programming Defensive Programming Don't build digital Maginot Lines. Program your defenses in depth.
Code Library One Thing at a (Hundred) Times How to use Run() and GetTickCount() for some quick and dirty performance profiling. Come for the code, stay for the scolding on premature optimization.
Commentary Two Ways to Burn Burning cardboard is a lot like a large data migration. You can do it all at once or slowly over time.
Commentary The Curse of Reliable Software How does one avoid the reliability paradox? One option is to intentionally write unreliable, buggy software. There's a better option.
Commentary Lightweight Forms? Just Don't Lightweight forms make your code harder to read and debug, but if your users have monitors with high enough refresh rates, they'll appreciate the effort.
Commentary Building Your Library Thirteen years ago, I chose to maintain a folder of text files rather than a single Access database library. I've never once regretted that decision.