Yesterday was the day I figured out how to use Large Language Model AI as a productivity tool. I’d dabbled with it for coding assistance and wasn’t super impressed, but yesterday, on a lark, I uploaded a complete working program to it, to see if it could write some documentation.
The Project
A few months ago, my father asked if I could create some sort of technology that would allow him to check in with us, to let us know he was okay, without us having to pester him with well-checks every day. I immediately thought back to my wall art project, which allows people to upload little animations that get broadcast to every device. What if the device itself just sent a simple “checkin” signal that expired, and every device kept coming to the server asking “has it been over 24 hours since the last check-in?”
This would allow my father to have a button he presses every time he goes to the refrigerator, for example; we have a paired button that is green to mean he’s pressed recently, or red to mean we should check in and see if he’s away.
So I built it.
We’ve been using a prototype for a few months now, and it works great. Occasionally he will forget to whack it, and I’ll call him and chide him to hit the button (he and I both appreciate this sort of treatment: your relationship with your father may vary). Then we’ll catch up for a bit, sometimes.
He showed it to some of his friends, and interest was so high that he went out and bought parts to make 20 more buttons. So I had to get busy making this less of a prototype and more of a multi-user service.
The Software
The system involves an ESP32-C3 microcontroller board, a NeoPixel (ws2811b, I think), and a Cherry MX keyboard switch. Adafruit sells a board called a “NeoKey BFF” that fits perfectly on the Qt Py or Seeeduino XIAO, providing a no-solder mount point for a switch, and an LED perfectly positioned to shine through the little window in most switches. So we just need a XIAO, the AdaFruit NeoKey BFF, and a switch.
I decided to write the multi-user client in MicroPython, to make it easier for anyone else to modify the code (C++ is a dying skill, I think).
The server is a hundred or so lines of Go. It uses files to record a log of checkin times, and when a button asks if 24 hours has elapsed, it can just stat the file to get the modification time.
The last piece, and the one that took the most time, was an HTML/JavaScript programmer. This allows anyone with a XIAO ESP32-C3 and a browser that supports WebSerial (Chrome or Edge) to plug in a new device, upload a MicroPython kernel, then enter WiFi connection information and a unique identifier, and flash the Python client code and a generated Python module with configuration.
Sending it to the AI
I love writing code, but I hate writing documentation. Facing the daunting task of writing programmer instructions tha an 85-year-old could make sense of, I decided I may as well upload the entire project to Google Gemini, an Artificial Intelligence Large Language Model, and ask it to create instructions on using the programmer. I didn’t have much to lose, since I was going to make the entire source code freely downloadable anyhow.
What it came back with floored me. Not only did it understand how all the pieces worked together, it understood the color codes the program would flash to communicate state, and what those states meant to an end user. It also worked out the purpose of the system based on my two-line README:
You program two or more of these with the same endpoint URL. The URL should have a unique identifier in it for the group of buttons.
When somebody presses a button, it turns everybody’s light green for 24 hours. Then it reverts back to red.
What it spit out was a complete programming document. I did some editing, but for the most part what’s checked in right now as the programming guide is what the AI generated. Since it did such a good job, I asked it to generate a user manual, and an assembly manual.
Because it was doing so well, I told it how I envisioned the button being used in practice: someone caring for a spouse with dementia, but who themselves may be at risk for becoming incapacitated, causing both the caregiver and their spouse to be unable to call for assistance (this actually happened recently to a well-known celebrity and his spouse, just down the road from us). It generated the Betsy Button Buddy Guide, for people who want to introduce the button to the carefiver. It approached the topic with far more compassion and understanding than I would have had. It imagined privacy concerns that I hadn’t even considered, imagined barriers to acceptance, fears and concerns, and covered what sort of language to use in the initial conversation .It even suggested the name for this role.
I kept going. I asked it to generate a web page version of the Betsy Button Buddy Guide: it created the Betsy Button Buddy Hub with a guide to color codes and how to handle them for the non-technical. I asked it to make a web site for the button, it generated the Betsy Button Landing Page.
In less than four hours, it had correctly understood the entire project and written what I percieve to be top notch technical documentation, user documentation, advertising, and more. I could even see this thing doing Tier 1 technical support, if there were a way I could do that.
The Cost
Right now, all this stuff is free, as they try to drum up interest. I’m sure that won’t always be the case: there’s money to be made here, and if I were serious about taking this to market, I might be willing to pay it. So there’s a monetary cost to this type of development looming on the horizon.
There’s also a social cost: all this work was formerly something that actual human beings would be doing. In this project’s case, that human being would have been me, and I would have just not done it, preferring for this thing to linger in obscurity. So in this case, assuming my project is actually useful to other people, the AI actually helped humanity, without taking away anybody’s job. But I’m not naïve enough to think my case is typical of how it’s being used.
Lastly, there’s a mental cost. If I were inclined to write advertising web pages before, I’m certainly not at this point, now that I can just drop my project into an AI chat box and have it do the whole thing for me. Again, this isn’t something I was doing before, so this is providing me with new abilities I didn’t previously have. But, again, I’m just a hobbyist. People are going to get lazy with this technology, and then dependent on it.
Moving Forward
Until they start charging for it, this stuff can help me with the parts of my hobby projects that I wouldn’t normally do: documentation and advertising.
It can also act as an intelligent “rubber duck”: I can give it my code, ask it questions about it, and it can help me reframe my thinking to better understand where to go. Previously, I used a rubber duck for this, explaining everything out loud to the duck until I had an “aha” moment where I understood what the problem was.