Code: The Legacy (Cert 18)

The Curse of Legacy Code! — Wait, is that a Microservice?

Harnessing Evil for Your Own Usecase

Spyware — who’s laughing now?
My morning yesterday

Architectural Goals

Can we use Leverage?

Sometimes you need a little extra help
  • we needed to record activities all the time, even if Outlook wasn’t running (requirement 4)
  • we were going to need to poll the OS a lot to monitor what was going on, and we wanted that to be incredibly lightweight so it didn’t slow up the machine. Add-ins are not that fast.
  • The Tracker Service: a C++ process for tracking activity plus a pseudo-database (structured flat files, append-only, no read from the tracker, read-only from the UI)
  • The UI Service: a VB.Net add-in for Outlook plus a distributed NoSQL database (Exchange message store)
  • Faster deploy: it allowed us to make UI changes without affecting the decoupled tracker process and vice versa, which reduced dev conflict.
  • Diagnosability: by examining the stored flat files, we could retrospectively determine whether any field bug had occurred in the tracker service or the UI service. We could also manually replay any flat files into any UI Service instance for remote debugging of UI issues.
  • Disaster recovery: we could manually replay the local flat files in the case of catastrophic data loss on the Exchange server (occasionally it happened!)
  • Resilience: it allowed the system to keep basically working even if one of the 2 major components failed, allowing time for automated or manual restarts.

Did we Over-Engineer our Desktop Application?

You’re Never too Legacy to Kick Ass

Ash is back in “Ash vs the Evil Dead”



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store