Background
In relentlessly applying for jobs for much longer than I would like to admit, I have seen one certification appear as a preference [or strict requirement] for many of the positions that interest me more than any other, Security+. I’ve been applying with a lot of defense contractors, because (1) I find much of the work they do immensely interesting, and (2) I’m currently located in the Salt Lake City area, which is a hotbed for these contractors due to the nearby Air Force facilities.
The Problem
So, in an effort to clear more bot filters, I’ve decided to pursue the certification on my own dime. Material on O’Reilly Media worked fantastically well for the RHCSA, so I started a Security+ series by Sari Greene. I quickly found that this is not going to be anything at all like the RHCSA. Security+ really seems like a glorified vocabulary exam. Instead of spinning up virtual machines and applying skills, preparation for Sec+ involves making flashcards like an undergrad biology student. The video series is essentially an extremely long death by powerpoint.
Because there are so many things I should be spending my time on, I found writing these flashcards incredibly annoying. Just 10% through the series and I had already created a stack of over 100 cards. Additionally, Sec+ is a certification that requires recertification every three years, so my options were to hang onto a huge stack of flashcards forever, or go through this painful time-draining process again in the future.
Looking for a solution, I stumbled upon https://quizlet.com, which allows you to create sets of flashcards with a free account. This solved the card storage issue, but didn’t really solve the time consumption issue. I still had to switch back and forth between pausing videos to manually type in questions and answers.
The Solution
I decided to put my Cursor subscription to work and see just how fast I could come up with a good solution.
OCR Engine
Since the training series is in video format, the high-level flow for my
solution was screenshot ➜ text ➜ llm ➜ flashcard. So first
step was finding an OCR (Optical Character Recognition) engine and immediately
found tesseract as the
clear frontrunner. It happens to be incredibly easy to use and fairly accurate
for well defined text.
tesseract screenshot.png output
This is nifty and all, but I really wanted a front end to make studying easy on the eyes. After finding tesseract.js, the path became clear.
Framework
- ✓ Tauri - yes, I like rust
- ✓ Wails - seems extremely promising, but I haven’t used Go much
- ✗ Flutter - bulky binaries, dart
- ✗ Electron - while VS Code is a shining example, we’ve all seen how bad things can be with Teams and Slack
- ✗ Qt - while C++ is actually my language of choice, I can’t justify spending time on a proprietary platform
So basically it boiled down to two options. And, really, the options didn’t matter much because this was just as much an experiment in the current state of “vibe coding” as easing the pain of preparing for Security+.
For obvious reasons, agents seem to perform better in languages that are more popular. In this regard, some might argue that Wails may have been a better choice. But, there’s no doubt that bugs are easier to create in Go, and if an agent creates a race condition, it could be a real pain to nail down. In this regard, Rust might actually be the perfect agentic language. The borrow checker can be a real pain when you’re writing the code, but it’s a dear friend when an agent is at the helm. With all that being said, it truly did not matter for this simple application, but I chose Tauri since I personally have more experience with Rust.
UI
React. I honestly didn’t even consider anything else.
The Result
Over a period of about two afternoons, I had a fully functioning application that I call the Flashcard Beast. The main idea is that you can watch a training video of some sort, such as Security+ videos, and create flashcards on the fly without stopping every few minutes to manually write them. This could also be very useful for any college student that creates flashcards from digital textbooks. The idea there would be the same, just screenshot the study material and automatically generate a flashcard. Obviously, another benefit of this setup over paper is the ease of sharing collections and the ability to contribute to collections as a group.
Granted, this application is not particularly complicated or beautiful, but the speed of development was absolutely insane considering just a few years ago LLMs struggled to write simple scripts and had no contextual abilities at all. This was all done with the cheapest Cursor subscription using a single agent at a time mostly in auto mode. I only used Opus 4.6 to sort out issues a few times. Even considering the time investment to build the app, I think I’ll still come out ahead over writing Security+ flashcards by hand… insane.
Features:
- Bulk Create
- Essentially the app watches for new files in whatever directory you choose. A natural choice would be wherever your screenshots automatically go. I have grim set up to allow me to select a portion of the screen by hitting the “print” key…very convenient.
- The screenshots are processed with tesseract
- The raw text is (optionally) passed to an LLM prefixed with instructions. I only have it set up for local and cloud Ollama models currently.
- The question and answer sides can be modified, if needed, before saving to a collection
- Import/Export
- Make backups or share collections
- Create Cards
- Manually create cards
- Keyboard navigation for quick entry
- Shift+Enter saves a card
- Focus automatically switches back to Question field after a save
- Edit Cards
- Edit cards, collections, sub collections
- Search for cards
- Study
- Study by flipping through a collection
- Edit cards if needed
- Keyboard navigation
- Up/Down arrow keys to flip card
- Left/Right arrow keys to go to previous/next card
- Space bar marks card to be skipped on next round
- Shuffle deck
- Ollama Test
- Test Ollama setup
Note: You must have an Ollama API key environment variable in order to use a cloud model. See the docs for more detail.
The application could definitely use some refactoring and UI improvements, but I’m very unlikely to put more time into this. Feel free to submit a PR if you want to add a feature.
- caj