Decoder ring
Updating an old app with a fun, somewhat-forgotten visualization.
Why now
Over the summer, I had read about Gene Kim’s new book on vibe coding and was inspired by Mr. Kim’s eminently relatable use case: using AI to kick start a personal project that had languished for over a decade. After all, I certainly have my share of half-baked ideas that are similarly languishing.
I tinker with AI at work, but have up to this point been mostly uninterested in using it for personal projects. Until now of course, and revisiting an existing but neglected app I had already written 1 was the smallest first “bite” I could think of to take 2.
Plus, it had not just been gathering dust … but also security debt, including dozens of open GHAS alerts and a CodeQL workflow that hadn’t run since 2023. Yeesh.
No more excuses??
I remember a couple specific things that stymied me in 2022 when writing the code. First, I could not get to a text area + 2 button layout that I liked within the time I had allotted (which was not much). I settled for one “click me” button and an “encrypt/decrypt” mode radio button in the sidebar. Worked and looked ok, but a compromise to be sure.
Next, I would have loved a “secret decoder ring” style visualization 3 but I could not get past the “nice to have” stage due to my lack of front-end developer chops. Perhaps I can now drop this excuse with an AI coding assist, in theory augmenting my abilities where I am weakest.
Lots of choices, but I decided to try GitHub Copilot 4.
Raw results
See for yourself in the running app, which I hope still sparks some child-like joy. Check it out at https://caesar.streamlit.app.
Or watch this short demo if you prefer.
Also feel welcomed and encouraged to more closely scrutinize the source code 5. Copilot’s main work 6 is purposefully contained within a single, separate file decoder_ring.py to facilitate such an audit.
Its layout work was easy (and harmless) enough to visually inspect so it is co-mingled with my hand-written code in app.py.
I will try something more ambitious next.
– JW
Footnotes
-
I blogged about it in another post. ↩
-
As I eat the elephant of trying to understand how AI is changing modern software development. ↩
-
Mostly because I had unused Copilot time going to waste every month that I had not touched since the free tier was announced by GitHub last Dec. ↩
-
Note, this is work that I would be hard-pressed to write myself. Probably overkill to firewall it off by itself in its own file given that this code has no real blast radius. ↩