Hi, I‘m Christoph! I am a master student in Computer Science and Software Engineering and am interested in building and researching innovative programming tools. I have developed a novel back-in-time debugger for Squeak/Smalltalk, a downstream dependency analysis tool for VS Code, and several other prototypes. As a core developer of the interactive programming system Squeak, I explore and contribute to several areas such as its code browsing tools and its regular expression engine. In my spare time, I also play squash, jazz piano, and am owned by four cats.
Contact: Email · Twitter · LinkedIn · GitHub
Experiences
-
Student Research Assistant
Hasso Plattner Institute, Software Architecture Group
2019-08 – presentAs a student research assistant, I help maintain and extend Squeak, participate in research projects on programming and debugging tools, and have co-authored a textbook on Squeak.
Skills: Squeak/Smalltalk · OOP · Academic Writing
-
Student Teaching Assistant
Hasso Plattner Institute, Software Architecture Group
2022-04 – 2022-08As a teaching assistant, I supervised a team of undergraduate students in a software engineering project and provided them guidance in mastering agile methods and technical issues.
Skills: Agile Methods · Teaching
-
Student Data Engineering Assistant
Museums of the Hasso Plattner Foundation
2020-08 – presentAt the HPF, I am responsible for maintaining and extending Barberini Analytics, a data mining and analytics platform that provides management and PR teams with business insights from data sources such as social media, review platforms, and the internal customer system.
Skills: Python · PostgreSQL · Basic Linux Administration
Education
-
M.Sc. IT-Systems Engineering
Hasso Plattner Institute
2021-04 – 2024-09 (expected)Highlighted courses: Programming Experience · Reverse Engineering · Advanced Programming Tools · Parallel Programming and Heterogeneous Computing · Neurodesign · Global Design Thinking Workshop
-
B.Sc. IT-Systems Engineering
Hasso Plattner Institute
2017-10 – 2021-03
Final grade: 1.5 (very good)Highlighted courses: Project Management · Programming of User Interfaces · Agile Software Development in Large Teams
Featured Projects
-
TraceDebugger
2021-10 – present
TraceDebugger is a back-in-time debugger for Squeak that aims to improve the navigation experience and immediacy during debugging. Among other things, I proposed a novel state-centric perspective and presented it in our scientific paper at the Programming Experience 2023 workshop.
-
Contributions to Squeak
2019-05 – present
Squeak is an interactive programming system for Smalltalk that is completely implemented in itself and promotes values such as flexibility, liveness, and explorability. I am engaging in the design and implementation of several subsystems, including tools for code browsing, debugging, and version control, the UI system, the exception handling system, and others. Since 2021, I am also a member of the core developers team. Working on a system of this complexity also gives me many opportunities to learn about common trade-offs such as compatibility and modularity, quality and quantity, or products and people.
Major accomplishments:
- Reworked the inspector tool family, added watch expressions, and designed a new extension API.
- Fixed several critical bugs in the debugging infrastructure and the exception handling system.
- Supported the Squeak 6.0 release, in particular by authoring the release notes.
-
Contributions to VBRegex
2020-03 – present
VBRegex is a regular expression engine for Squeak/Smalltalk that emphasizes an explorable implementation and a clean object-oriented design. I co-maintain the project and have contributed several bug fixes and new features such as named capture groups (
(?<name>)
, lookarounds ((?<=)
etc.), match resets (\K
), and others. I also built a visualization tool to explore the matcher‘s behavior. -
SimulationStudio
2021-05 – present
SimulationStudio exploits the flexible nature of Squeak‘s call stack model and provides a framework for fine-grained control of the execution through code simulation. Building on this, SimulationStudio offers a sandbox for isolated execution and multiple tools for the behavior-centric exploration of classes and objects.
-
Downstream Repository Mining
2021-04 – 2022-04
I developed a VS Code extension in TypeScript that collects downstream dependency projects for npm packages from GitHub & Co. and allows package developers to analyze usage samples from their IDE. I presented the tool and the underlying approach in our scientific paper at the ENASE/2022 conference.
-
Sonyx
2021-04 – 2022-05
Sonyx is a research prototype that attempts to support exploratory programming tasks through the use of auditory displays. Programmers can define custom ad-hoc sonifications of individual program elements to inspect and monitor their source code. Our user study indicated that auditory displays can make programmers more satisfied and effective.
Publications
- Christoph Thiede, Willy Scheibel, and Jürgen Döllner. 2024. Bringing Objects to Life: Supporting Program Comprehension through Animated 2.5D Object Maps from Program Traces. In Proceedings of the 15th International Conference on Information Visualization Theory and Applications (IVAPP 2024), February 27–29, Rome, Italy. SciTePress, 9 pages. DOI: 10.5220/0012393900003660. Preprint/Poster/Slides.
- Christoph Thiede, Marcel Taeumel, and Robert Hirschfeld. 2023. Time-Awareness in Object Exploration Tools: Toward In Situ Omniscient Debugging. In Proceedings of the 2023 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward! ’23), October 25–27, 2023, Cascais, Portugal. ACM, New York, NY, USA, 14 pages. DOI: 10.1145/3622758.3622892.
- Christoph Thiede and Patrick Rein. 2023. Squeak by Example. 6.0 Edition. ISBN: 978-1-4476-2948-1. Paperback/PDF.
- Christoph Thiede, Marcel Taeumel, and Robert Hirschfeld. 2023. Object-Centric Time-Travel Debugging: Exploring Traces of Objects. In Companion Proceedings of the 7th International Conference on the Art, Science, and Engineering of Programming (<Programming>’23 Companion), March 13–17, 2023, Tokyo, Japan. ACM, New York, NY, USA, 7 pages. DOI: 10.1145/3594671.3594678
- Christoph Thiede, Willy Scheibel, Daniel Limberger, and Jürgen Döllner. 2022. Augmenting Library Development by Mining Usage Data from Downstream Dependencies. In Proceedings of 17th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE 2022). 221–232. DOI: 10.5220/0011093700003176
- Christoph Thiede and Patrick Rein. 2021. Squeak by Example. Vol. 5.3.1.
Philosophy
I am striving to base my work on the following values:
- Agile: Engineering should be fun, but rigid processes aren‘t! Just as slow feedback loops in your IDE can get you tired and risk-averse, delayed human feedback can also be deadly for any project. In my projects, I always seek to stay flexible and give and receive feedback as early as possible.
- Openness by default: Black boxes are mean, whether on an implementational or organizational level. Transparent artifacts teach us, inspire us, and they can avoid annoying communication overhead. Whenever possible, I document and publish each of my projects.
- Talk to people, not to machines: Code should always tell us a story and not be obfuscated by tiny optimizations. If the computer does not get your code fast, optimize the compiler, not your code. In 90% of all cases, readability matters more than performance. In the remaining 10%, I make sure to document my intentions.
- Kaizen (改善, change for the better): There is no perfect process, so reflection and improvement should be part of every process. In particular, I also apply kaizen to my own philosophy. :-)