Joris Yidong Scholl

IT-Project Portfolio joris.scholl@posteo.de

Hi! I'm a programmer and climate activist! On this homepage I present some of the programming and research projects I have worked on in the past and invite you to contact me if you are interested in any of these or want to collaborate!


oemof.surrogate – Master’s Thesis Package

What I learned:

Gurobi, oemof.solph, Machine Learning, Optimization, Python Packaging

  • Developed a scalable energy system optimization tool for urban districts
  • Modeled infrastructure and operation based on technical and cost parameters
  • Integrated machine learning algorithms to accelerate computationally intensive tasks
  • Gained hands-on experience with surrogate modeling and validation techniques
  • Used oemof.solph and Gurobi for linear energy system optimization
  • Packaged the tool as a reusable Python module with comprehensive documentation
  • Created tutorials to ensure usability for future colleagues and related projects
Fraunhofer UMSICHT – Master’s Thesis Project

During my time at the Fraunhofer Institute for Environmental, Safety, and Energy Technology UMSICHT, I developed a Python-based planning tool for optimizing local energy systems as part of my Master’s thesis. The tool leverages oemof.solph and Gurobi to simulate and optimize both operational behavior and infrastructure layout across different scenarios, using parameters such as meteorological data, technology costs, and efficiency assumptions.

A key innovation was the integration of lightweight machine learning models to act as surrogates for more complex simulations—dramatically reducing computation time and making the planning process significantly more scalable.

In addition to the technical modeling, I placed strong emphasis on usability and reusability: clean documentation, modular structure, tutorials, and adherence to modern Python packaging standards made the project truly sustainable for future use.

2024 – 2025

Phyloptimize (Read Publication)

What I learned:

Python, Flask, Docker, Gurobi, Celery, Redis, SQL, HTML, GIS
  • Gained experience in Python-based web development using Flask and SQL
  • Built a multi-container architecture using Docker and Docker Compose
  • Implemented task queuing with Celery and Redis to manage long-running optimization tasks
  • Designed a clean separation between frontend and backend components
Screenshot of optimization interface Styling options for visualizations
Project Overview

Phyloptimize was developed during my work at the Chair of Ecoinformatics at Ruhr University Bochum. It is a Python-based application that improves the readability of geophylogenetic trees by minimizing edge crossings in visualizations — a common issue when projecting such trees onto geographic maps.

The tool formulates the visualization problem as an Integer Linear Program (ILP), solved using Gurobi. To make it accessible and interactive, I designed a Flask-powered frontend where users can:

  • Upload phylogenetic trees and geolocation files
  • Customize visual parameters (e.g., edge curves, leader length)
  • Download optimized diagrams with static map backgrounds (via Geoapify)
Given that optimization tasks can be computationally intensive, I integrated Celery and Redis to handle these asynchronously in a separate task queue, ensuring the frontend remains responsive. The entire application is containerized using Docker, allowing scalable deployment and easier maintenance.

The underlying algorithm and results were presented in a peer-reviewed GIScience 2023 conference publication. An open-source release is planned once development is finalized, along with public hosting for broader community use.

2023 – 2024

Review and CFD Simulation of Backward-Facing Steps

What I learned:

Ansys, MATLAB, Batch Scripting

  • Conducted CFD simulations with Ansys, including:
    • Geometry creation
    • Mesh generation
    • Solver setup and execution
    • Result visualization
  • Automated large batch simulations with varying parameter sets using design points
  • Extracted Ansys Fluent internal results to widely readable formats using scripting
CFD Simulation

This project thesis, conducted during my studies, focused on developing a method for efficiently setting up, solving, and exporting laminar CFD simulation data for a three-dimensional backward-facing step geometry using Ansys Fluent within the Workbench environment.

The method was applied to fluids in both liquid and gaseous states and validated against literature data. The result was a reproducible, step-by-step approach for simulating such geometries, with detailed insights into handling common challenges and ensuring reliable results.

The most interesting aspect was automating what is typically a very manual process in Ansys Fluent. By leveraging design points and scripting tools, I created a fully automated workflow that could run and export solutions for numerous parameter configurations — improving scalability and efficiency.

2023

Schulrechner Get it on F-Droid
(Open Web Version)

What I learned:

Git CI, Pipelines, Electron, APK-Building with Cordova, Flatpaks

  • Learned reverse engineering techniques
  • Implemented complex math parsing and evaluation
  • Designed a calculator-style UI/UX for advanced math
  • Built the app entirely with web technologies
  • Packaged for Android and Linux (Flatpak)
  • Set up automated builds using GitHub Actions
  • Followed open-source practices for future F-Droid release
Schulrechner

Frustrated by the lack of free, open-source scientific calculators, I decided to reverse engineer my old calculator from school. With the ability to input complex equations and output fractions as well as decimals, this calculator produces math that looks like the math on your paper. This makes it much more suited for higher mathematics in university and school than your average mobile calculator (in case you forgot yours again and only have your phone), especially if you have become accustomed to the controls from a young age.

It is built completely from scratch using pure web technologies and packaged into both an Android app as well as a Flatpak package for use on Linux devices. As it is completely open-source and all package building steps are automated in a reproducible way via GitHub Pipelines, I plan to release it on the F-Droid Store as soon as the necessary quality controls are done.

2025 - Present

When to Mawa (Visit Website)

What I learned:

HTML, CSS, JavaScript, Node.js, SQL, Git
  • Deepened knowledge of responsive web design and front-end development
  • Improved usability through iterative user feedback cycles
  • Set up and maintained a self-hosted Node.js server on a Raspberry Pi
  • Designed and moderated a lightweight SQL database schema
  • Applied version control and collaborative workflows with GitHub
  • Optimized performance using bit arrays and IndexedDB for minimal data usage
