It is often stated that “there are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.” In this talk, we’ll take a shot at addressing an instance of the first problem: cache invalidation. More specifically, we consider code in which a number of values are 1- computed based off of other (dynamic) values and 2- cached to avoid recomputing them all the time, and look at how to automate lazy computation, caching, cache invalidation and dependency tracking. This will be designed with the mindset of building a library/module which aims to minimize the impact on user code.