A year ago I built Holly a Python script that generated her music lesson schedule. It worked, but it was a terminal program. Every time she needed a schedule, she had to ask me to run it. Not exactly sustainable.
I took Java in Spring 2023 at Queens College. Learned about OOP, inheritance, the whole design pattern thing. By September I was gearing up for Holly's 2023-2024 school year and I knew the Python terminal version wasn't going to cut it long-term. She shouldn't have to depend on me being around to generate a schedule.
So I rebuilt it in Java with a Swing GUI!
Same algorithm underneath, same rotation logic, but wrapped in actual classes with a proper structure. MusicalLessonScheduler for the entry point, ScheduleBuilder for the core logic, ScheduleEntry as a data class. I was genuinely proud of that separation. It felt organized for the first time in a project.
The real win was the UX. Instead of a wall of terminal prompts, Holly gets an actual window with labeled fields. Enter the start date, pick day 1 or 2, set the number of weeks, add days off with a "+" button. Hit Start and you're done.

The output shows up right in the app as a clean table. Same data as the Python version (dates, periods, groups A through T) but way easier to read. And there's a "Save to CSV" button at the bottom so she can export it straight to a spreadsheet.

I packaged it as ScheduleMaker.jar and sent it to her. She double-clicked it on her laptop and had the entire year's schedule in about 30 seconds. No terminal, no Python installation, no calling me at 9 PM because she needs a new version. That moment felt like I'd actually built something useful, something real, not just a homework assignment a professor would glance at and give a grade.
The Java version is in the same repo as the original Python code. It's way cleaner, but I can still see the rough edges. I was a year into programming at that point and just starting to understand how much I didn't know.
I figured this was the final version. Holly had her JAR, it worked, we were done. I was wrong about that.