Screenshot of When to Mawa
Project Overview

When to Mawa is a self-developed web-based scheduling tool inspired by When2Meet, tailored to the unique needs of grassroots organizing and activism. The idea was born during long-term climate protests in Bochum, where the legality of demonstrations relied on having a minimum number of participants present at all times.

Existing tools lacked features, mobile compatibility, and bandwidth efficiency. In response, I created a custom platform that supports flexible scheduling, participant roles, minimum attendance thresholds, and real-time coordination.

Key features include:

  • Customizable poll creation with:
    • Admin access control
    • Adjustable time-slot granularity
    • Role-based attendance tracking
    • Threshold warnings when required participants are missing
  • Calendar integration via ICS links for personal planning
  • Improved mobile experience with week-based layout and minimal scrolling
  • Feedback and comment sections for collaborative use
  • Data export as JSON
  • Automated detection of critical gaps in attendance and message generation for easy sharing
  • Bandwidth optimization for mobile devices by:
    • Encoding responses using bit arrays
    • Using client-side IndexedDB for local caching and delta updates
The entire system is hosted securely on a Raspberry Pi using HTTPS and hashed credentials. This project not only refined my technical skills, but also highlighted the importance of user-centered design in real-world applications.

2022 – Present

GoAres

What I learned:

HTML, CSS, JavaScript
  • Deepened my understanding of web design and responsive HTML
  • Collaborated with a diverse team of developers and designers using GitHub and Figma
GoAres

GoAres was a collaborative project I was invited to join by Fridays for Future Frankfurt, where I contributed as a web developer. The project took the form of an alternate reality puzzle game, centered around a fictional Mars expedition startup that claimed to offer an escape from Earth's pollution—only to replicate the same environmental disaster on another planet.

Players were tasked with uncovering the truth behind the company’s deception by solving a series of puzzles, ultimately leading them to participate in the global climate strike on September 25th.

I was responsible for developing the startup’s website, which served as the initial touchpoint for players to begin unraveling the story. Our team worked closely across disciplines, coordinating through the design platform Figma and managing code via GitHub.

2022

HumiditySensor

What I learned:

HTML, CSS, JS, Node.js

  • Soldering extremely small components
  • Designing PCB prototype circuits
  • Raspberry Pi communication with peripheral devices
  • Basic handling and interpretation of sensor measurements


HumiditySensor

To reduce heating costs and prevent mold, it’s important to monitor indoor humidity levels—since lower temperatures can increase relative humidity, potentially causing structural damage.

For this reason, I connected a self-built breakout board featuring the BME280 sensor (measuring humidity, temperature, and pressure) to a Raspberry Pi, and developed a user interface to read and visualize the data.

The BME280 itself is only around 2 mm in size, and soldering all 8 pins to a custom breakout board proved incredibly challenging. Only afterward did I discover that pre-made breakout boards for the sensor already exist.

This setup is extremely useful for observing the effects of regularly opening windows and for estimating how much a room can be cooled without risking condensation or mold growth.

2022

Bachelor's Thesis: Equations of State for MDEA Mixtures

What I learned:

LaTeX

  • English thesis writing
  • Working with LaTeX and Citavi
  • A lot about thermodynamics
  • Advanced equation fitting
Bachelor's Thesis

In my bachelor's thesis, I created equations of state for mixtures containing Methyldiethanolamine (MDEA). With these equations, you are capable of deriving all thermodynamic properties for a given temperature and pressure, like heat capacity or density. MDEA is a relevant chemical for carbon capture and storage technology, as it behaves much like Monoethanolamine (MEA), which is the most common absorbent of CO₂ in amine CCS. Knowledge of the thermodynamic properties of MDEA mixtures is thus critical for utilizing it in industrial processes. This is done in a semi-empirical way, by utilizing both fundamental relations of properties and empirical data. I collected this data through literature research and used a complex fitting algorithm to find an equation in terms of the Helmholtz energy to describe the given data points.

2021

(Yet) Unnamed 2D Dynamic Fighting Game

What I learned:

Unity, C#

  • Basic game development with Unity
  • Scripting with C#
Unnamed 2D Dynamic Fighting Game

A 2D side-scrolling fighting game, with the main form of combat being a kick move, used simultaneously to propel yourself from walls and hit enemies. It is very focused on mobility and flying around. I work on this privately and very irregularly, so there is no release date in sight, but I like the concept. All graphics and sprites are self-designed.

2022 – Present

Penta Solver (Web Link)

What I learned:

HTML, JS

  • "Game" simulation
  • Iterative problem solving
Penta Solver

The "Känguruknobelkette" is a math toy that could be won in a high school math competition. It is a chain with multiple foldable segments, and your task is to fold this chain into a given shape with the right colors. I programmed a little web tool that can solve any given shape by simulating the puzzle and finding the right combination of "folds".
You input the shape in the 5 by 5 grid and hit "Solve"!

2023

Rolling Ball on Math Curves

What I learned:

Matlab

  • Basic physics simulation
  • Matlab basics
Rolling Ball on Math Curves

After being introduced to Matlab in university, I wanted to explore it in a small personal project. This little physics simulation takes a math curve and calculates a "realistic" roll based on slope and friction.
This assumes the ball is a singularity and cannot leave the curve, like a rollercoaster on a track.

2019

Some 3D Models/Animations

What I learned:

Blender

  • Basic 3D modeling
  • Basic 3D animation
3D Modeling

I used Blender to create a small model for social media and performed some basic animations on it. I also used it to model my bedroom and preview how a new arrangement of furniture might look.
Additionally, a friend requested a model of our university with some solar panels on it for a presentation (not accurate in placement or size—just visual), which I created based on an existing 3D model of the university.

2021