My extensive work as a software developer, combined with my mathematically-inclined nature has made me think a lot about notions such as good design, and more importantly, modularity in software (and in other types of systems). This has lead me to using a new term (elasticity) to refer to the ability of a system to adequately react to changes in its semantics.
Perdita Stevens is my second supervisor for my PhD, but I initially got to know her due to the possibility of doing a PhD with her on this topic. She is a Professor of Mathematics of Software Engineering and a lot of her work is focused on the notion of bidirectional transformations. As a consequence of this, I have learned a lot more about these and have decided to express my ideas on modularity and elasticity in terms of bidirectional transformations. You can find a note about this here.
This is still one of the research topics I am most interested on and is likely that I will return to it at some point in the future.
Both in mathematics and programming, one of the constant obsessions that I have is that the model I am using is natural, meaning that it is not fabricated, that it ressembles the reality that it is representing. In relation to this, I have long thought that programming and more generally languages should not be represented as text but as graphs. Due to the obvious capability of representing a graph in text it has always been hard for me to try and explain to others what reasons I have for thinking that this change of representation would actually have any real effect at all. Due to this, and also in order to organize my own ideas, I have spent some time writing down some of the examples which I believe show that changing text for graphs would be an awesome idea, even if it would clearly not mean a change in absolute capability, it would empower other aspects of languages which I believe are close to being as important (such as elasticity and modularity).
These are just semi-organized notes, they do not constitute a finished text or any clear conclusions, but if you are curious about this, you can download it here. A specific note on how this could be applied within a functional setting like Haskell can be found here. Note that both of these notes are slightly outdated with my views and some of the claims or points of view held there I no longer stand by. Nontheless, they are overall a relevant high-level look at my perspective of the problem. Similarly, here you can find a note with some examples of the relation between this and modularity.
A few years later, I implemented a prototype of a program to edit graph-based syntax that I called Graff. It is quite possible that I will go back and extend this idea / implementation in the future, but this initial attempt helped me understand some of its value, challenges and issues.
At my Game development page you will find some research-oriented ideas such as further exploring the notion of endlessness in videogames and related topics.