Athena

The App
Athena is a simple web app with a single purpose: allow users to easily obtain AI-assisted descriptions of their images. A lot of thought went into the user interface and experience, though not necessarily effort ๐. More on that later.
At itโs core, Athena allows:
๐ Easy upload of your images - drag and drop into the file drop area
๐ You can also paste files or drag most images from the web too (e.g. google images)
๐ฟ Each time a file is uploaded, a card is created. Each card contains the image thumbnail, editable prompt, trigger button and a response area.

Itโs really that simple. Give it a try!
โ ๏ธ The app deployed on ghp is inert; youโll need to clone the repo and adjust utils.js to point to your LLM api end point along with your api key ๐
Why make this?
Well, UI has always been a passion of mine, but UX too. In our internal platforms for LLMs, it can be a bit cumbersome to perform image interpretation. I wanted a streamlined way to do a task I perform frequently at the drop of a hat ๐๐ปโโ๐จ๏ธ
I also chose to do this as a static webpage because I thought a shiny app would be overkill for this ๐ .
Assurance
I didn't do the majority of the programming for Athena. GPT-4O and GPT-4O-mini did. As a secondary objective, I was curious whether:
โ This app could be generated completely by AI itself?
โ Will I have a job in a few years ๐ ?
Iโm happy to share that generative AI, at the least the models I employed, were not enough to generate this completely. Even with several attempts and strategies of prompting ๐, it still required quite a bit of human-in-the-loop to get it right ๐ซ. Hereโs a few points on my experience:
โ๏ธ AI was helpful in getting started from scratch. Everything from scaffolding files in a structured way that made working on the app easier
โ๏ธ Basic CSS, HTML tasks were do-able with ease
โ ๏ธ Advanced CSS and JS required frequent iteration and testing ๐. This was frustrating and time โ consuming.
โ๏ธ Common tasks like using fetch API to access openaiโs end point are well understood
โ ๏ธ Specifying named JS libraries were amenable, but only after I specifically prompted itโs use. It was really hard to get the file-area-upload from first principles. However, I knew about dropzone.js, so I asked it to use it instead. It didnโt work 100% out of the box, so I still had to read the documentation and alter the generated code.
In the end, I probably could have coded this myself more quickly than ask AI to generate it. I realize thereโs a lot of things that you need to be deeply aware of before you can ask AI to generate you something as complex as a web app. For example, JS libraries, CSS frameworks (Bootstrap 5 class names), Names (HTML elements, CSS selectors, function names), and even coding approaches for efficiency.
Itโs not push start. At least not with these models. I wonder how Strawberry would do ๐ค
In sum, my job is at least safe for the next bit ๐
Till next time!
๐ป๐ด