In truth, even by this point, I still did not have a concrete image of this firmware in my head. I had only been thinking, vaguely, “Let’s make this firmware turn the ZeroWriter into a machine that other people could actually use too.” I had not thought deeply about what shape the firmware should have, how it should be structured, or how it would need to behave for not only me, but other people as well, to feel that it was good for writing. So I could not help thinking, from time to time, that maybe I should just call it done and use it, since at least I did not feel any major inconvenience when writing in Korean. Even so, what pulled me along to the end was GitHub. Since I had made all the code public on GitHub, someone else could take that code and make a slightly more usable firmware. And if that improvement was something I could have thought of well enough myself, I felt like it would bother me. So I decided to go just a little further, only as far as I could think.

First, I checked once again whether the keyboard layouts were truly usable. I selected a few languages, pressed the keys, checked whether there were any letters that would not type, and then showed the code to Gemini and asked it to check whether anything looked wrong. I also asked ChatGPT, but at the time I assumed there must be some hidden connection between ChatGPT and Codex that I did not know about, so I took it for granted that they were on the same side and did not pay much attention.

For the other languages in the keyboard layouts, I did not know them, so I had to rely on Gemini to check them. In any case, there were no major problems that needed to be fixed immediately. The only thing was that selecting the language was a little cumbersome. On the device, I had to open the menu, move to the language screen, and then use the right arrow key to move through the languages one by one. On a computer, that might have been a little better, but on an e-paper screen, it was unavoidably frustrating. So after thinking about it for about two days, and after going through the process of constantly revising, building, and updating whenever I did not like something, I finally decided to move language settings from the device to the webpage.

Once one line for language settings disappeared from the menu, I became a little greedy. At that time, settings such as font size, line spacing, and language were grouped under a system item in the menu. But if language could only be changed after connecting to the webpage anyway, then it seemed better to make the entire system menu configurable from the webpage. Since firmware updates were already being done by going into the webpage and uploading the firmware file there, a proper system settings screen had effectively been created.

On the webpage, there are two pages to choose from: System Menu and Writing Management. Inside the System Menu, you can set text spacing, font size, language, and firmware updates. For language settings, English and the other languages are selected separately, and for English, you can choose between QWERTY and Dvorak. The function that uses the Alt key to select accents or characters like ss is available throughout English.

After doing this, I thought things had been organized fairly well. And the fact that the firmware size had been reduced enough to allow firmware updates directly from the webpage also meant that testing various things had become easier. But it was also time to stabilize it. On the main page of the firmware GitHub repository, there was still a warning saying that it was under testing and that important documents should be backed up before use. In truth, removing that warning was the final goal. Even if this was only something built on top of an open-source project, if I was going to remove a warning that said backups were mandatory, I thought it should reach the level of a product. Well… even as I write this, when I look at the typeface, I wonder who would buy a product like this. Maybe it is usable because it is open source.

And finally, I suggested one piece of code to Codex that would make it look “like” a product.

“When I upload a release to GitHub, make a function that automatically updates by comparing only the version tag.”

Of course, Codex first gave reasons why it could not be done.

“Pulling in releases is complicated because of places that require approval…”

“No, just look at the version and the file name. Can anyone other than me upload something strange to the release?”

“Ah, I see. That is possible.”

In any case, it never does things properly in one go. But after a few rounds of trial and error, it eventually made something fairly plausible. For testing and possible rollback, I did not make it check whether the version was higher or lower than the current one. I simply made it possible to update when the release version shown on the front page of the relevant GitHub repository was different from the current version.

Now, when I connect to the webpage inside the device and look at the update menu, I can either update online with a single click or upload firmware for updating. When the online update button is pressed, it immediately downloads the firmware file from GitHub and sends it to the device. Even when firmware upload is executed, it sends the file directly to the device. Once the device receives the firmware file, the device takes care of the rest.

At one point, there was a flood of courses and books saying that to use AI well, one had to write good prompts. Even now, I still see such courses from time to time. To me, it feels like the Internet Information Search Specialist certificate that appeared in the early days of the internet, when search engines were not very good yet. You learn how to talk so that it gives the right answer by talking to it. After collecting countless wrong answers, such as what kinds of phrasing make it give strange answers or respond without sincerity.

AI needs experience, but so does the user. If you try to save the time it takes to accumulate that experience, you cannot properly use any tool. Even a mouse or keyboard has to be used often before it becomes familiar to the hand, so it makes no sense to think that AI as a tool is somehow different. Countless tools all function as extensions of our bodies, only differing in the kind of sense they extend. AI is an extension of the senses, but it is an extension of a sense humanity has never experienced before: the sense called the computer.

In my experience, the most appropriate way to write a good prompt is to ask the AI. And not by asking, “I want to do this, so what prompt should I write?” It has to be found through conversation.

For code-related work, ChatGPT does write prompts telling Codex to write code according to certain criteria. It also writes prompts to give to ChatGPT itself, though I have not actually used those.

There was a time when I asked it to recommend stocks based on two criteria: stocks that were rising but had risen less than expected, or stocks that looked as though they were about to rise. At first, it lost its way and recommended all kinds of strange KOSDAQ stocks. But after I explained one by one why this one would not work and that one would not work, it told me that I should ask in this kind of way and wrote a prompt for me. It was a fairly thoughtful prompt, asking for companies with signals such as large purchases at night or after hours, increases in major shareholders’ stakes, or disclosures of executives buying shares, while also having no particular factors in the overall circumstances that would cause the stock price to fall. It gave me a prompt with content I had not quite thought of myself. But usually, after a certain point in conversation, ChatGPT catches on and begins the work.

Now only one thing remains. Whether through Wi-Fi or web server mode, once I connect and open the webpage, I can download or copy my writing. If I turn off the device and insert the SD card into a computer, I can also retrieve the text files. But the “product-like” device I had in mind was one with a fixed webpage where the writings would be synchronized. A device where, even if it is at home, I can edit writings on the computer, and even at home, with only a simple operation, upload writings to the homepage.


Korean original: 제품처럼 만들고 싶어