Writing a good research paper or thesis is hard. It can be very intimidating to figure out the scope of the work needed to be done. Thanks to Oscar, I have been empowered with three adjectives to think about problems of scope. These adjectives were: breadth, depth and completeness. Breadth and Depth At the early … Continue reading The Zen of Oscar
The idea to write a research agenda as a retrospective in the past is stolen from here. This is an awesome technique to engage creative thinking. The intangible nature of software has seen long been recognized as an impediment to software development, making development an overly abstract and difficult task. This lack of tangibility poses problem … Continue reading A Retrospective on Tangible Software: 2013-2023
This is a question is occasionally asked by students and here is the answer. We are not religious. This choice is not dogmatic. We do both research in programming languages and tool support for software evolution. In both cases Smalltalk is handy: Programming language -- Smalltalk is extermely uniform. Experimenting with a language change is … Continue reading Why Smalltalk?
(A cheap title, I know) Reflection is one of these concept that constantly move from "obvious" to "puzzling" in my head--you feel like you have a firm understanding of it, and then suddently it evades, you feel puzzled by certain aspects, and ultimately confused about the whole thing. Why? Two Perspectives One of the first … Continue reading Reflecting on Reflection
There's the lambda cube, and the big data cube. Why not a an object cube? Here would be three axis: Object Existence -- The object existence dimension can range for everything ia a mutable object, to more distinctions between mutable and immutable objects, or objects and values. Existence, identity and mutability are tightly related ("I … Continue reading The Object Cube
Edit: the idea presented in this post was worked out into a consistent language feature and accepted for publication. Ownership type systems have been designed for statically typed languages to confine and constraint aliasing, which in turn increases security and safety. Ownership type systems are conservative, and can only enforce properties that are known to … Continue reading Ownership for Dynamic Languages
As per wikipedia, a model is a pattern, plan, representation (especially in miniature), or description designed to show the main object or workings of an object, system, or concept. In the case of software engineering, models are used to represent specific aspects of the software system, such as static structures, communication paths, algorithms, etc. Models … Continue reading Abstraction-Level vs. Meta-Level