AutoHotKey A Mind-Reading Script What if you could highlight any text, press a hotkey, and have Windows do what you want almost every time? You'd have my top productivity hack.
AutoHotKey Debugging VBA with no Break Key Ever use a keyboard without a Pause/Break key? It's no big deal for most people, but if you develop in VBA it's a huge deal.
Hidden Features Blast From the Past Why use keyboard shortcuts from Access 2003 when developing in 2020? Because starting with Access 2007, the new shortcuts suck.
Intermediate Cleaner IntelliSense How to clean up your object's auto-complete dropdown list when it starts to look like that of the MacBook Wheel.
Intermediate Dependency Injection (sort of) For a few common dependencies, we can cheat by using a singleton class. Within that class, we'll type those dependencies as interfaces.
Intermediate Cookie Cutter Forms How do you reuse a form with external dependencies in multiple projects? Interfaces.
Intermediate Backward-Compatible Refactoring How can you completely change the way you interact with a class without breaking backward compatibility? Interfaces.
Intermediate Interfaces, Conceptually Interfaces can be a difficult concept to grasp conceptually. To help make sense of the concept, consider these real world examples.
Hidden Features VBA Alchemy: Turning Methods Into Properties One can check the status of screen painting in Excel, but not in Access. This turns out to be an important shortcoming. Let's remedy it.
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."
SQL Server Peeking Under the Hood Don't let these gotchas trip you up when using SQL Server as a backend for Microsoft Access.
Error Handling Graduate Level Error Handling Once again, I borrowed an idea from Python. To smuggle this concept into VBA, I turned to a rarely-used language feature...
Defensive Programming Defensive Programming Don't build digital Maginot Lines. Program your defenses in depth.
Conventions Enum Type Naming Convention The combination of "IntelliSense overload" and "global identifier case changes" convinced me I needed a different approach.
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.
Hidden Features A Rounding We Will Go Two kinds of rounding, the VBA language spec vs. the Office VBA implementation, and a drop-in replacement for VBA.Round().
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.