Portfolio

illustrations illustrations illustrations illustrations illustrations illustrations illustrations

Ice skating quiz

Published on Jan 20, 2026 by debnera on other

Ice skating quiz

I was asked to help study for an ice skating exam. After helping manually, I proposed and implemented an automated version in 30 minutes.

The project is extremely simple, but is an example of quick tools I might do on my free time alongside my longer private projects. It was a brief adventure to some vibe coding and the creation of distributable Python programs for non-technical users.

GitHub Repository

Theme: Create a simple but effective quiz for learning
Project duration: ~30 minutes + some additions over a couple of days
Team size: 1

Features:

  • Learning-first approach. Minimize typing/clicks/scrolling/scoring, give user control over what they want to learn and how.
  • Quiz the user for skating element penalty points. Highlight wrong answers with color, give the user a chance to give the correct answer.
  • Quiz the user for exact wording and order of answers. Highlight wrong words and typos with color and show the correct answer.
  • GUI with CustomTKInter.
  • .exe releases with PyInstaller.
  • Automatically check for updates from GitHub releases and prompt user to visit the website when suitable.
    • I could also implement automatic updates, but that is more invasive and likely will ask for elevated permissions and cause more complaints from AV software.

Vibe coding

Despite the popular hate against vibe coding, this was a perfect project for it. The scale is small enough to get main functionality, software architecture, and GUI design done in a single prompt. A second prompt was to change the tkinter gui to anything more modern. It ended up using CustomTKInter which was visually good enough for me. For the second quiz type, I told it to create a similar but separate program with word-level highlighting to tell the user about smaller mistakes and missing words.

I fed the quiz data as an image to a locally running vision-language model. Despite the complexity of the table in the image, it understood my csv format and gave me a mostly typo-free output. I could have maybe avoided some of the manual fixing by using tools to read the pdf directly instead of taking a screenshot.

The resulting codebase is quite horrible and merging the two main features into a single program (instead of two separate ones) was a bit tough for the LLM. But I do not intend on developing this program further in terms of features, so it does not matter.

I see AI as a useful tool for coding when giving it well defined small problems to work with. It is important to understand its capabilities and limitations. There, however, seems to be some somewhat concerning blind hate against generative AI. For example, Steam requires the developers to disclose any use of AI. And in turn, disclosing any use of AI seems to cause very negative reviews. I understand disliking and being wary over the quality of graphical assets developed by AI. I understand not wanting to play a bug-ridden game that the developer does not have skills to fix. But I see no problems with using AI as a tool to assist me as a developer to create code, look up documentation, draft bash scripts, and automate cumbersome coding tasks.

Lessons learned:

1. Windows defender

Windows defender will complain about the executable. Same goes with tools like VirusTotal flagging it as various kinds of potentially harmful software. Common reasons seemed to be that it is not signed, source code has multi-line comments (odd complaint?), and using –one-file option of PyInstaller.

Fixing all but signing the executable did not get rid of the warnings. Getting a signing certificate seems to go for around 100+ EUR per year, which is not worth it for my current use cases.

2. Distributable size:

While the software is super simple, the executable is 20 MB. This is a lot of space for a simple quizzing program. On its own, it does not really matter. But when people are downloading lots of small programs that they rarely use, it starts adding up. Same applies to all the releases of this quiz I publish on GitHub. Each release takes 20 MB, and I made releases with very fast release cycles as the idea is to quickly deploy new features and fixes upon request of the person using this program. Each one of these releases is permanently (unnecessarily?) stored on some cloud storage.

This simply does not seem sustainable to me, even if we have tons of cloud resources and local disk space available.

Possible fixes:

  • Most of the size comes from the need to package the Python interpreter and related packages along with the program itself.
  • Look for other languages than Python designed for small GUI programs.
  • Compress the executable to reduce size. This can be done with tools like UPX, but such compression might flag AV software.
  • Look into different Python GUI frameworks. The issue is that the default theme of tkinter is ugly.
    • CustomTKInter looked way nicer, but adds size.

Similar Stories

Ice skating quiz

Ice skating quiz

I was asked to help study for an ice skating exam. After helping manually, I proposed and implemented an automated version in 30 minutes.

Read More