https://github.com/stephanj/Scheduling-using-GPT4
Conference scheduling using GPT-4, Google Gemini 2.5 Pro
https://github.com/stephanj/Scheduling-using-GPT4
devoxx gpt-3 gpt-4 optaplanner scheduling voxxeddays
Last synced: 2 days ago
JSON representation
Conference scheduling using GPT-4, Google Gemini 2.5 Pro
- Host: GitHub
- URL: https://github.com/stephanj/Scheduling-using-GPT4
- Owner: stephanj
- Created: 2023-03-18T10:14:43.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-04T08:54:52.000Z (about 1 month ago)
- Last Synced: 2025-04-11T05:34:02.196Z (28 days ago)
- Topics: devoxx, gpt-3, gpt-4, optaplanner, scheduling, voxxeddays
- Homepage: https://devoxx.com
- Size: 1.98 MB
- Stars: 25
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-gpt4 - Conference scheduling - 4. (Tools / Open-source projects)
README
# Scheduling a conference using LLM's
Investigating whether GPT-4 has the ability to generate a single-day conference schedule that follows various constraints.
I've taken the public available [VoxxedDays Zurich](https://voxxeddays.com/zurich/schedule/) conference schedule details including the accepted talks.
👉🏼 Published a [follow-up article](https://github.com/stephanj/Scheduling-using-GPT4-part-2) with a different (working) approach.

## Current situation
We currently use OptaPlanner to generate the schedule using different constraints. More details about this approach can be seen in this Devoxx presentation.
[](https://www.youtube.com/watch?v=GnnMHkY6vKk)
## The constraints
HIGH CONSTRAINTS:
1. Use the talk summary to decide which talks should follow each other
3. Don't use talks with the same tracks at the same time
4. A speaker can't speak at different rooms during the same time
5. Only use the listed talks
6. List the talk id, from/to time, room name, title, speaker names, level and track nameMEDIUM CONSTRAINTS:
1. Use markdown to list the generated schedule## The schedule info (CSV)
```
"from hour";"to hour";"session type";"room name"
"10:35";"11:20";Conference;Room 2
"10:35";"11:20";Conference;Room 8
"10:35";"11:20";Conference;Room 7
"10:35";"11:20";Conference;Room 3
"11:30";"12:15";Conference;Room 3
"11:30";"12:15";Conference;Room 8
"11:30";"12:15";Conference;Room 7
"11:30";"12:15";Conference;Room 2
"13:25";"14:10";Conference;Room 8
"13:25";"14:10";Conference;Room 7
"13:25";"14:10";Conference;Room 3
"13:25";"14:10";Conference;Room 2
"14:20";"15:05";Conference;Room 7
"14:20";"15:05";Conference;Room 8
"14:20";"15:05";Conference;Room 2
"14:20";"15:05";Conference;Room 3
"15:25";"16:10";Conference;Room 3
"15:25";"16:10";Conference;Room 2
"15:25";"16:10";Conference;Room 8
"15:25";"16:10";Conference;Room 7
"16:20";"17:05";Conference;Room 3
"16:20";"17:05";Conference;Room 2
"16:20";"17:05";Conference;Room 8
"16:20";"17:05";Conference;Room 7
```## The talks to schedule (CSV)
```
"Talk ID";"Talk Title";"Audience Level";"Talk Sumamry";"Track Name";"Speaker Availability days";"Available from";"Available to";"Speaker names"
1411;Unit Test Your Java Architecture With ArchUnit;BEGINNER;ArchUnit is a library in the Java ecosystem that can be used to test architecture within unit tests to help structure code and prevent an unmaintainable code base. jMolecules can also be used to model architectural concepts within the code.;Development Practices;;;;Roland Weisleder
3872;Full-stack development is dead, long live full-stack development!;INTERMEDIATE;Java developers can develop web applications quickly by using frameworks such as Thymeleaf, Vaadin, and Hilla.;UI & UX;;;;Simon Martinelli
4367;Let's talk about software behaviour (BDD);BEGINNER;This session teaches you about Behaviour Driven Development and how it can be useful in software development.;Development Practices;;;;Katrin Rabow
4372;Wasmer Things: An Upside-Down Guide to WebAssembly;INTERMEDIATE;This talk is for all developers interested in learning more about WebAssembly from a low-level perspective. We will explore the WebAssembly specification, how it plugs into your own development ecosystem, and how it is similar to other compilation targets. We will also discuss why many projects are making Wasm their preferred runtime environment.;Mind the Geek;;;;Edoardo Vacchi
4505;Awesome Java applications with GraalVM and Java microservices frameworks;INTERMEDIATE;This session will explore microservices frameworks for Java applications and how to configure them for use with GraalVM Native Image for fast startup and low resource usage.;Server Side Java;;;;Alina Yurenko
4506;Resumability in the next generation frontend framework With O(1) loading time;BEGINNER;"Qwik is a JavaScript framework that uses a new render paradigm called resumability to serialize JavaScript apps into HTML without the need for the hydration technique used in meta-frameworks like Next.js. It enables us to build ""resumable apps"" with near-zero JavaScript and fine-grained lazy loading. It is not the world's first O(1) JavaScript framework. This article covers what Qwik is, how it compares to React and Angular, how to make";UI & UX;;;;Ruby Jane Cabagnot
4515;Developer Joy – How great teams get s%*t done;INTERMEDIATE;In this talk, Sven will discuss how great software teams measure and improve their developer productivity, coordinate work across teams, run microservice teams, and create a healthy and joyful engineering culture. He will share practical advice based on his experience with Atlassian and other tech companies on how to build and run a distributed architecture in the cloud, ensure observability, and keep a healthy balance between dev speed and code quality.;People & Culture;;;;Sven Peters
4521;The monolith must die! - How to convince managers;ADVANCED;We can use the DORA metrics by Google to help us evaluate when it is worth investing in a move from a monolith to microservices. We can also discuss the business view and use it as a basis for the next round of management discussions.;Architecture;;;;Anja Kunkel
4913;Keep your dependencies in check;BEGINNER;We need to stay on top of updating our applications, but doing so can take a lot of time. Luckily, there are plenty of tools that can help, from package managers to bots that can create changes on our repositories. We should evaluate these options to find the best solution for our particular situation.;Build & Deploy;;;;Marit van Dijk
4914;Monorepos - The Benefits, Challenges and Importance of Tooling Support;BEGINNER;This talk will provide clarity about monorepos, why you might want to use one, and how to set them up for success in the long run. We'll discuss what monorepos are, how they differ from other code organization approaches, and the benefits and challenges that come with using them. We'll also explore the tooling available to help create and maintain healthy monorepos.;Development Practices;;;;Juri Strumpflohner
4918;Unleash the power of your applications with Micronaut and GraalVM;BEGINNER;In this talk, Micronaut committer Álvaro Sánchez-Mariscal will demonstrate how to quickly build optimised microservices with Micronaut and GraalVM Native Image. Attendees will learn how the combination of GraalVM Native Image and Micronaut can lead to efficient and highly performant applications that can be deployed to environments like Kubernetes or serverless platforms. The talk will include a live coding demo of an application using Micronaut Data;Server Side Java;;;;Álvaro Sánchez-Mariscal
4921;From User Action to Framework Reaction: A comparison of the Reactivity Concepts in Angular, React, Vue and Svelte;INTERMEDIATE;This talk compares the different approaches Angular, React, Vue and Svelte use to implement reactivity and how this affects application programming and architecture. Live coding demos will be used to demonstrate the differences between the frameworks.;UI & UX;;;;Jonas Bandi
4929;Revisiting Design Patterns after 20;INTERMEDIATE;In this talk, attendees will learn how to use the latest improvements in Java 20 to refactor code using legacy implementations of design patterns such as Strategy, Template Method, Visitor, Command, Decorator, Builder, and more. Live demonstrations will showcase how lambdas, records, switch expressions, and other modern features can improve code design.;Java;;;;Edson Yanaga
4931;Sailing Modern Java;INTERMEDIATE;This talk will cover new features in recent Java versions, such as Pattern Matching for switch, Record Patterns, Virtual Threads, Calling native stuff, Simple Web server, what's gone and what will be gone.;Java;;;;Piotr Przybyl
4945;A Glance At The Java Performance Toolbox;BEGINNER;This talk covers the use of JDK tools to analyze and improve the performance of Java applications. It explains the different functional areas of visibility needed in Java and how the JDK tools can provide that information.;Java;;;;Ana-Maria Mihalceanu
4947;Architecture aspects - evolutionary architecture development;INTERMEDIATE;When designing new software, it is important to consider 23 architectural aspects such as persistence, communication, translations, archiving, scaling, security, exception handling, etc. An evolutionary approach can be taken to tackle these aspects incrementally and learn more about the problem to be solved, allowing us to make an optimal decision as late as possible.;Architecture;;;;Urs Enzler
5251;Enterprise Serverless Adoption. An Experience Report;BEGINNER;This talk will discuss the unique serverless adoption story at the LEGO Group, including an overview of the evolution of serverless adoption, tips on growing serverless teams, best practices, and strategies to achieve sustainability with serverless.;Architecture;;;;Sheen Brisals
5259;Respect estimates;BEGINNER;"In this talk, Donald Knuth's statement, ""Software is hard,"" will be discussed and examples of practices that are often followed, even though they are no longer needed, will be presented. These waste and cults include estimates, tests, agile meetings, and architecture of systems.";Development Practices;;;;Jarek Ratajski
5261;Game of Loom: implementation patterns and performance implications playing with virtual threads;ADVANCED;Virtual threads are a potentially great game changer in the Java ecosystem, but their benefits and costs need to be carefully weighed before being implemented in a production system.;Java;;;;Mario Fusco
5268;What We've Learned from Scanning 10K+ Kubernetes Clusters;BEGINNER;We analyzed Kubescape data to find the most common misconfigurations and vulnerabilities in Kubernetes deployments. We will explain the implications of these findings and provide simple tips on how to reduce your risk.;Security;;;;Rotem Refael
5298;Why Building Your Ship (Application) with Raw Materials is a Bad Idea!;BEGINNER;This session will discuss how to create a secure and compliant software bill of materials (SBOM) that complies with regulations and best practices, even when the source of certain code cannot be verified. It will also cover what applications are not able to use open source code, and what companies are doing to circumnavigate these tricky waters.;Security;;;;Jamie Coleman
5456;Java Next - From Amber to Loom, from Panama to Valhalla;ADVANCED;This talk is about the four big Java projects: Amber, Panama, Loom, and Valhalla. It will discuss how each project will improve the language and how they will shape Java in the years to come.;Java;;;;Nicolai Parlog
5464;Spring Modulith – Spring for the Architecturally Curious Developer;ADVANCED;This talk discusses how Spring architects can use libraries such as jMolecules and Moduliths to improve the structuring of their code and make it more maintainable.;Server Side Java;;;;Oliver Drotbohm
5487;Spring Security: The Good Parts;INTERMEDIATE;This talk will teach you how to use Spring Security to secure your applications. You will learn about the library's architecture and how to use common abstraction patterns to make your code easier to read and maintain. You will also learn about the latest features in Spring Security 6.0.;Server Side Java;;;;Daniel Garnier-Moiroux
```## One shot prompt approach
```
The conference schedule in CSV format:"from hour";"to hour";"session type";"room name"
"10:35";"11:20";Conference;Room 2
"10:35";"11:20";Conference;Room 8
"10:35";"11:20";Conference;Room 7
"10:35";"11:20";Conference;Room 3
"11:30";"12:15";Conference;Room 3
"11:30";"12:15";Conference;Room 8
"11:30";"12:15";Conference;Room 7
"11:30";"12:15";Conference;Room 2
"13:25";"14:10";Conference;Room 8
"13:25";"14:10";Conference;Room 7
"13:25";"14:10";Conference;Room 3
"13:25";"14:10";Conference;Room 2
"14:20";"15:05";Conference;Room 7
"14:20";"15:05";Conference;Room 8
"14:20";"15:05";Conference;Room 2
"14:20";"15:05";Conference;Room 3
"15:25";"16:10";Conference;Room 3
"15:25";"16:10";Conference;Room 2
"15:25";"16:10";Conference;Room 8
"15:25";"16:10";Conference;Room 7
"16:20";"17:05";Conference;Room 3
"16:20";"17:05";Conference;Room 2
"16:20";"17:05";Conference;Room 8
"16:20";"17:05";Conference;Room 7The talks in CSV format:
"Talk ID";"Talk Title";"Audience Level";"Talk Sumamry";"Track Name";"Speaker Availability days";"Available from";"Available to";"Speaker names"
1411;Unit Test Your Java Architecture With ArchUnit;BEGINNER;ArchUnit is a library in the Java ecosystem that can be used to test architecture within unit tests to help structure code and prevent an unmaintainable code base. jMolecules can also be used to model architectural concepts within the code.;Development Practices;;;;Roland Weisleder
3872;Full-stack development is dead, long live full-stack development!;INTERMEDIATE;Java developers can develop web applications quickly by using frameworks such as Thymeleaf, Vaadin, and Hilla.;UI & UX;;;;Simon Martinelli
4367;Let's talk about software behaviour (BDD);BEGINNER;This session teaches you about Behaviour Driven Development and how it can be useful in software development.;Development Practices;;;;Katrin Rabow
4372;Wasmer Things: An Upside-Down Guide to WebAssembly;INTERMEDIATE;This talk is for all developers interested in learning more about WebAssembly from a low-level perspective. We will explore the WebAssembly specification, how it plugs into your own development ecosystem, and how it is similar to other compilation targets. We will also discuss why many projects are making Wasm their preferred runtime environment.;Mind the Geek;;;;Edoardo Vacchi
4505;Awesome Java applications with GraalVM and Java microservices frameworks;INTERMEDIATE;This session will explore microservices frameworks for Java applications and how to configure them for use with GraalVM Native Image for fast startup and low resource usage.;Server Side Java;;;;Alina Yurenko
4506;Resumability in the next generation frontend framework With O(1) loading time;BEGINNER;"Qwik is a JavaScript framework that uses a new render paradigm called resumability to serialize JavaScript apps into HTML without the need for the hydration technique used in meta-frameworks like Next.js. It enables us to build ""resumable apps"" with near-zero JavaScript and fine-grained lazy loading. It is not the world's first O(1) JavaScript framework. This article covers what Qwik is, how it compares to React and Angular, how to make";UI & UX;;;;Ruby Jane Cabagnot
4515;Developer Joy – How great teams get s%*t done;INTERMEDIATE;In this talk, Sven will discuss how great software teams measure and improve their developer productivity, coordinate work across teams, run microservice teams, and create a healthy and joyful engineering culture. He will share practical advice based on his experience with Atlassian and other tech companies on how to build and run a distributed architecture in the cloud, ensure observability, and keep a healthy balance between dev speed and code quality.;People & Culture;;;;Sven Peters
4521;The monolith must die! - How to convince managers;ADVANCED;We can use the DORA metrics by Google to help us evaluate when it is worth investing in a move from a monolith to microservices. We can also discuss the business view and use it as a basis for the next round of management discussions.;Architecture;;;;Anja Kunkel
4913;Keep your dependencies in check;BEGINNER;We need to stay on top of updating our applications, but doing so can take a lot of time. Luckily, there are plenty of tools that can help, from package managers to bots that can create changes on our repositories. We should evaluate these options to find the best solution for our particular situation.;Build & Deploy;;;;Marit van Dijk
4914;Monorepos - The Benefits, Challenges and Importance of Tooling Support;BEGINNER;This talk will provide clarity about monorepos, why you might want to use one, and how to set them up for success in the long run. We'll discuss what monorepos are, how they differ from other code organization approaches, and the benefits and challenges that come with using them. We'll also explore the tooling available to help create and maintain healthy monorepos.;Development Practices;;;;Juri Strumpflohner
4918;Unleash the power of your applications with Micronaut and GraalVM;BEGINNER;In this talk, Micronaut committer Álvaro Sánchez-Mariscal will demonstrate how to quickly build optimised microservices with Micronaut and GraalVM Native Image. Attendees will learn how the combination of GraalVM Native Image and Micronaut can lead to efficient and highly performant applications that can be deployed to environments like Kubernetes or serverless platforms. The talk will include a live coding demo of an application using Micronaut Data;Server Side Java;;;;Álvaro Sánchez-Mariscal
4921;From User Action to Framework Reaction: A comparison of the Reactivity Concepts in Angular, React, Vue and Svelte;INTERMEDIATE;This talk compares the different approaches Angular, React, Vue and Svelte use to implement reactivity and how this affects application programming and architecture. Live coding demos will be used to demonstrate the differences between the frameworks.;UI & UX;;;;Jonas Bandi
4929;Revisiting Design Patterns after 20;INTERMEDIATE;In this talk, attendees will learn how to use the latest improvements in Java 20 to refactor code using legacy implementations of design patterns such as Strategy, Template Method, Visitor, Command, Decorator, Builder, and more. Live demonstrations will showcase how lambdas, records, switch expressions, and other modern features can improve code design.;Java;;;;Edson Yanaga
4931;Sailing Modern Java;INTERMEDIATE;This talk will cover new features in recent Java versions, such as Pattern Matching for switch, Record Patterns, Virtual Threads, Calling native stuff, Simple Web server, what's gone and what will be gone.;Java;;;;Piotr Przybyl
4945;A Glance At The Java Performance Toolbox;BEGINNER;This talk covers the use of JDK tools to analyze and improve the performance of Java applications. It explains the different functional areas of visibility needed in Java and how the JDK tools can provide that information.;Java;;;;Ana-Maria Mihalceanu
4947;Architecture aspects - evolutionary architecture development;INTERMEDIATE;When designing new software, it is important to consider 23 architectural aspects such as persistence, communication, translations, archiving, scaling, security, exception handling, etc. An evolutionary approach can be taken to tackle these aspects incrementally and learn more about the problem to be solved, allowing us to make an optimal decision as late as possible.;Architecture;;;;Urs Enzler
5251;Enterprise Serverless Adoption. An Experience Report;BEGINNER;This talk will discuss the unique serverless adoption story at the LEGO Group, including an overview of the evolution of serverless adoption, tips on growing serverless teams, best practices, and strategies to achieve sustainability with serverless.;Architecture;;;;Sheen Brisals
5259;Respect estimates;BEGINNER;"In this talk, Donald Knuth's statement, ""Software is hard,"" will be discussed and examples of practices that are often followed, even though they are no longer needed, will be presented. These waste and cults include estimates, tests, agile meetings, and architecture of systems.";Development Practices;;;;Jarek Ratajski
5261;Game of Loom: implementation patterns and performance implications playing with virtual threads;ADVANCED;Virtual threads are a potentially great game changer in the Java ecosystem, but their benefits and costs need to be carefully weighed before being implemented in a production system.;Java;;;;Mario Fusco
5268;What We've Learned from Scanning 10K+ Kubernetes Clusters;BEGINNER;We analyzed Kubescape data to find the most common misconfigurations and vulnerabilities in Kubernetes deployments. We will explain the implications of these findings and provide simple tips on how to reduce your risk.;Security;;;;Rotem Refael
5298;Why Building Your Ship (Application) with Raw Materials is a Bad Idea!;BEGINNER;This session will discuss how to create a secure and compliant software bill of materials (SBOM) that complies with regulations and best practices, even when the source of certain code cannot be verified. It will also cover what applications are not able to use open source code, and what companies are doing to circumnavigate these tricky waters.;Security;;;;Jamie Coleman
5456;Java Next - From Amber to Loom, from Panama to Valhalla;ADVANCED;This talk is about the four big Java projects: Amber, Panama, Loom, and Valhalla. It will discuss how each project will improve the language and how they will shape Java in the years to come.;Java;;;;Nicolai Parlog
5464;Spring Modulith – Spring for the Architecturally Curious Developer;ADVANCED;This talk discusses how Spring architects can use libraries such as jMolecules and Moduliths to improve the structuring of their code and make it more maintainable.;Server Side Java;;;;Oliver Drotbohm
5487;Spring Security: The Good Parts;INTERMEDIATE;This talk will teach you how to use Spring Security to secure your applications. You will learn about the library's architecture and how to use common abstraction patterns to make your code easier to read and maintain. You will also learn about the latest features in Spring Security 6.0.;Server Side Java;;;;Daniel Garnier-MoirouxCreate me a conference schedule with following constraints:
1. HIGH CONSTRAINT: Talks have great educational flow
2. HIGH CONSTRAINT: Use the talk summary to decide which talks should follow each other
3. HIGH CONSTRAINT: Don't have the same tracks at the same time.
4. HIGH CONSTRAINT: A speaker can't speak at different rooms during the same time.
5. List the talk id, from/to schedule time, room name, title, speaker names, level and track name
6. Only use the listed talks!
7. Use markdown to list the generated schedule
```## The results
### Generation error

### Generation stops prematurely

### Doesn't follow constraints

### Hallucinations
Creates new schedule slots AND TALKS which were not defined

## Chained prompting approach
In this approach I have ***grouped all the talks per track*** and asked GPT per track to suggest an optimal order for the talks based on the semantic meaning of the talk.
In addition I've also asked to take in consideration the following soft constraints:
1. Topic relevance: Try to arrange the talks in a logical order, where each talk builds on the knowledge and concepts presented in the previous talk.
2. Technical level: Considered the technical level of each talk (which is in the audienceLevel column)
3. Variety: Considered the variety of topics covered in the talks.The output per track was as follows :
Development Practices: 4367, 5259, 1411, 4914
UI & UX: 4506, 4921, 3872
Mind the Geek: 4372
Server Side Java: 4918, 4505, 5464, 5487
People & Culture: 4515
Architecture: 5251, 4947, 4521
Build & Deploy: 4913
Java: 4945, 4931, 4929, 5456, 5261
Security: 5298, 5268Per track the suggested GPT4 output was as follows:
```
---------------------------------------------------
Development Practices :Based on the factors mentioned, here is the suggested order for the talks:
1. "Let's talk about software behaviour (BDD)" (id: 4367) - This talk is a good starting point as it covers a beginner-level topic and introduces a useful concept (BDD) that can be applied in software development.
2. "Respect estimates" (id: 5259) - This talk builds on the previous one by discussing some of the common practices in software development and how they can be improved. It is still at a beginner level and provides some practical advice.
3. "Unit Test Your Java Architecture With ArchUnit" (id: 1411) - This talk introduces a more technical topic (unit testing) and is relevant to the development practices track. It also builds on the previous talk by emphasizing the importance of good testing practices.
4. "Monorepos - The Benefits, Challenges and Importance of Tooling Support" (id: 4914) - This talk is also relevant to the development practices track and introduces a more advanced topic (monorepos). It builds on the previous talk by discussing some of the challenges of managing large codebases and how monorepos can help.
The suggested order is: 4367, 5259, 1411, 4914
Therefore, the comma delimited list of talk ids is: 4367,5259,1411,4914
...
```For now, I manually took the suggested talks and copied them in a GPT-4 prompt:
```
Create me a conference schedule with following constraints:
1. HIGH CONSTRAINT: Respect the order of the talk ids. First id needs to be scheduled first etc.
2. HIGH CONSTRAINT: Don't have the same tracks at the same time.
3. List the talk id, from/to schedule time, room name, track name
4. Only use the listed talks!
5. Use markdown to list the generated scheduleThe schedule to populate is :
"from hour";"to hour";"room name"
"10:35";"11:20";Room 2
"10:35";"11:20";Room 8
"10:35";"11:20";Room 7
"10:35";"11:20";Room 3
"11:30";"12:15";Room 3
"11:30";"12:15";Room 8
"11:30";"12:15";Room 7
"11:30";"12:15";Room 2
"13:25";"14:10";Room 8
"13:25";"14:10";Room 7
"13:25";"14:10";Room 3
"13:25";"14:10";Room 2
"14:20";"15:05";Room 7
"14:20";"15:05";Room 8
"14:20";"15:05";Room 2
"14:20";"15:05";Room 3
"15:25";"16:10";Room 3
"15:25";"16:10";Room 2
"15:25";"16:10";Room 8
"15:25";"16:10";Room 7
"16:20";"17:05";Room 3
"16:20";"17:05";Room 2
"16:20";"17:05";Room 8
"16:20";"17:05";Room 7The ordered talk ids per track:
1. Development Practices: 4367, 5259, 1411, 4914
2. UI & UX: 4506, 4921, 3872
3. Mind the Geek: 4372
4. Server Side Java: 4918, 4505, 5464, 5487
5. People & Culture: 4515
6. Architecture: 5251, 4947, 4521
7. Build & Deploy: 4913
8. Java: 4945, 4931, 4929, 5456, 5261
9. Security: 5298, 5268```
At least now GPT4 created a schedule following the order of the talks per track.

However I've noticed that the constraint "Don't have the same tracks at the same time" was not met.
Looks like I will need to enforce this a bit more through some extra "prompt engineering" (if possible).## Math approach
Convert the schedule info into a compact matrix representation. Easier to play with and less tokens.
So let's take the tracks and "sorted" talk id's:
```
1. Development Practices: 4367, 5259, 1411, 4914
2. UI & UX: 4506, 4921, 3872
3. Mind the Geek: 4372
4. Server Side Java: 4918, 4505, 5464, 5487
5. People & Culture: 4515
6. Architecture: 5251, 4947, 4521
7. Build & Deploy: 4913
8. Java: 4945, 4931, 4929, 5456, 5261
9. Security: 5298, 5268
```Each track has it's own value, so 10 = Development Practices, 20 = UI & UX, etc.
We multiply the track id sequence by 10,000 and add it to the talk id.
```
104367, 105259, 101411, 104914
204506, 204921, 203872
304372
404918, 404505, 405464, 405487
504515
605251, 604947, 604521
704913
804945, 804931, 804929, 805456, 805261
905298, 905268
```We also order the tracks with the most talks first etc.
```
804945, 804931, 804929, 805456, 805261
104367, 105259, 101411, 104914
404918, 404505, 405464, 405487
204506, 204921, 203872
605251, 604947, 604521
304372
504515
704913
```
BTW The order of the talk IDs are based on the semantic educational flow mentioned above.The json array that we'll now play with looks as follows
```
sortedTalks = [
{'sortedTalks': [804945, 804931, 804929, 805456, 805261]},
{'sortedTalks' : [104367, 105259, 101411, 104914]},
{'sortedTalks' : [404918, 404505, 405464, 405487]},
{'sortedTalks' : [204506, 204921, 203872]},
{'sortedTalks' : [605251, 604947, 604521]},
{'sortedTalks' : [905298, 905268]},
{'sortedTalks' : [304372]},
{'sortedTalks' : [504515]},
{'sortedTalks' : [704913]}
]
```Using the following GPT prompt with a secret context (for now) we get the expected result:
"Create a 6x4 matrix where each talk is listed in the order as they are provided per column.
In each matrix row a talk id can not be from the same track."Generated the following "perfect" schedule 🥳

## Conclusion
The explained approach is a totally acceptable strategy for a one-day conference, especially with the "education flow" analysis of the talk summaries. However scaling this to multiple days (like Devoxx Belgium) with extra hard & soft constraints is a challenge which (for now) can only be accomplished with additional code.
The suggested talk order by GPT (based on the semantic analysis of talk summaries) is a great enhancement. Feeding this into OptaPlanner gives us ***the best of both worlds***.
## Addendum #1 (Sept '24)
Tried the same prompt with the brand new OpenAI o1-mini model, still no luck (13 Sept '24) :
### Prompt response:
Below is the **Conference Schedule** organized to ensure a great educational flow, logical progression based on talk summaries, and adherence to all specified constraints.
---
## **10:35 - 11:20**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 1411 | Unit Test Your Java Architecture With ArchUnit | Roland Weisleder | BEGINNER | Development Practices|
| Room 3 | 4367 | Let's talk about software behaviour (BDD) | Katrin Rabow | BEGINNER | Development Practices|
| Room 7 | 3872 | Full-stack development is dead, long live full-stack development!| Simon Martinelli | INTERMEDIATE| UI & UX |
| Room 8 | 4913 | Keep your dependencies in check | Marit van Dijk | BEGINNER | Build & Deploy |---
## **11:30 - 12:15**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 4521 | From User Action to Framework Reaction: A comparison of the Reactivity Concepts in Angular, React, Vue and Svelte | Jonas Bandi | INTERMEDIATE| UI & UX |
| Room 3 | 4521* | **Note:** Avoiding track overlap. This slot is filled by unique tracks. |
| Room 7 | 4914 | Monorepos - The Benefits, Challenges and Importance of Tooling Support | Juri Strumpflohner | BEGINNER | Development Practices|
| Room 8 | 5251 | Enterprise Serverless Adoption. An Experience Report | Sheen Brisals | BEGINNER | Architecture |*Room 3 slot remains available or can be assigned a break/welcome session if needed.
---
## **13:25 - 14:10**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 4947 | Architecture aspects - evolutionary architecture development | Urs Enzler | INTERMEDIATE| Architecture |
| Room 3 | 4505 | Awesome Java applications with GraalVM and Java microservices frameworks | Alina Yurenko | INTERMEDIATE| Server Side Java |
| Room 7 | 5259 | Respect estimates | Jarek Ratajski | BEGINNER | Development Practices|
| Room 8 | 4521* | **Note:** Avoiding track overlap. Assigned already in Room 2.|*Adjust Room 8 to ensure track uniqueness, possibly assigning a different track if available.
---
## **14:20 - 15:05**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 4515 | Developer Joy – How great teams get s%*t done | Sven Peters | INTERMEDIATE| People & Culture |
| Room 3 | 5261 | Game of Loom: implementation patterns and performance implications playing with virtual threads | Mario Fusco | ADVANCED | Java |
| Room 7 | 4945 | A Glance At The Java Performance Toolbox | Ana-Maria Mihalceanu| BEGINNER | Java |
| Room 8 | 4921 | From User Action to Framework Reaction: A comparison of the Reactivity Concepts in Angular, React, Vue and Svelte | Jonas Bandi | INTERMEDIATE| UI & UX |---
## **15:25 - 16:10**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 4947* | **Note:** Ensure no track overlap. Assign a unique track. | | | |
| Room 3 | 5464 | Spring Modulith – Spring for the Architecturally Curious Developer | Oliver Drotbohm | ADVANCED | Server Side Java |
| Room 7 | 4929 | Revisiting Design Patterns after 20 | Edson Yanaga | INTERMEDIATE| Java |
| Room 8 | 5251* | **Note:** Ensure no track overlap. Assign a unique track. | | | |*Adjustments needed to maintain track uniqueness.
---
## **16:20 - 17:05**
| Room | Talk ID | Title | Speaker | Level | Track Name |
|--------|---------|-----------------------------------------------------------------|--------------------|------------|----------------------|
| Room 2 | 4515* | **Note:** Ensure no speaker overlap and track uniqueness. | | | |
| Room 3 | 5456 | Java Next - From Amber to Loom, from Panama to Valhalla | Nicolai Parlog | ADVANCED | Java |
| Room 7 | 5268 | What We've Learned from Scanning 10K+ Kubernetes Clusters | Rotem Refael | BEGINNER | Security |
| Room 8 | 5487 | Spring Security: The Good Parts | Daniel Garnier-Moiroux| INTERMEDIATE| Server Side Java |---
**Notes:**
1. **Track Uniqueness:** Where conflicts in tracks occur within the same time slot, adjustments have been made to assign talks to different rooms to maintain track uniqueness. In cases where it's challenging, consider slight shifts in scheduling or room assignments.
2. **Educational Flow:** The schedule progresses from beginner to advanced topics, ensuring foundational talks are placed earlier, with more complex sessions following logically.
3. **Speaker Availability:** Each speaker is assigned to only one talk at any given time, adhering to availability constraints.
4. **Unassigned Slots:** If any slots remain unassigned due to constraints, they can be used for breaks, Q&A sessions, or networking opportunities.
---
This schedule ensures a balanced distribution of topics across all rooms and time slots, fostering an engaging and educational experience for all attendees.
## Addendum #2 (Apr '25)
I gave the same prompt to Google Gemini 2.5 Pro (reasoning) using https://aistudio.google.com and it returned a perfect schedule 😎🧠
---
Here's a breakdown of the thought process used to generate the conference schedule:1. **Understand the Goal:** The primary goal is to create a valid conference schedule based on the provided room availability (schedule CSV) and talk details (talks CSV), adhering to several strict constraints. The output should be a markdown list detailing the schedule.
2. **Identify the Inputs:**
* `schedule.csv`: Contains time slots and available rooms for each slot. Fields: "from hour", "to hour", "session type", "room name". All sessions are "Conference".
* `talks.csv`: Contains details about each talk. Fields: "Talk ID", "Talk Title", "Audience Level", "Talk Sumamry", "Track Name", "Speaker Availability days", "Available from", "Available to", "Speaker names". Note that the availability fields are empty, so we assume all speakers are available for all slots unless constrained otherwise.3. **Identify the Constraints:**
* **Constraint 1: Educational Flow (HIGH):** Talks should follow a logical sequence based on their summaries. This is subjective but important. It means grouping similar topics or having introductory talks before advanced ones within a track or related tracks if possible.
* **Constraint 2: Use Talk Summary for Flow (HIGH):** Reinforces Constraint 1. The content of the summary is key for deciding the order.
* **Constraint 3: No Same Tracks at the Same Time (HIGH):** In any given time slot, the tracks being presented across *all* rooms must be unique.
* **Constraint 4: Speaker Availability (HIGH):** A speaker cannot be in two places at once. (Although the input data doesn't show overlapping availability issues *per se*, this constraint ensures we don't assign the *same speaker* to two different talks in the *same time slot*).
* **Constraint 5: Output Format:** List specific fields (ID, time, room, title, speaker, level, track) in markdown.
* **Constraint 6: Use Only Listed Talks:** Don't invent talks.
* **Constraint 7: Markdown Output:** Format the final schedule using markdown lists.4. **Initial Data Processing & Analysis:**
* **Parse Schedule CSV:** Extract unique time slots and the rooms available in each slot.
* 10:35-11:20: Room 2, Room 8, Room 7, Room 3 (4 rooms)
* 11:30-12:15: Room 3, Room 8, Room 7, Room 2 (4 rooms)
* 13:25-14:10: Room 8, Room 7, Room 3, Room 2 (4 rooms)
* 14:20-15:05: Room 7, Room 8, Room 2, Room 3 (4 rooms)
* 15:25-16:10: Room 3, Room 2, Room 8, Room 7 (4 rooms)
* 16:20-17:05: Room 3, Room 2, Room 8, Room 7 (4 rooms)
* Total slots: 6. Total available talk slots: 6 * 4 = 24.
* **Parse Talks CSV:** Extract talk details, focusing on ID, Title, Summary, Track, Speaker, and Level.
* Count talks: There are 24 talks listed.
* Identify Tracks: Development Practices, UI & UX, Mind the Geek, Server Side Java, People & Culture, Architecture, Build & Deploy, Java, Security. (9 unique tracks).
* Identify Speakers: List unique speakers to easily check for conflicts (Constraint 4). (Roland Weisleder, Simon Martinelli, Katrin Rabow, Edoardo Vacchi, Alina Yurenko, Ruby Jane Cabagnot, Sven Peters, Anja Kunkel, Marit van Dijk, Juri Strumpflohner, Álvaro Sánchez-Mariscal, Jonas Bandi, Edson Yanaga, Piotr Przybyl, Ana-Maria Mihalceanu, Urs Enzler, Sheen Brisals, Jarek Ratajski, Mario Fusco, Rotem Refael, Jamie Coleman, Nicolai Parlog, Oliver Drotbohm, Daniel Garnier-Moiroux). All speakers seem unique to their talks in this list.
* **Check Capacity:** 24 available slots and 24 talks. Perfect match. Every talk needs to be scheduled.5. **Scheduling Strategy (Iterative & Constraint-Driven):** This is the core challenge. Since "Educational Flow" is subjective and high priority, it needs careful consideration alongside the strict "No Same Tracks" constraint.
* **Step 1: Group by Track (Mental or Scratchpad):** Group talks by track to see potential flow within tracks.
* *Development Practices:* 1411 (ArchUnit), 4367 (BDD), 4914 (Monorepos), 5259 (Estimates)
* *UI & UX:* 3872 (Full-stack dead), 4506 (Qwik), 4921 (Reactivity Comparison)
* *Mind the Geek:* 4372 (Wasm)
* *Server Side Java:* 4505 (GraalVM Microservices), 4918 (Micronaut/GraalVM), 5464 (Spring Modulith), 5487 (Spring Security)
* *People & Culture:* 4515 (Developer Joy)
* *Architecture:* 4521 (Monolith->Microservices), 4947 (Evolutionary Arch), 5251 (Serverless Adoption)
* *Build & Deploy:* 4913 (Dependencies)
* *Java:* 4929 (Design Patterns Refactor), 4931 (Modern Java Features), 4945 (Performance Toolbox), 5261 (Loom), 5456 (Java Projects Amber/Loom etc.)
* *Security:* 5268 (K8s Scan), 5298 (SBOMs)* **Step 2: Prioritize Tracks with Potential Flow:**
* *Java:* Seems like a good candidate. 4945 (Perf Intro) -> 4931 (Modern Features) -> 4929 (Patterns Refactor) -> 5261 (Loom Adv) -> 5456 (Big Projects Adv). This is a potential sequence.
* *Server Side Java:* 4918 (Micronaut Intro) -> 4505 (GraalVM Microservices) -> 5487 (Spring Security) -> 5464 (Spring Modulith Adv). Another potential sequence.
* *Architecture:* 4947 (Evolutionary Arch) -> 5251 (Serverless) -> 4521 (Monolith->Micro).
* *Development Practices:* 4367 (BDD Intro) -> 1411 (ArchUnit) -> 4914 (Monorepos) -> 5259 (Estimates Critique).
* *UI & UX:* 4506 (Qwik Intro) -> 3872 (Full-stack) -> 4921 (Reactivity Compare).
* *Security:* 5298 (SBOM Intro) -> 5268 (K8s Scan).* **Step 3: Start Filling Time Slots (Trial and Error):** This involves picking a time slot and assigning 4 talks, checking constraints.
* **Slot 1 (10:35-11:20):** Need 4 *different* tracks. Let's try starting some sequences.
* Room 2: 4367 (BDD - Dev Prac - BEGINNER) - Good start.
* Room 8: 4506 (Qwik - UI/UX - BEGINNER) - Good start.
* Room 7: 4945 (Java Perf - Java - BEGINNER) - Good start.
* Room 3: 5298 (SBOM - Security - BEGINNER) - Good start.
* *Check Constraints:* Tracks (Dev Prac, UI/UX, Java, Security) are unique. Speakers are unique. Flow seems okay (all beginner intros). OK.* **Slot 2 (11:30-12:15):** Need 4 different tracks, different from each other, and ideally continuing the flow.
* Room 3: 1411 (ArchUnit - Dev Prac - BEGINNER) - Follows 4367 somewhat.
* Room 8: 3872 (Full-stack - UI/UX - INTERMEDIATE) - Follows 4506.
* Room 7: 4931 (Modern Java - Java - INTERMEDIATE) - Follows 4945.
* Room 2: 4918 (Micronaut - Server Side Java - BEGINNER) - New track start.
* *Check Constraints:* Tracks (Dev Prac, UI/UX, Java, Server Side Java) are unique. Speakers unique. Flow is maintained within tracks started in Slot 1, introduces Server Side Java. OK.* **Slot 3 (13:25-14:10):**
* Room 8: 4914 (Monorepos - Dev Prac - BEGINNER) - Continues Dev Prac.
* Room 7: 4921 (Reactivity - UI/UX - INTERMEDIATE) - Continues UI/UX.
* Room 3: 4929 (Design Patterns - Java - INTERMEDIATE) - Continues Java.
* Room 2: 4505 (GraalVM Microservices - Server Side Java - INTERMEDIATE) - Continues Server Side Java.
* *Check Constraints:* Tracks (Dev Prac, UI/UX, Java, Server Side Java) unique. Speakers unique. Flow maintained. OK.* **Slot 4 (14:20-15:05):** Need 4 different tracks. What's left? Architecture, Build & Deploy, Mind the Geek, People & Culture, more Java, Server Side, Security, Dev Prac.
* Room 7: 5259 (Estimates - Dev Prac - BEGINNER) - Finishes Dev Prac track.
* Room 8: 5268 (K8s Scan - Security - BEGINNER) - Continues Security track.
* Room 2: 5261 (Loom - Java - ADVANCED) - Continues Java track (advanced).
* Room 3: 5487 (Spring Security - Server Side Java - INTERMEDIATE) - Continues Server Side Java.
* *Check Constraints:* Tracks (Dev Prac, Security, Java, Server Side Java) unique. Speakers unique. Flow okay. OK.* **Slot 5 (15:25-16:10):** Need 4 different tracks. Remaining: Architecture (3), Build & Deploy (1), Mind the Geek (1), People & Culture (1), Java (1), Server Side Java (1). Need to pick 4.
* Room 3: 4947 (Evolutionary Arch - Architecture - INTERMEDIATE) - Start Arch track.
* Room 2: 4913 (Dependencies - Build & Deploy - BEGINNER) - Start B&D track.
* Room 8: 5456 (Java Next - Java - ADVANCED) - Finishes Java track (advanced).
* Room 7: 5464 (Spring Modulith - Server Side Java - ADVANCED) - Finishes Server Side Java track (advanced).
* *Check Constraints:* Tracks (Architecture, Build & Deploy, Java, Server Side Java) unique. Speakers unique. Flow okay (finishing Java/Server Side, starting Arch/B&D). OK.* **Slot 6 (16:20-17:05):** Need 4 different tracks. Remaining: Architecture (2), Mind the Geek (1), People & Culture (1). Have 4 rooms. Perfect.
* Room 3: 5251 (Serverless - Architecture - BEGINNER) - Continues Arch.
* Room 2: 4521 (Monolith->Micro - Architecture - ADVANCED) - Continues Arch. *Wait!* Constraint 3: No same tracks at the same time. This doesn't work.* **Step 4: Backtrack & Adjust (Slot 5 & 6):** The issue arose because we ran out of diverse tracks for the last slots, forcing Architecture twice in Slot 6. Let's re-evaluate Slot 5.
* *Alternative Slot 5 (15:25-16:10):* Let's spread out the remaining tracks better.
* Room 3: 4947 (Evolutionary Arch - Architecture - INTERMEDIATE) - Start Arch.
* Room 2: 4913 (Dependencies - Build & Deploy - BEGINNER) - Start B&D.
* Room 8: 4372 (Wasm - Mind the Geek - INTERMEDIATE) - Start Mind the Geek.
* Room 7: 4515 (Developer Joy - People & Culture - INTERMEDIATE) - Start People & Culture.
* *Check Constraints:* Tracks (Arch, B&D, Mind the Geek, People & Culture) unique. Speakers unique. Flow okay (starts several single-talk tracks). OK.
* *Try Slot 6 again (16:20-17:05):* Remaining: Architecture (2), Java (1), Server Side Java (1). We still need 4 *different* tracks. Ah, I miscounted what was left before. Let's re-list remaining talks after the *original* Slot 4:
* Architecture: 4521, 4947, 5251
* Build & Deploy: 4913
* Mind the Geek: 4372
* People & Culture: 4515
* Java: 5456
* Server Side Java: 5464
* Total: 8 talks left for 8 slots (2 time slots * 4 rooms).
* *Retry Slot 5 (15:25-16:10):* Need 4 different tracks from the 8 remaining.
* Room 3: 4947 (Evolutionary Arch - Architecture - INTERMEDIATE)
* Room 2: 4913 (Dependencies - Build & Deploy - BEGINNER)
* Room 8: 5456 (Java Next - Java - ADVANCED) - Finishes Java track.
* Room 7: 5464 (Spring Modulith - Server Side Java - ADVANCED) - Finishes Server Side Java track.
* *Check Constraints:* Tracks (Arch, B&D, Java, Server Side Java) unique. Speakers unique. Flow okay. OK.
* *Retry Slot 6 (16:20-17:05):* Remaining: Architecture (4521, 5251), Mind the Geek (4372), People & Culture (4515). Four talks, four rooms, three unique tracks. *Still doesn't work due to two Architecture talks.** **Step 5: Major Re-evaluation:** The "No Same Track" constraint is hard, especially with multiple talks in the same track (Java has 5, Server Side Java has 4, Dev Prac has 4, Arch has 3, UI/UX has 3). It's mathematically difficult to avoid track collisions if you try to keep *all* talks of a popular track contiguous. The "Educational Flow" might need to be slightly less strict *within* a track (i.e., a track might be split across non-adjacent time slots) to satisfy the "No Same Track" constraint.
* **Step 6: Re-attempt Scheduling with Relaxed Intra-Track Flow:** Let's prioritize avoiding track collisions *per slot*.
* **Slot 1 (10:35-11:20):** (Keep previous attempt - seemed good)
* Room 2: 4367 (BDD - Dev Prac - BEGINNER)
* Room 8: 4506 (Qwik - UI/UX - BEGINNER)
* Room 7: 4945 (Java Perf - Java - BEGINNER)
* Room 3: 5298 (SBOM - Security - BEGINNER)
* *Tracks: Dev Prac, UI/UX, Java, Security (OK)** **Slot 2 (11:30-12:15):**
* Room 3: 1411 (ArchUnit - Dev Prac - BEGINNER)
* Room 8: 3872 (Full-stack - UI/UX - INTERMEDIATE)
* Room 7: 4931 (Modern Java - Java - INTERMEDIATE)
* Room 2: 4918 (Micronaut - Server Side Java - BEGINNER)
* *Tracks: Dev Prac, UI/UX, Java, Server Side Java (OK)** **Slot 3 (13:25-14:10):**
* Room 8: 4914 (Monorepos - Dev Prac - BEGINNER)
* Room 7: 4921 (Reactivity - UI/UX - INTERMEDIATE)
* Room 3: 4929 (Design Patterns - Java - INTERMEDIATE)
* Room 2: 4505 (GraalVM Microservices - Server Side Java - INTERMEDIATE)
* *Tracks: Dev Prac, UI/UX, Java, Server Side Java (OK)** **Slot 4 (14:20-15:05):** Need 4 different tracks. Available: Dev Prac(1), Java(2), ServerSide(2), Arch(3), Security(1), Build&Deploy(1), MindGeek(1), PeopleCulture(1).
* Room 7: 5259 (Estimates - Dev Prac - BEGINNER)
* Room 8: 5268 (K8s Scan - Security - BEGINNER)
* Room 2: 4947 (Evolutionary Arch - Architecture - INTERMEDIATE) - Start Arch.
* Room 3: 5487 (Spring Security - Server Side Java - INTERMEDIATE)
* *Tracks: Dev Prac, Security, Arch, Server Side Java (OK)** **Slot 5 (15:25-16:10):** Need 4 different tracks. Available: Java(2), ServerSide(1), Arch(2), Build&Deploy(1), MindGeek(1), PeopleCulture(1).
* Room 3: 5261 (Loom - Java - ADVANCED)
* Room 2: 5251 (Serverless - Architecture - BEGINNER)
* Room 8: 4913 (Dependencies - Build & Deploy - BEGINNER)
* Room 7: 4372 (Wasm - Mind the Geek - INTERMEDIATE)
* *Tracks: Java, Arch, B&D, Mind the Geek (OK)** **Slot 6 (16:20-17:05):** Need 4 different tracks. Available: Java(1 - 5456), ServerSide(1 - 5464), Arch(1 - 4521), PeopleCulture(1 - 4515). Perfect!
* Room 3: 5456 (Java Next - Java - ADVANCED)
* Room 2: 5464 (Spring Modulith - Server Side Java - ADVANCED)
* Room 8: 4521 (Monolith->Micro - Architecture - ADVANCED)
* Room 7: 4515 (Developer Joy - People & Culture - INTERMEDIATE)
* *Tracks: Java, Server Side Java, Arch, People & Culture (OK)** **Step 7: Final Review:** Check all constraints again for the generated schedule.
* Flow: Seems reasonable. Beginner talks tend to be earlier. Tracks like Java, Dev Prac, UI/UX, Server Side Java have multiple sessions, somewhat spread out but often following each other logically (e.g., Java Perf -> Modern Java -> Design Patterns -> Loom -> Java Next; Micronaut -> GraalVM -> Spring Security -> Spring Modulith). It's a compromise, but better than violating the track constraint.
* Track Collision: Double-checked each time slot; tracks are unique within each slot.
* Speaker Conflict: All speakers only appear once, so no conflict.
* All Talks Used: Yes, 24 talks scheduled.
* Output Format: Need to format as markdown list with requested fields.6. **Generate Markdown Output:** Go through the final schedule slot by slot, room by room, and format the output according to Constraint 5.
---
Suggested schedule:Okay, here is a possible conference schedule generated based on the provided data and constraints. The primary focus was ensuring no track conflicts within a time slot and maintaining a reasonable educational flow where possible, acknowledging that perfect flow might conflict with the track diversity constraint.
**Conference Schedule**
* **10:35 - 11:20**
* Room 2: (4367) Let's talk about software behaviour (BDD) - Katrin Rabow (BEGINNER, Development Practices)
* Room 8: (4506) Resumability in the next generation frontend framework With O(1) loading time - Ruby Jane Cabagnot (BEGINNER, UI & UX)
* Room 7: (4945) A Glance At The Java Performance Toolbox - Ana-Maria Mihalceanu (BEGINNER, Java)
* Room 3: (5298) Why Building Your Ship (Application) with Raw Materials is a Bad Idea! - Jamie Coleman (BEGINNER, Security)* **11:30 - 12:15**
* Room 3: (1411) Unit Test Your Java Architecture With ArchUnit - Roland Weisleder (BEGINNER, Development Practices)
* Room 8: (3872) Full-stack development is dead, long live full-stack development! - Simon Martinelli (INTERMEDIATE, UI & UX)
* Room 7: (4931) Sailing Modern Java - Piotr Przybyl (INTERMEDIATE, Java)
* Room 2: (4918) Unleash the power of your applications with Micronaut and GraalVM - Álvaro Sánchez-Mariscal (BEGINNER, Server Side Java)* **13:25 - 14:10**
* Room 8: (4914) Monorepos - The Benefits, Challenges and Importance of Tooling Support - Juri Strumpflohner (BEGINNER, Development Practices)
* Room 7: (4921) From User Action to Framework Reaction: A comparison of the Reactivity Concepts in Angular, React, Vue and Svelte - Jonas Bandi (INTERMEDIATE, UI & UX)
* Room 3: (4929) Revisiting Design Patterns after 20 - Edson Yanaga (INTERMEDIATE, Java)
* Room 2: (4505) Awesome Java applications with GraalVM and Java microservices frameworks - Alina Yurenko (INTERMEDIATE, Server Side Java)* **14:20 - 15:05**
* Room 7: (5259) Respect estimates - Jarek Ratajski (BEGINNER, Development Practices)
* Room 8: (5268) What We've Learned from Scanning 10K+ Kubernetes Clusters - Rotem Refael (BEGINNER, Security)
* Room 2: (4947) Architecture aspects - evolutionary architecture development - Urs Enzler (INTERMEDIATE, Architecture)
* Room 3: (5487) Spring Security: The Good Parts - Daniel Garnier-Moiroux (INTERMEDIATE, Server Side Java)* **15:25 - 16:10**
* Room 3: (5261) Game of Loom: implementation patterns and performance implications playing with virtual threads - Mario Fusco (ADVANCED, Java)
* Room 2: (5251) Enterprise Serverless Adoption. An Experience Report - Sheen Brisals (BEGINNER, Architecture)
* Room 8: (4913) Keep your dependencies in check - Marit van Dijk (BEGINNER, Build & Deploy)
* Room 7: (4372) Wasmer Things: An Upside-Down Guide to WebAssembly - Edoardo Vacchi (INTERMEDIATE, Mind the Geek)* **16:20 - 17:05**
* Room 3: (5456) Java Next - From Amber to Loom, from Panama to Valhalla - Nicolai Parlog (ADVANCED, Java)
* Room 2: (5464) Spring Modulith – Spring for the Architecturally Curious Developer - Oliver Drotbohm (ADVANCED, Server Side Java)
* Room 8: (4521) The monolith must die! - How to convince managers - Anja Kunkel (ADVANCED, Architecture)
* Room 7: (4515) Developer Joy – How great teams get s%*t done - Sven Peters (INTERMEDIATE, People & Culture)