The noble way to substantiate decisions that affect many people is to ask these people for their ... more The noble way to substantiate decisions that affect many people is to ask these people for their opinions. For governments that run whole countries, this means asking all citizens for their views to consider their situations and needs. Organizations such as Africa's Voices Foundation, who want to facilitate communication between decision-makers and citizens of a country, have difficulty mediating between these groups. To enable understanding, statements need to be summarized and visualized. Accomplishing these goals in a way that does justice to the citizens' voices and situations proves challenging. Standard charts do not help this cause as they fail to create empathy for the people behind their graphical abstractions. Furthermore, these charts do not create trust in the data they are representing as there is no way to see or navigate back to the underlying code and the original data. To fulfill these functions, visualizations would highly benefit from interactions to explo...
Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik der Universität Potsdam, Feb 3, 2021
Crochet is a popular handcraft all over the world. While other techniques such as knitting or wea... more Crochet is a popular handcraft all over the world. While other techniques such as knitting or weaving have received technical support over the years through machines, crochet is still a purely manual craft. Not just the act of crochet itself is manual but also the process of creating instructions for new crochet patterns, which is barely supported by domain specific digital solutions. This leads to unstructured and often also ambiguous and erroneous pattern instructions. In this report, we propose a concept to digitally represent crochet patterns. This format incorporates crochet techniques which allows domain specific support for crochet pattern designers during the pattern creation and instruction writing process. As contributions, we present a thorough domain analysis, the concept of a graph structure used as domain specific language to specify crochet patterns and a prototype of a projectional editor using the graph as representation format of patterns and a diagramming system t...
Supplementary descriptions for the design of a live game development environment as described in ... more Supplementary descriptions for the design of a live game development environment as described in the paper "Shortening Feedback Loops in a Live Game Development Environment". The descriptions include more details on the approach, more detailed accounts on the development of the game prototypes, and a more in-depth discussion of consequences of the design.
This dataset includes the materials used in the experiment (questionnaires and documents) as well... more This dataset includes the materials used in the experiment (questionnaires and documents) as well as raw data and pre-processed data.
In today’s life, embedded systems are ubiquitous. But they differ from traditional desktop system... more In today’s life, embedded systems are ubiquitous. But they differ from traditional desktop systems in many aspects – these include predictable timing behavior (real-time), the management of scarce resources (memory, network), reliable communication protocols, energy management, special purpose user-interfaces (headless operation), system configuration, programming languages (to support software/hardware co-design), and modeling techniques. Within this technical report, authors present results from the lecture “Operating Systems for Embedded Computing” that has been offered by the “Operating Systems and Middleware” group at HPI in Winter term 2013/14. Focus of the lecture and accompanying projects was on principles of real-time computing. Students had the chance to gather practical experience with a number of different OSes and applications and present experiences with near-hardware programming. Projects address the entire spectrum, from bare-metal programming to harnessing a real-ti...
Various programming tools, languages, and environments give programmers the impression of changin... more Various programming tools, languages, and environments give programmers the impression of changing a program while it is running. This experience of liveness has been discussed for over two decades and a broad spectrum of research on this topic exists. Amongst others, this work has been carried out in the communities around three major ideas which incorporate liveness as an important aspect: live programming, exploratory programming, and live coding. While there have been publications on the focus of each particular community, the overall spectrum of liveness across these three communities has not been investigated yet. Thus, we want to delineate the variety of research on liveness. At the same time, we want to investigate overlaps and differences in the values and contributions between the three communities. Therefore, we conducted a literature study with a sample of 212 publications on the terms retrieved from three major indexing services. On this sample, we conducted a thematic ...
When working on a program, developers traditionally have to simulate the behavior of the abstract... more When working on a program, developers traditionally have to simulate the behavior of the abstract code in their heads until they can execute the application. Live programming aims to support the development and comprehension of programs by providing more immediate feedback on program behavior, but the divide between code and behavior often remains. The goal of example-based live programming is to remove this gap by allowing programmers to explore the actual behavior of their code during development. This is achieved by defining live examples for parts of the application. The idea of live examples has been already addressed in other tools and environments. However, most of those solutions are limited to specific domains and are suitable only for small programs. Thus, we aim to extend the application of example-based live programming to more complex programs potentially spanning multiple modules. We investigate existing solutions to derive a set of requirements for an integration of l...
The "lively4-core-babylonian-programming.zip" archive contains the source code of the i... more The "lively4-core-babylonian-programming.zip" archive contains the source code of the implementation of the Babylonian Programming Editor incorporating live examples into source code. The relevant files for the implementation can be found under <em>src/babylonian-programming-editor</em>. The original repository was https://github.com/LivelyKernel/lively4-core/tree/babylonian-programming. The archive "virtual-machine.zip" contains a VirtualBox VM with a runnable copy of Lively4 (the same version as in the source archive). The username and password for the VM are both "babylonian-style-programming". To start the server, simply double-click <em>Babylonian-style Programming.sh</em> on the Desktop. This will start an HTTP server on port 8080 and open Chrome with the correct URL.
This dataset primarily contains a BibTeX file containing literature on the experience of liveness... more This dataset primarily contains a BibTeX file containing literature on the experience of liveness in programming. In particular it compares the results on liveness found under the terms "live programming", "live coding", and "exploratory programming". For interested readers, there is also a Smalltalk source file attached containing source code snippets used to generate some of the results of the accompanying publication in the Programming journal.
Visuelle Programmiersprachen werden heutzutage zugunsten textueller Programmiersprachen nahezu ni... more Visuelle Programmiersprachen werden heutzutage zugunsten textueller Programmiersprachen nahezu nicht verwendet, obwohl visuelle Programmiersprachen einige Vorteile bieten. Diese reichen von der Vermeidung von Syntaxfehlern, uber die Nutzung konkreter domanenspezifischer Notation bis hin zu besserer Lesbarkeit und Wartbarkeit des Programms. Trotzdem greifen professionelle Softwareentwickler nahezu ausschlieslich auf textuelle Programmiersprachen zuruck. Damit Entwickler diese Vorteile visueller Programmiersprachen nutzen konnen, aber trotzdem nicht auf die ihnen bekannten textuellen Programmiersprachen verzichten mussen, gibt es die Idee, textuelle und visuelle Programmelemente gemeinsam in einer Programmiersprache nutzbar zu machen. Damit ist dem Entwickler uberlassen wann und wie er visuelle Elemente in seinem Programmcode verwendet. Diese Arbeit stellt das SandBlocks-Framework vor, das diese gemeinsame Nutzung visueller und textueller Programmelemente ermoglicht. Neben einer Auswe...
Cross-cutting concerns are an inherent property of the implementation of non-trivial software sys... more Cross-cutting concerns are an inherent property of the implementation of non-trivial software systems. Their study led to the development of advanced modularity constructs, usually supported by meta-level frameworks and programming language constructs, to improve comprehensibility. Because of their invasive nature, systems need to be refactored or rewritten to take advantage of these constructs. However, practical considerations such as organizational or economical constraints often do not allow for such reengineering efforts, leaving those systems without explicit representations of their cross-cutting concerns. We propose a lightweight, non-invasive approach to explicate and document cross-cutting, multi-party concerns called Crosscutting Commentary, or Commentary for short. Our proposal is based on the observation that comments are co-located with the individual semantic units they are about and with that scattered and tangled in the absence of advanced modularity constructs for ...
Proceedings of the Conference Companion of the 3rd International Conference on Art, Science, and Engineering of Programming, 2019
Creating useful software systems requires a solid understanding of the application domain of the ... more Creating useful software systems requires a solid understanding of the application domain of the system [1, 9]. Software development teams thus often communicate with domain experts to elicit domain knowledge and requirements for the system [4]. To capture the resulting shared understanding of the domain, software developers and domain experts create artifacts such as graphical models or glossaries [5]. Source code is another interesting format for capturing the shared understanding of the domain as source code files are the definitive documents for the actual behavior of a software system.
The noble way to substantiate decisions that affect many people is to ask these people for their ... more The noble way to substantiate decisions that affect many people is to ask these people for their opinions. For governments that run whole countries, this means asking all citizens for their views to consider their situations and needs. Organizations such as Africa's Voices Foundation, who want to facilitate communication between decision-makers and citizens of a country, have difficulty mediating between these groups. To enable understanding, statements need to be summarized and visualized. Accomplishing these goals in a way that does justice to the citizens' voices and situations proves challenging. Standard charts do not help this cause as they fail to create empathy for the people behind their graphical abstractions. Furthermore, these charts do not create trust in the data they are representing as there is no way to see or navigate back to the underlying code and the original data. To fulfill these functions, visualizations would highly benefit from interactions to explo...
Technische Berichte des Hasso-Plattner-Instituts für Softwaresystemtechnik der Universität Potsdam, Feb 3, 2021
Crochet is a popular handcraft all over the world. While other techniques such as knitting or wea... more Crochet is a popular handcraft all over the world. While other techniques such as knitting or weaving have received technical support over the years through machines, crochet is still a purely manual craft. Not just the act of crochet itself is manual but also the process of creating instructions for new crochet patterns, which is barely supported by domain specific digital solutions. This leads to unstructured and often also ambiguous and erroneous pattern instructions. In this report, we propose a concept to digitally represent crochet patterns. This format incorporates crochet techniques which allows domain specific support for crochet pattern designers during the pattern creation and instruction writing process. As contributions, we present a thorough domain analysis, the concept of a graph structure used as domain specific language to specify crochet patterns and a prototype of a projectional editor using the graph as representation format of patterns and a diagramming system t...
Supplementary descriptions for the design of a live game development environment as described in ... more Supplementary descriptions for the design of a live game development environment as described in the paper "Shortening Feedback Loops in a Live Game Development Environment". The descriptions include more details on the approach, more detailed accounts on the development of the game prototypes, and a more in-depth discussion of consequences of the design.
This dataset includes the materials used in the experiment (questionnaires and documents) as well... more This dataset includes the materials used in the experiment (questionnaires and documents) as well as raw data and pre-processed data.
In today’s life, embedded systems are ubiquitous. But they differ from traditional desktop system... more In today’s life, embedded systems are ubiquitous. But they differ from traditional desktop systems in many aspects – these include predictable timing behavior (real-time), the management of scarce resources (memory, network), reliable communication protocols, energy management, special purpose user-interfaces (headless operation), system configuration, programming languages (to support software/hardware co-design), and modeling techniques. Within this technical report, authors present results from the lecture “Operating Systems for Embedded Computing” that has been offered by the “Operating Systems and Middleware” group at HPI in Winter term 2013/14. Focus of the lecture and accompanying projects was on principles of real-time computing. Students had the chance to gather practical experience with a number of different OSes and applications and present experiences with near-hardware programming. Projects address the entire spectrum, from bare-metal programming to harnessing a real-ti...
Various programming tools, languages, and environments give programmers the impression of changin... more Various programming tools, languages, and environments give programmers the impression of changing a program while it is running. This experience of liveness has been discussed for over two decades and a broad spectrum of research on this topic exists. Amongst others, this work has been carried out in the communities around three major ideas which incorporate liveness as an important aspect: live programming, exploratory programming, and live coding. While there have been publications on the focus of each particular community, the overall spectrum of liveness across these three communities has not been investigated yet. Thus, we want to delineate the variety of research on liveness. At the same time, we want to investigate overlaps and differences in the values and contributions between the three communities. Therefore, we conducted a literature study with a sample of 212 publications on the terms retrieved from three major indexing services. On this sample, we conducted a thematic ...
When working on a program, developers traditionally have to simulate the behavior of the abstract... more When working on a program, developers traditionally have to simulate the behavior of the abstract code in their heads until they can execute the application. Live programming aims to support the development and comprehension of programs by providing more immediate feedback on program behavior, but the divide between code and behavior often remains. The goal of example-based live programming is to remove this gap by allowing programmers to explore the actual behavior of their code during development. This is achieved by defining live examples for parts of the application. The idea of live examples has been already addressed in other tools and environments. However, most of those solutions are limited to specific domains and are suitable only for small programs. Thus, we aim to extend the application of example-based live programming to more complex programs potentially spanning multiple modules. We investigate existing solutions to derive a set of requirements for an integration of l...
The "lively4-core-babylonian-programming.zip" archive contains the source code of the i... more The "lively4-core-babylonian-programming.zip" archive contains the source code of the implementation of the Babylonian Programming Editor incorporating live examples into source code. The relevant files for the implementation can be found under <em>src/babylonian-programming-editor</em>. The original repository was https://github.com/LivelyKernel/lively4-core/tree/babylonian-programming. The archive "virtual-machine.zip" contains a VirtualBox VM with a runnable copy of Lively4 (the same version as in the source archive). The username and password for the VM are both "babylonian-style-programming". To start the server, simply double-click <em>Babylonian-style Programming.sh</em> on the Desktop. This will start an HTTP server on port 8080 and open Chrome with the correct URL.
This dataset primarily contains a BibTeX file containing literature on the experience of liveness... more This dataset primarily contains a BibTeX file containing literature on the experience of liveness in programming. In particular it compares the results on liveness found under the terms "live programming", "live coding", and "exploratory programming". For interested readers, there is also a Smalltalk source file attached containing source code snippets used to generate some of the results of the accompanying publication in the Programming journal.
Visuelle Programmiersprachen werden heutzutage zugunsten textueller Programmiersprachen nahezu ni... more Visuelle Programmiersprachen werden heutzutage zugunsten textueller Programmiersprachen nahezu nicht verwendet, obwohl visuelle Programmiersprachen einige Vorteile bieten. Diese reichen von der Vermeidung von Syntaxfehlern, uber die Nutzung konkreter domanenspezifischer Notation bis hin zu besserer Lesbarkeit und Wartbarkeit des Programms. Trotzdem greifen professionelle Softwareentwickler nahezu ausschlieslich auf textuelle Programmiersprachen zuruck. Damit Entwickler diese Vorteile visueller Programmiersprachen nutzen konnen, aber trotzdem nicht auf die ihnen bekannten textuellen Programmiersprachen verzichten mussen, gibt es die Idee, textuelle und visuelle Programmelemente gemeinsam in einer Programmiersprache nutzbar zu machen. Damit ist dem Entwickler uberlassen wann und wie er visuelle Elemente in seinem Programmcode verwendet. Diese Arbeit stellt das SandBlocks-Framework vor, das diese gemeinsame Nutzung visueller und textueller Programmelemente ermoglicht. Neben einer Auswe...
Cross-cutting concerns are an inherent property of the implementation of non-trivial software sys... more Cross-cutting concerns are an inherent property of the implementation of non-trivial software systems. Their study led to the development of advanced modularity constructs, usually supported by meta-level frameworks and programming language constructs, to improve comprehensibility. Because of their invasive nature, systems need to be refactored or rewritten to take advantage of these constructs. However, practical considerations such as organizational or economical constraints often do not allow for such reengineering efforts, leaving those systems without explicit representations of their cross-cutting concerns. We propose a lightweight, non-invasive approach to explicate and document cross-cutting, multi-party concerns called Crosscutting Commentary, or Commentary for short. Our proposal is based on the observation that comments are co-located with the individual semantic units they are about and with that scattered and tangled in the absence of advanced modularity constructs for ...
Proceedings of the Conference Companion of the 3rd International Conference on Art, Science, and Engineering of Programming, 2019
Creating useful software systems requires a solid understanding of the application domain of the ... more Creating useful software systems requires a solid understanding of the application domain of the system [1, 9]. Software development teams thus often communicate with domain experts to elicit domain knowledge and requirements for the system [4]. To capture the resulting shared understanding of the domain, software developers and domain experts create artifacts such as graphical models or glossaries [5]. Source code is another interesting format for capturing the shared understanding of the domain as source code files are the definitive documents for the actual behavior of a software system.
Uploads
Papers by Patrick Rein