Spreadsheets are often used by multiple people, and each user can add, change or remove data. There are some issues with this, most prominently the fact that users have different needs: They may need only a subset of features that is different for each user. These features can occur in different places in different files, contain data or computation and in fact represent aspects of the spreadsheets.
Thus, Jorge and his team thought of aspect-oriented programming: the idea of bringing modularity to cross-cutting concerns. It is typically used for error-handling, tracing or design-by-contract. It consists of a join-point (where the feature is needed), an advice (the feature) and a location (before, after, around) and was firstly constructed for Java (Aspect-J)
For spreadsheets, the joint model are parts of the language that can be altered (spreadsheet, worksheet, cell, range). For worksheets we can keep the same locations (before, after, around) but for cells and ranges we use left, above, right and below instead of before and after.
Suppose we have a list of students and marks and for one student we want to manually update the value. We could update it manually of course, but that is smelly. Jorge proposes instead to add a borderline case:
You can even use BumbleBee syntax for transformations 🙂