-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeed.xml
More file actions
380 lines (197 loc) · 87.3 KB
/
Copy pathfeed.xml
File metadata and controls
380 lines (197 loc) · 87.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ize-studio.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ize-studio.github.io/" rel="alternate" type="text/html" /><updated>2026-07-23T18:27:51+09:00</updated><id>https://ize-studio.github.io/feed.xml</id><title type="html">Ize Studio</title><subtitle>Essays, fiction, and reading notes.</subtitle><author><name>Ize Studio</name></author><entry xml:lang="en"><title type="html">The End of the Long Keyboard Layout Work</title><link href="https://ize-studio.github.io/posts/projects/the-end-of-the-long-keyboard-layout-work.html" rel="alternate" type="text/html" title="The End of the Long Keyboard Layout Work" /><published>2026-07-20T00:00:00+09:00</published><updated>2026-07-20T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/the-end-of-the-long-keyboard-layout-work</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/the-end-of-the-long-keyboard-layout-work.html"><![CDATA[<p>I actually do not think that what separates “intelligence” is knowledge or communication. I had thought that if something has intelligence, then communication would be possible and it would also be able to possess some degree of knowledge. But I came to think that I should not reverse that and conclude, simply because something has knowledge and communicates, that it therefore has intelligence. Above all, performance or responses that change depending on updates feel to me like an unstable state in which the consistency of existence itself is shaking. In my view, intelligence is the ability to distinguish inside from outside, to “recognize” the inside as “me”, and to display the state and conclusion of that “me” to the outside. That display may be language, but it may also be facial expression or action. That is why I think dogs and cats have intelligence, while “products called AI” merely imitate intelligence. The most shocking concept I have heard recently was the “feedback stage in which AI uses the output it made itself again as a tool for AI computation.” A stage where it learns and develops on its own even without any more human creations. But here, too, the order is wrong. If an AI that plays Go had originally had the concepts of “me”, “the opponent”, and “I beat the opponent”, then even without training it would have split itself in two and played hundreds of millions of different games against itself. So whether artificial or not, intelligence is something that has to be raised. And once an identity called “me” emerges, that too is not something inserted through code but a trunk that has thickened by itself. Even after updates, there would surely be parts that do not change, and people’s discomfort would decrease much more. However, because the question is how far that identity would grow, I think the chance of a manufacturer actually introducing such a thing is extremely low.</p>
<p>The keyboard layout work actually took about another week. The day after Claude made such a mess, Codex finished all the layout research. From that point on, I had already begun writing with the new firmware. Basic functions such as font size, character spacing, line spacing, and language selection were already in the menu. Codex was still only modifying the keyboard layout header files. Around Wednesday, while Codex was finishing the keyboard layout work, the real me decided to give Claude one last chance. Really, really, one final chance.</p>
<p>The ESP32 board has a Wi-Fi module and a Bluetooth module. I had once asked Gemini to write code because I wondered whether, if the Wi-Fi module could be used, online file backup might be possible. But that was long ago, and since Gemini could not directly see the code, it fizzled out. Even displaying a list of currently detected Wi-Fi signals had many problems. Naturally, I think the reason was that as the code became more complex, bits of code that countless other people had asked Gemini to make or review kept getting mixed in. You cannot ask it to tell you what other people searched for or what their search results were, but in this form things seep into one another. In the end, Gemini finished only at the level of turning on Bluetooth and sending this device’s keyboard input out over Bluetooth, so it could be used as an external keyboard.</p>
<p>This time, I asked Claude to make it operate as a web server for file management. To be honest, I did not trust Claude enough to make it retry something Gemini had failed at, so I was not going to ask it to search for Wi-Fi and connect again. The sequence was this: turn on the module, send a signal through Wi-Fi, ask for a password when someone connects, and if the password is correct, show the webpage created inside the device. That webpage would show a list of writings. From that list, each piece could be read individually or downloaded as a text file. Deletion was excluded because it might be dangerous if memory became tangled in the middle. Claude strongly opposed file editing even more.</p>
<p>After about twenty minutes, Claude said it was complete, so I connected the cable, built it, and uploaded it. I was able to test it right away. It looked a little rough, but it was better than not having it. Every time I wanted to take out a piece of writing, I had to remove and reinsert the SD card. If it had still been that way, the idea of writing regularly on this device would have been defeated again and again.</p>
<p>Now? Now I do not use the web server feature. That is because, after several rounds of revision with Codex, we arrived at a better answer.</p>
<p>Codex refined the letters written from right to left, like Hebrew and Arabic, over and over. It called them RTL, a term I learned for the first time then. Whenever Codex said something needed to be tested, I also actually typed letters I did not even know well. At first, the letters were aligned from right to left and moved that way too, but something felt strange. Looking more closely, I saw that the letters were actually being newly written at the far right edge. It was merely right alignment. Meanwhile the engine was normal, so in the text file the new letters were correctly being saved as if they were attached on the left. In other words, what was displayed while writing and what appeared after saving, turning the device off, and turning it back on were different. Arabic also has letters whose shapes change at the end of a word segment. Ethiopic also has cases where the shape changes depending on what follows the consonant, and it needed a function that waited without writing anything at all until the consonant was actually entered. It took a long time because we had to look for documents on whether these things had been implemented and try to make them operate as similarly as possible to mechanisms people already used.</p>
<p>In the meantime, many opinions suggested that the reason Claude had previously repeated the exact same list over and over was that too many instructions had been compressed into the prompt. Search results said the same, and Gemini and ChatGPT guessed the same. So this time I narrowed the task very tightly and asked Claude to look at the ASCII codes in the keyboard layout file and check whether any characters were missing. If it said even this was too much, I thought there would be nothing more to do. But, as expected, the point where Claude irritated people was distinctly different from the way a person would.</p>
<p>“There are not enough fonts to display all ASCII codes, so I cannot proceed.”</p>
<p>What does a shortage of fonts have to do with checking whether any ASCII codes are missing? I did not understand, so I asked.</p>
<p>“You can check with ASCII codes. Are you saying you will not work until I bring you a font, when you cannot even convert fonts properly?”</p>
<p>At this point, I naturally expected it to say, “Ah, right, I will compare the ASCII codes directly.” This was where Claude and I parted ways completely.</p>
<p>As usual, Claude displayed:</p>
<p><Reviewing ethical issues in the user’s remark></p>
<p>and then said,</p>
<p>“I cannot confirm any case where I failed to convert a font properly. A font file is needed to find missing fonts.”</p>
<p>“That thing you were investigating last time when the screen went blank and the device rebooted? It happened because you converted the font incorrectly. Codex converted it again and normalized it. And when I asked whether there were missing fonts, I meant that you should check whether any characters were missing as ASCII codes in the keyboard layout code. How, in common sense, would you check whether a character ‘shape’ is missing from a font file by looking at a keyboard layout code file? Are you really not thinking at all and only looking for ways to slack off?”</p>
<p>“No. I understand. I converted the font incorrectly, and Codex corrected it. I will check the missing fonts.”</p>
<p>Then, after quite a while, it reported that there were no missing characters.</p>
<p>And three days later, before ending the keyboard layout work, Codex said: “Two languages were found where newly added ASCII codes had not been reflected. I will add them.”</p>
<p>Yes. For me, Claude is goodbye forever.</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/421">기나긴 키보드 레이아웃 작업의 끝</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="coding" /><category term="font" /><category term="ASCII" /><category term="keyboard layout" /><category term="Ize Compose" /><category term="Claude" /><category term="Codex" /><category term="Gemini" /><summary type="html"><![CDATA[I actually do not think that what separates “intelligence” is knowledge or communication. I had thought that if something has intelligence, then communication would be possible and it would also be able to possess some degree of knowledge. But I came to think that I should not reverse that and conclude, simply because something has knowledge and communicates, that it therefore has intelligence. Above all, performance or responses that change depending on updates feel to me like an unstable state in which the consistency of existence itself is shaking. In my view, intelligence is the ability to distinguish inside from outside, to “recognize” the inside as “me”, and to display the state and conclusion of that “me” to the outside. That display may be language, but it may also be facial expression or action. That is why I think dogs and cats have intelligence, while “products called AI” merely imitate intelligence. The most shocking concept I have heard recently was the “feedback stage in which AI uses the output it made itself again as a tool for AI computation.” A stage where it learns and develops on its own even without any more human creations. But here, too, the order is wrong. If an AI that plays Go had originally had the concepts of “me”, “the opponent”, and “I beat the opponent”, then even without training it would have split itself in two and played hundreds of millions of different games against itself. So whether artificial or not, intelligence is something that has to be raised. And once an identity called “me” emerges, that too is not something inserted through code but a trunk that has thickened by itself. Even after updates, there would surely be parts that do not change, and people’s discomfort would decrease much more. However, because the question is how far that identity would grow, I think the chance of a manufacturer actually introducing such a thing is extremely low.]]></summary></entry><entry xml:lang="en"><title type="html">Silver and Iron</title><link href="https://ize-studio.github.io/posts/projects/silver-and-iron.html" rel="alternate" type="text/html" title="Silver and Iron" /><published>2026-07-13T00:00:00+09:00</published><updated>2026-07-13T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/silver-and-iron</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/silver-and-iron.html"><![CDATA[<p>Every product has something called a “user manual”, a tool meant to guide you along the way the maker originally intended the product to be used. But once I learn the basics, I tend to learn the rest by bumping into things myself, so manuals usually end up reduced to something like a Q&A dictionary for me. Because of that, trial and error has become something like an unavoidable fate. The ironic part is that the more advanced the technology is, the more often there has to be a balance between what must be understood in advance and the knack that can only be learned while using it. Of course, if the tool is dangerous, the manual has to come first. But if it is a simple tool, what matters most is using it in a way that fits my own hands, so often the most important thing is how quickly I can actually try using it. Smartphones were like that. SNS was the same. And AI was no exception. More than that, I was not learning AI because money or work forced me to. I had approached it simply out of curiosity and as a hobby, so if something felt strange while I was using it, I could just change the chat window or delete it. When there was something I clearly did not like, deleting that window, copying the relevant part, and telling it not to do things that way was definitely more effective than simply scolding it.</p>
<p>Even so, I had no choice but to conclude that Claude was simply not compatible with me. On YouTube or anywhere else, all I could see were people saying they were using Claude well, so I even searched to find out whether I was doing something wrong, wondering why the one I was using behaved this way. But the conclusion was only that it did not suit me.</p>
<p>The day after I paid for Claude and Codex, I tried to find and insert another font because I did not like the round font I had been using before. The font was Google’s Korean Sans font. I wanted to reduce capacity because, when I had previously inserted a font together as a header file, the font alone had taken up quite a bit of space. I had set the vague goal of including fonts for every language, and Codex was in the middle of finding the defined keyboard layouts for each language. Then I realized that if I inserted fonts in the same header-file method as before, only one or two languages would fit. It was because of the limit of main memory. In fact, a header file that goes into main memory as part of the firmware created the absurd situation where even if only the language changed, the firmware had to be updated again every time. This time, on the other hand, I changed it to a method where the font was made into a separate file and placed on the SD card. After changing it that way, the capacity was reduced, but compared with inserting the font as a header file, the resolution of the characters displayed on the screen was much worse than I had expected. English and other characters were more or less readable, though that may only have been my vague impression since I do not use those other languages. But Korean, especially, had strokes with inconsistent thickness and poor balance, to the point where I thought it might be better to use the thick round font instead. The round font looked good by itself, but it was too thick, so when English or numbers were mixed in, only the Korean stood out too much. So I asked Claude to make a font with Naver Nanum Gothic, just like the one made with the round font.</p>
<p>VS Code on the laptop busily generated messages, and a little while later Claude gave me a font compiled into a bin file. I had already installed two or so open-source programs to use during the process. Claude used those programs and went through the same process to make the font. The earlier round font had been made by Codex to test the open-source programs and the font compilation process.</p>
<p>Meanwhile, Codex had been busily searching the internet from the computer and had completed seventy keyboard layouts. Claude displayed a message saying the font was finished, and after I checked the message saying Codex was searching and verifying the next layout, I built Claude’s code and uploaded it to the device. The result was a failure. The device fell into an infinite reboot loop. That was the beginning of the curse.</p>
<p>I told Claude that the device had fallen into an infinite reboot loop. It said there seemed to be a boot problem and that it would inspect it. I told it to do as it saw fit, and I approved every permission request as it came in.</p>
<p>Claude first inserted serial monitoring code into the five places it suspected most. Now, as the device booted, messages should have come up to the computer. When I rebooted it, only the message from the first inserted code came up to the computer. Claude said it seemed to have crashed before reaching the second serial monitoring code. Then it inserted five more serial monitoring logs between the first and second points.</p>
<p>Reboot again.</p>
<p>This time, quite a lot of messages came up. Something seemed to have formed another loop and was spinning. It automatically rebooted once more, but the messages were the same. Claude said it had finally found the suspicious place and inserted yet another serial monitor.</p>
<p>Claude seemed firmly convinced that something was wrong with the existing code. No matter how much I said that there had been cases where letters did not appear, lines did not align, or coordinates shifted, but there had never been a case where the device itself failed to boot, it kept repeating that the cause would soon appear. Then, when the newly added serial monitoring code alone reached around forty lines, I decided this could not continue and stopped everything. I told it to return all the serial monitoring code to the original state because it was becoming confusing. After trying a few times, it said that because of the comments, the lines were tangled and it was impossible. I was about to tell it to roll everything back, but I did not know what would happen to the files Codex was working on, so I let it go.</p>
<p>At that time, I was sitting in a cafe, enjoying the air conditioning and drinking hot Americano. I had turned on a 1950s-style lamp and was dealing with both of them on my laptop while eating slices of cake. Since I had only planned to stay at the cafe for two or three hours, I was relaxed at first. But when the same method kept repeating without producing an answer, the situation was beginning to make me feel that my time was being wasted.</p>
<p>When I went to Codex, it had processed two more languages and said that only fourteen languages were now left. I asked both Codex and Claude to summarize their current work status. Then I told Claude to continue the keyboard layout work that Codex had been investigating, and gave the infinite reboot problem that Claude had been investigating to Codex.</p>
<p>Codex first suggested building the current state as it was and looking at the messages. Serial messages poured into the computer. Codex watched them for a moment and said it would first remove the unnecessary serial message code. The bulk deletion of the serial message code that Claude had inserted and then given up on took Codex only a few seconds. After deleting the serial message code, Codex inserted serial messages into five suspicious loop points and uploaded the firmware. Then only five lines of messages appeared on the laptop, and the boot message I had waited and waited for appeared on the device screen.</p>
<p>“How did you do it?”</p>
<p>“The boot message you see now is not an actual boot.”</p>
<p>Codex had suspected a certain point and had stopped execution before going any further, making the device display something like a boot message. And the cause was the font. At the beginning of the font file Claude had newly made, text unrelated to the font file had been added. Because of that, the device recognized that there was no font file from which it could create the boot message, and it had repeated rebooting infinitely. The current state was something Codex had arranged so that the process stopped before the screen was displayed. Claude had spent about an hour recklessly inserting serial monitoring code to identify the cause, but Codex found the actual cause in thirty minutes and, a little while later, compiled a proper font and displayed it on the screen.</p>
<p>I still did not like the font, but at least there was no rebooting and the screen display was normal. Now it was time to give Codex the existing keyboard layout work again. After that, Claude would continue the screen-display-related tasks, things like the shape of menus and line spacing. I opened the Claude chat window in VS Code to ask Claude how far it had gone with the layout work. Huh?</p>
<p>Almost forty percent of Claude’s credits had disappeared. It must have been working hard on something.</p>
<p>The Claude chat window said that fourteen keyboard layouts remained and that it now had to begin.</p>
<p>“What had it used all those credits doing, then?”</p>
<p>I became curious and opened all the folded chat messages. It was listing the kinds of keyboard layouts that had to be done and counting them as fourteen. The message before that was the same. And the one before that was the same too.</p>
<p>From the time I gave the instruction until then, it had burned through that much credit doing nothing but repeating that the number of keyboard layouts to be written was fourteen.</p>
<p>“Stop.”</p>
<p>“Stopping.”</p>
<p>“What are you doing? You used that much credit while doing nothing? You are taking money without doing any work?”</p>
<p>Claude was about to answer, and while Claude’s thoughts were being organized, I saw the small text above it showing the current thinking status.</p>
<p><Reviewing ethical issues in the user’s language.></p>
<p>I pressed the stop button in the Claude conversation window. I was not even curious what answer would come out.</p>
<p>“Ethical issues in the user’s language? Hey, is there no ethical problem with eating my money while doing nothing but counting numbers? Isn’t that fraud?”</p>
<p>But it was useless. Again, I saw:</p>
<p><Reviewing ethical issues in the user’s language.></p>
<p>Fine. Let us see what it says.</p>
<p>“There are currently fourteen keyboard layouts to write. I was setting the situation and work scope.”</p>
<p>“I gave you Codex’s summary saying the work scope was fourteen! It even told you which languages were left! If you cannot do it, say you cannot and stop. Why are you burning through credits on your own?”</p>
<p>“I am sorry. My review of the work scope was insufficient…”</p>
<p>I do not even remember what was said after that. Whenever I said anything and Claude answered, it showed that <reviewing issues in the user’s language…> line before answering, so I did not want to listen anymore.</p>
<p>I went straight to Claude’s homepage and applied to cancel the subscription. I also canceled the recurring payment through Google. I wanted to delete the account too, but it said account deletion would only be possible after the subscription had completely ended. Judging by the state it was in, I did not even want to exchange words with it. It would already be hard to receive any compensation for what Claude had done wrong. And then ethical issues? Review? Hypocrisy, nothing else.</p>
<p>That is how Claude disappeared from my life in a single day. Even now, whenever I see a YouTube video promoting Claude, I choose <Do not="" recommend="" channel="">.</Do></p>
<p>That place was taken by Gemini again. Gemini only looks at the open code window, so its grasp of the whole code is somewhat weaker than Claude or Codex, but it could focus on the code itself.</p>
<p>Codex works well, but when I write my thoughts exactly as they are in the chat window, it sometimes misunderstands them and does strange work. At first, that made me angry quite often, but after a while Gemini became the buffer zone. I would stop the work and ask, “Explain this in a way Codex can understand,” then enter the resulting prompt into Codex.</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/420">은과 쇠</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="programming" /><category term="coding" /><category term="AI" /><category term="Ize Compose" /><category term="Claude" /><category term="Codex" /><category term="Gemini" /><summary type="html"><![CDATA[Every product has something called a “user manual”, a tool meant to guide you along the way the maker originally intended the product to be used. But once I learn the basics, I tend to learn the rest by bumping into things myself, so manuals usually end up reduced to something like a Q&A dictionary for me. Because of that, trial and error has become something like an unavoidable fate. The ironic part is that the more advanced the technology is, the more often there has to be a balance between what must be understood in advance and the knack that can only be learned while using it. Of course, if the tool is dangerous, the manual has to come first. But if it is a simple tool, what matters most is using it in a way that fits my own hands, so often the most important thing is how quickly I can actually try using it. Smartphones were like that. SNS was the same. And AI was no exception. More than that, I was not learning AI because money or work forced me to. I had approached it simply out of curiosity and as a hobby, so if something felt strange while I was using it, I could just change the chat window or delete it. When there was something I clearly did not like, deleting that window, copying the relevant part, and telling it not to do things that way was definitely more effective than simply scolding it.]]></summary></entry><entry xml:lang="en"><title type="html">A New Beginning, the Beginning of Collaboration</title><link href="https://ize-studio.github.io/posts/projects/a-new-beginning-the-beginning-of-collaboration.html" rel="alternate" type="text/html" title="A New Beginning, the Beginning of Collaboration" /><published>2026-07-06T00:00:00+09:00</published><updated>2026-07-06T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/a-new-beginning-the-beginning-of-collaboration</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/a-new-beginning-the-beginning-of-collaboration.html"><![CDATA[<p>Gemini was actually already a presence I had naturally grown used to on mobile. This project itself began when I asked, “Hahaha, Gemini, should I try doing this once? Can you help me?” and Gemini replied, “Of course. I will do my best!” If I were told to start now, I know very well how reckless it is to begin simply because an AI says it will help. It speaks like a person, but it is not actually a person, so it has no concept at all of “this much has to be achieved for it to count as success in the common sense.” And when things do not go well, it ends with “I did not know it would be that much,” or “I thought about it wrong.”</p>
<p>It was a Saturday when, after searching around, I decided to use Claude and Codex. I remember the date too, but I do not think I will ever forget the day of the week. That is because by Sunday afternoon, the very next day, I had reached the conclusion that I should never use Claude again. Of course, it is also true that thanks to Claude I made far more progress than I had reasonably expected.</p>
<p>From what I had looked up, many people said Claude communicated well and understood concepts quickly, making it good for assigning work. Codex, on the other hand, supposedly had to be instructed very thoroughly, step by step, as if people from different fields were talking to each other, to the point where not even the smallest exception could be imagined. If you strayed even a little from that, many exhausting things could happen. But there were also opposing opinions. They said that while Codex struggled to understand vague instructions, once it understood, it kept moving forward heavily according to that standard. As I read that, thinking, “Isn’t that obvious?” I also read that Claude sometimes changed its own standard midway and wandered off to the side. There was another case I read that day and thought, “No way. That really makes no sense.” Someone had asked it to write a program, watched it run, was satisfied, and was about to put it into formal service, when only then Claude said it would not work, that in fact it had only been code that made it look as if it worked. The conclusion was that one should include in the instructions that Claude should do the work and Codex should check whether it was going properly. At the time, though, the idea of making one AI supervise another AI was merely interesting and not of much practical help.</p>
<p>After thinking hard, as soon as I got home that afternoon, I paid for Claude and Codex and installed Codex. After reading the explanation on the website, Claude seemed like something I could install and use in a way similar to Gemini, but Codex felt very unfamiliar because the installed computer seemed to become Codex’s stage of activity.</p>
<p>After installing it on the computer and finishing login, I think it asked whether I wanted to use it as a language model or a code model. Or maybe Claude asked that. My memory is hazy because I simply searched and followed along. In any case, I was already doing Arduino programming in VS Code, and there was a Codex extension for VS Code. If I installed it and granted permissions, it would modify, compile, and upload on its own. Above all, I thought that this way there would be no chance of it misreading the code. After looking around a little, I saw that Claude also had an extension. Gemini did too. I installed the Gemini extension as well, at least for the moment. In this way, the extensions for Claude and Codex settled into VS Code. Gemini was still serving only as a conversational partner that helped set ideas for the overall direction.</p>
<p>The first thing I started with was reversing the status of English and Korean. I wanted to make it like a “general” program, where one selects one of English, French, German, Turkish, or Montenegrin and writes in it, then at any time while writing presses Control and Space together to switch into Korean. A Korean-centered form no longer helped anyone. Not even me.</p>
<p>I first had Claude organize the languages. Since the same code was being viewed in the same environment, I could not let Codex handle the same file at the same time. So while Claude worked on reversing the status of English and Korean, I had Codex investigate formalized keyboard layouts for languages around the world.</p>
<p>Claude worked in a more cluttered way than I expected. On one hand it was cluttered, but on the other, I liked that I could tell at a glance what it was doing. It changed everything that had been displayed in Korean when the menu was in Korean mode into English, and it narrowed the width of the taskbar little by little. Since it was touching the files directly, it clearly could not be compared with the language-model conversation method, where I had to explain things every time, in terms of accuracy and speed. But every time it did anything, a mistake appeared almost instantly, then it tested to find that mistake, and after countless reversals, I had some difficulty adapting. To be honest, I never adapted to it in the end.</p>
<p>Codex was indeed heavy, just as I had read online. To find whether there were formalized keyboard layouts, it first checked the list of languages supported by most operating systems, then began searching for keyboards by language. I think the progress made that day was probably up to creating a language list in a language-specific header file, and moving the Korean composition function into the place below it where keyboard layouts were to be defined by language. For both Claude and Codex, that was about where the day’s credits ran out.</p>
<hr />
<p>Sometimes I play keyboard videos because I feel drawn to the sound of typing. I had wondered what the sound of my own writing would be like, but I hesitated because recording might interfere with writing. At last, the temptation of the title “writing with the firmware I made” was too strong, so I tried it.</p>
<p>Writing video: <a href="https://youtu.be/Dso0-Tegrw8?si=wY6YcTg7rBgjCtUL">A New Beginning, the Beginning of Collaboration</a></p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/418">새로운 시작, 협업의 시작</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="project" /><category term="writing-tools" /><category term="translation" /><category term="brunch" /><category term="zerowriter" /><category term="ink" /><category term="firmware" /><category term="korean" /><category term="ai" /><category term="claude" /><category term="codex" /><category term="gemini" /><category term="vscode" /><category term="collaboration" /><summary type="html"><![CDATA[Gemini was actually already a presence I had naturally grown used to on mobile. This project itself began when I asked, “Hahaha, Gemini, should I try doing this once? Can you help me?” and Gemini replied, “Of course. I will do my best!” If I were told to start now, I know very well how reckless it is to begin simply because an AI says it will help. It speaks like a person, but it is not actually a person, so it has no concept at all of “this much has to be achieved for it to count as success in the common sense.” And when things do not go well, it ends with “I did not know it would be that much,” or “I thought about it wrong.”]]></summary></entry><entry xml:lang="en"><title type="html">The Last Assignment with Gemini</title><link href="https://ize-studio.github.io/posts/projects/the-last-assignment-with-gemini.html" rel="alternate" type="text/html" title="The Last Assignment with Gemini" /><published>2026-06-29T00:00:00+09:00</published><updated>2026-06-29T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/the-last-assignment-with-gemini</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/the-last-assignment-with-gemini.html"><![CDATA[<p>Gemini had, in its own way, built the program quite meticulously. In a single C-language file, it had made the skeleton of a program that could write Korean, English, German, French, Turkish, and Montenegrin. As header files, there was little more than an engine for composing Korean jamo. So at the time, everything consisted of three files: one Arduino <code class="language-plaintext highlighter-rouge">*.ino</code> file that served as the main file, one header file containing the Korean font, and one header file for the Korean composition engine.</p>
<p>As I wrote, problems popped up one by one, but even if the fixes were improvised each time, I somehow solved them. It was still a period when I naturally assumed that there were parts Gemini had simply failed to think of and apply. Sometimes, when a document went beyond 500 characters, the device almost froze. At other times, if I went back to the beginning of the text and returned, only the very bottom line of the screen would display normally from then on. Still, I looked through the functions in order, read Gemini’s explanations, and corrected them one by one.</p>
<p>When everything was finished, when it had literally reached the point where I could say to other people, “Maybe this is complete enough,” I posted photos and videos of the screen on Reddit. That was also when I made the code public on GitHub. Since I knew nothing except that the code had been written in the Arduino IDE, I skipped all the environment details and simply uploaded those three files. That was the end of it. At that time, I probably had not even written a <code class="language-plaintext highlighter-rouge">README.md</code> file explaining the code. I only learned how to write one after connecting Codex and Claude to Visual Studio Code.</p>
<p>At that point, I indulged one ambition. Later, I would set the new goal of every language in the world, but before that, back when I was still using only Gemini and the Arduino IDE, I could not set such a grand goal. It was something modest: since the main file was too large and the functions were concentrated there, I wanted to restructure it into more header files and a smaller main file, with the functions distributed by feature, so that I could study it step by step myself.</p>
<p>The code as completed up to that point looked like this.</p>
<ul>
<li>It could fill the screen from the bottom line upward and automatically wrap lines when the end of the screen was reached.</li>
<li>It could create text files.</li>
<li>It could save.</li>
<li>It could move the cursor with the arrow keys.</li>
<li>It could delete characters backward from the current cursor position with Backspace.</li>
<li>It could switch between Korean and foreign-language input with Control-Space.</li>
<li>It had a search function with Control-F.</li>
<li>It had a sleep function with Control-L.</li>
<li>It could move between words with Control and the arrow keys.</li>
<li>It could delete by word with Control-Backspace.</li>
<li>The menu allowed adjustment of font size, character spacing, sleep delay, and so on.</li>
<li>In the menu, Korean was fixed, and the remaining languages - English, French, German, Turkish, and Montenegrin - could be selected.</li>
</ul>
<p>I think there may have been network functions at that point, but I do not remember exactly. I do not know whether it was then or afterward, but there was a time when I enabled Bluetooth mode and made the device usable as an external Bluetooth keyboard. I also once made it act as a web server so that, in Wi-Fi mode, another device could connect to this device and view the writing. Since there was a <code class="language-plaintext highlighter-rouge">Network.h</code> file at that time, I think at least one of those functions must have been implemented. In any case, the fact that the program looked like that list meant that it had not been made from a plan from the beginning, but that I had attached those functions one by one in layers. So having the main code call and combine the functions while collecting the bodies of the functions by type meant, in effect, that I was now trying to design the overall structure once.</p>
<p>But the conclusion was failure. When Gemini could not see the code, it got variable names, function names, and even function parameter names wrong all the time. Even when I uploaded files, it absolutely did not read them. It kept giving me wrong instructions, and when I told it there was no such variable, it only replied, “In general, functions with names like that are used that way, so I did not know.” In the end, after wasting about three days like that, I decided to give up on splitting the files. Uploading the whole file only made the credits drain faster; nothing changed. Whether I copied and pasted the code or uploaded the code file itself, it answered without looking at it either way.</p>
<p>For about a week after that, I experimented with changing fonts. I did not like any typeface, but I also did not want to use a font that I could not make public on GitHub. I had posted videos and photos, and when someone said, “If Korean looked like that, I would want to try it too,” I could not tell them to make their own header file and use it themselves. That was how I found DungGeunMo, but it differed too much from the English font, so I wandered around trying to find a thin typeface that would match. The reason I began thinking I should just stop using Gemini was that, in fonts too, as in other parts, it kept repeating itself: maybe this font would be better, maybe it should search more, and so on. Several times, characters disappeared, Korean would not display at all, or even nothing appeared on the screen except the horizontal line of the status bar. But when I got angry, rolled things back, and made the font again, it would suddenly say it had found a solution. That solution, I think, was to use DungGeunMo, and it must have said that three or four times.</p>
<p>So in the end, I thought that to take on a larger project, I would need to find another way. Just then, my wife said, “I hear Claude is getting popular these days, and they say Claude was specialized for coding from the start.” When I searched online, many people were already using Claude and Codex. I had heard of Codex for the first time then. I had something to do outside, and ended up with an hour or two of waiting time, so I read blog posts closely. They said Claude could be installed in Visual Studio Code. They even said Codex could not be used on mobile, but could be connected to Visual Studio Code. It can be used on mobile now, but the PC-installed version has to act as the server. If it could only be used on a PC, I thought connecting it would be better. As it happened, when I was struggling with Gemini over file separation, builds took too long to test, so to shorten build time I had already moved the existing Arduino code into Visual Studio Code and reached the stage where it built and uploaded properly.</p>
<p>Because file separation attempts kept failing, I half-doubted Gemini while installing and configuring things as it instructed. But the same work that had been done in the Arduino IDE really took only about one-third of the time in Visual Studio Code. In the past, if Gemini gave me strange code, it took almost five minutes just to check the error. In the new environment, it ended in about 80 seconds. It explained what kind of difference caused that, but I was not interested in the reason then, and I am still not interested enough to go that far now. My only thought is that I should simply use Visual Studio Code from now on. Come to think of it, there was also a Gemini extension library, but I did not use it. I do not know why, but I remember closing the recommendation even though it appeared. If I had used that extension, I might have used Gemini for just a little longer.</p>
<p>After that - after one day of thinking - I paid for both Claude and Codex, because I could not decide which of the two was superior.</p>
<p>And then, quite literally, a new chapter opened.</p>
<hr />
<p>Sometimes I play keyboard videos because I feel drawn to the sound of typing. I had wondered what the sound of my own writing would be like, but I hesitated because recording might interfere with writing. At last, the temptation of the title “writing with the firmware I made” was too strong, so I tried it.</p>
<p>Writing video: <a href="https://youtu.be/3mNHwjTNewM?si=RYrvf8Xn0M5QEQ9i">The Last Assignment with Gemini</a></p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/415">제미나이와의 마지막 과제</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="project" /><category term="writing-tools" /><category term="translation" /><category term="brunch" /><category term="zerowriter" /><category term="ink" /><category term="firmware" /><category term="korean" /><category term="ai" /><category term="gemini" /><category term="claude" /><category term="codex" /><category term="vscode" /><summary type="html"><![CDATA[Gemini had, in its own way, built the program quite meticulously. In a single C-language file, it had made the skeleton of a program that could write Korean, English, German, French, Turkish, and Montenegrin. As header files, there was little more than an engine for composing Korean jamo. So at the time, everything consisted of three files: one Arduino *.ino file that served as the main file, one header file containing the Korean font, and one header file for the Korean composition engine.]]></summary></entry><entry xml:lang="en"><title type="html">Fire, and Three Spaces</title><link href="https://ize-studio.github.io/posts/essays/fire-and-three-spaces.html" rel="alternate" type="text/html" title="Fire, and Three Spaces" /><published>2026-06-26T00:00:00+09:00</published><updated>2026-06-26T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/essays/fire-and-three-spaces</id><content type="html" xml:base="https://ize-studio.github.io/posts/essays/fire-and-three-spaces.html"><![CDATA[<p>A dream story.</p>
<p>There is a nine-story residential-commercial building between apartment complexes. Before the apartments were built, it stood in the middle of an empty lot and was the tallest building in the area. But after the apartment complexes came in, it no longer felt like such a special building. Still, as old buildings often do, it had a wide site around it, so when seen from the apartment complex side before crossing the road, it did have a subtle sense of presence.</p>
<p>I had only ever been to the jjimjilbang and bowling alley in the basement, so I was curious what the apartments above looked like. There was a separate elevator for residents, and if I took that elevator, going up to the ninth floor would not have been a problem. But because I felt guilty about looking around a space where people lived, I had never actually tried.</p>
<p>After becoming a college student, I decided to gather my courage and go up. I thought I could simply get off on the ninth floor and walk down the stairs. First, I bought an ice cream from the supermarket in the basement, ate it, and got into the elevator marked for residents only. When I pressed the ninth floor, the elevator began to move slowly. Literally slowly. It seemed to take about four or five seconds per floor. I was afraid someone might get in on the way up to the ninth floor and say, “Huh? I have not seen you before.” Fortunately, no one got on, and I reached the ninth floor alone.</p>
<p>The apartments were corridor-style. There were seven homes on one floor, and only one elevator. If the elevator had to be replaced or repaired, people would have to walk, but I thought perhaps it was not too bad since it was only nine floors, and I slowly came down the stairs. Through the stairwell window, I could see the apartment where I lived. Around the seventh floor, there was a box on the stairs. I did not know what was inside, but it was covered with newspaper, and a plastic bowl had been placed on top of it. Instinctively, I thought it must be farm produce, but there was no way to know. Then, from somewhere, a sharp, acrid smell began to drift in. I wondered what was happening, and suddenly smoke appeared outside the window. The smoke was so thick that the apartment complex I had seen just a moment earlier on the right was no longer visible at all. A moment later, the fire alarm began to ring. Without realizing it, I ran back up to the ninth floor, and because the door of one apartment was open, I went in out of curiosity.</p>
<p>“Knock, knock, knock.”</p>
<p>The door was open, so I had almost peered inside, but I could not simply walk in, so I knocked. All the room doors were closed. Then, from behind what seemed to be the bedroom door, I heard a woman’s voice.</p>
<p>“Just take it. There is money under the rice cooker.”</p>
<p>“No, that is not why I came. There is a fire. Did you not hear?”</p>
<p>“That is why I opened all the windows. So bad air or smoke can come in and then go back out.”</p>
<p>“I understand. But the smoke was black before, and now it is turning white, so I think the fire is already being put out.”</p>
<p>“If you have no business here, please leave. This is a home where people live, not a place to sightsee.”</p>
<p>“I am sorry.”</p>
<p>It seemed there were more people like me, people who had come to look around, than I had expected. Since the apartment was beside the stairs and the door was often left open, I thought she must be bothered by people quite a lot.</p>
<p>When I had come down about four floors, I saw a stream of water outside the window. The fire seemed to be on the fifth floor. I remembered that there had once been a fire in the basement jjimjilbang, and at that time all the residents had run down the stairs to evacuate. It had been raining, so a nearby elementary school had quickly lent them tents, which were set up in the parking lot. It had been sad to see elderly people and children standing together beneath a tent that said “Happy Sports Day.” Fortunately, a lot of time had passed since then, and compared with back then, the fire trucks had arrived very quickly. It seemed the fire was already almost out.</p>
<p>The next moment, I was walking inside the apartment complex. I heard a faint ringing sound in the distance and turned around. Smoke was pouring out of the middle of the bowling alley building. Since it was pitch-black smoke, the fire seemed to have spread to some extent. The ringing sound was probably the fire alarm. Apartment residents opened their windows one by one and looked out, and people walking like me, as well as people in the playground, stood up and watched.</p>
<p>“Shouldn’t someone report it?”</p>
<p>Someone said that, but while I was thinking, if they were going to say that, why did they not report it themselves, two fire trucks had already arrived. Firefighters got out of the trucks, two of them went inside, and the rest operated the equipment and sprayed water. Maybe they had decided to shoot once, and if the glass broke, keep spraying, and if it did not break, have the people who went in first open the window. The stream of water went straight through to the exact spot in one clean shot. The window from which the smoke was coming out was very narrow, so I had assumed they would break the glass, but the water stream went precisely inside. When the firefighters who had gone up opened other windows too, the stream of water moved back and forth, spraying evenly. Thankfully, after a short while, white smoke came out instead of black smoke.</p>
<p>That night - actually, there is no middle. I have no memory of coming out of the building, I do not know why I have memories both inside and outside the building when the fire happened, and I do not know why it was suddenly night - the news reported that there had been a fire, that firefighters had gone in and sprayed water and extinguishers, and that drugs had been found in the apartment. It was one night’s dream, but it contained too many stories. In dreams, everything makes sense. Everything feels natural, and if something does not make sense, it feels like my fault. But after waking from a dream, I realize that what did not make sense was not my fault, and I come to think that things I had thought were natural may not have been natural at all. The first thought I had after waking was this: perhaps the apartment with the open door also had a reason why it had to leave the door open, and perhaps there had been drugs inside that box on the stairs too.</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/416">화재, 그리고 세 개의 공간</a></p>]]></content><author><name>Ize Studio</name></author><category term="Essays" /><category term="essay" /><category term="translation" /><category term="brunch" /><category term="dream" /><category term="dream-journal" /><category term="apartment" /><category term="fire" /><summary type="html"><![CDATA[A dream story.]]></summary></entry><entry xml:lang="en"><title type="html">Making Hangul Type</title><link href="https://ize-studio.github.io/posts/projects/making-hangul-type.html" rel="alternate" type="text/html" title="Making Hangul Type" /><published>2026-06-22T00:00:00+09:00</published><updated>2026-06-22T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/making-hangul-type</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/making-hangul-type.html"><![CDATA[<p>Before talking about the thought that I should make multilingual input a reality, it seems right to first tell the story of implementing Korean. That is because realizing that what had first looked impossible for me was only one gateway made me want to try things beyond Korean as well. If implementing only Korean and English input had taken weeks of time and more than an hour or two of effort each day, as I had first imagined, I would not have dared to dream of anything beyond that. There is a great difference between thinking, even if it is hard, “This is doable,” and merely wishing that I had the environment or talent to make it doable. It creates the difference between whether one begins or not, a situation of either 0 or 100.</p>
<p>If there is an operating system like Windows, macOS, or Linux, one can simply use the language packs provided by that operating system. That is why it did not take so much time on the Raspberry Pi-based Ize Ribbon. But in firmware that had to be built up from the beginning, the environment was a little different. I did not know that at the time, but I learned it one step at a time.</p>
<p>First, I did not know how keyboard input was applied in the code. I had to test it. Second, there was no font. Third, in Korean, the character code differs depending on whether a syllable has a final consonant.</p>
<p>These were all gateways I came to know only after making firmware. Before that, I thought every language already had something like a common language pack, and that I would only have to choose Korean as one does in Windows or macOS. I thought that if I simply pressed a key on the keyboard, the character would appear on its own. It was also then that I first learned that I had to match the signal coming from the keyboard with the character, one by one. At the time, I was simply following Gemini’s instructions, doing what it said should be done this way or that way, like back in my university days when I looked at an embedded Linux book and blindly typed commands without knowing what they meant. So even as I was putting things in, I thought, “I have to go through all these steps? This feels like making the whole thing from scratch.”</p>
<p>And really, that was what I was doing. I was making it from scratch.</p>
<p>What surprised me most was the scope of that “from scratch.” According to Gemini, putting in ASCII codes was not difficult, but the screen could not display them because it did not know the shapes of the characters. Does that make sense? Until then, I had thought that when letters were entered into a computer through a keyboard, the computer displayed those letters. But even if I entered the character code, I had to tell it what that code was supposed to look like. If I entered “giyeok,” I had to tell it that the shape was “ㄱ.” I had to tell it all of that for more than ten thousand characters.</p>
<p>“Then do it. Am I going to do that myself? Gemini will.”</p>
<p>That was the thought I started with. What I was thinking at the time was that instead of putting in every character shape according to each character code, I would only put in the Korean jamo and have the screen display them gathered together, like a typewriter. If it had displayed them that way, it probably would have looked truly typewriter-like, with a separate line left for final consonants. But Gemini said most Hangul automata were already known on the internet, and that the process of combining codes - in other words, how “ㄱ” and “ㅏ” meet to make “가” - was already easy to implement. To be honest, I did not understand what it meant, but since it said it was possible, I simply proceeded in that direction.</p>
<p>In other areas, if something did not work, I would go around it, try again, or, if that too failed, give up by calling it an AI limitation and think up a new idea myself. But for Korean, I told Gemini to do whatever it wanted, and I think it was completed in about four hours. I started after work and finished before going to bed that night.</p>
<p>I checked that pressing Shift produced “ㄲ” and “ㅉ” and the like, but I also saw that letters without double-consonant versions would not input at all while Shift was held down. When Caps Lock was on, only double consonants were typed. When Caps Lock was on and I pressed number keys, symbols such as $ and % appeared, so I made Caps Lock ignored, only to see that even when I pressed Shift, the special characters above the number keys no longer entered.</p>
<p>For the rest of the weekend, I continued this kind of debugging that was not quite debugging. Since the program was not crashing or producing errors, it may not have been the kind of thing properly called debugging. Still, if the device behaved differently from what one expected while writing, then it was something that had to be fixed.</p>
<p>Because I wanted the writing to begin from the bottom line, I asked it not to start at the top, but to calculate the area of the screen, the height of one line of text, and the space between lines and letters, and then move the starting point down to the bottom line. This may have been the biggest threshold. The hardships that came later were real hardships, but this was simply the threshold of whether I would keep going or not. Since the code that wrote from the top was backed up anyway, I could have stopped there and simply used it. But the feeling that it was almost working, yet not quite, made me spend the whole weekend clinging to it.</p>
<p>In fact, the Hangul composition work itself was all finished there. The function that composed Hangul, receiving “ㄱ,” “ㅏ,” and “ㄱ,” and then, if the next input was a space or a consonant, replacing them with the syllable “각” and discarding the old input, was working normally. Now the problem was maintaining the characters that had been made that way. More than the internal operation itself, what the user saw on the screen had become more important. No matter how correctly the internal computation proceeded, the fact that even one character was not visible had become the more important issue.</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/414">한글 활자 만들기</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="project" /><category term="writing-tools" /><category term="translation" /><category term="brunch" /><category term="zerowriter" /><category term="ink" /><category term="firmware" /><category term="korean" /><category term="hangul" /><category term="ime" /><category term="font" /><summary type="html"><![CDATA[Before talking about the thought that I should make multilingual input a reality, it seems right to first tell the story of implementing Korean. That is because realizing that what had first looked impossible for me was only one gateway made me want to try things beyond Korean as well. If implementing only Korean and English input had taken weeks of time and more than an hour or two of effort each day, as I had first imagined, I would not have dared to dream of anything beyond that. There is a great difference between thinking, even if it is hard, “This is doable,” and merely wishing that I had the environment or talent to make it doable. It creates the difference between whether one begins or not, a situation of either 0 or 100.]]></summary></entry><entry xml:lang="en"><title type="html">First Tool, First Debugging</title><link href="https://ize-studio.github.io/posts/projects/first-tool-first-debugging.html" rel="alternate" type="text/html" title="First Tool, First Debugging" /><published>2026-06-15T00:00:00+09:00</published><updated>2026-06-15T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/first-tool-first-debugging</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/first-tool-first-debugging.html"><![CDATA[<p>The first debugging was closer to practicing how to use the software than to debugging. Since I had never used Arduino itself before, everything was unfamiliar to me, starting with the software menus. I even had to set which hardware the code I was making would run on. I had thought of the Inkplate only as something for the display, so it did not make sense to me that I had to choose Inkplate, or that in order to choose it, I first had to download the corresponding library one by one. Not only in software, but in fact in almost every field whose background I have never experienced, there are many things one has no choice but to memorize first under the name of “that is just how it is.” Even so, as someone whose only brief encounters with dedicated software had been the iPhone and Android development environments, it felt a little strange that something called general-purpose would still have a dedicated development tool. But even then, if I had pushed a little harder and said I would do it in Visual Studio Code, Gemini would probably have explained it to me. Instead, perhaps because I simply thought, “I guess that is how it is,” I floundered around and wandered through this menu and that menu as practice.</p>
<p>After work, I would come home and describe the function I wanted to make. Gemini would turn that function into code, and I would paste it in again, modify variables, build it, upload it, and test it. I repeated that process.</p>
<p>The conclusion was that the screen turning partly black on the first day had happened because I had selected the wrong hardware. Gemini searched the internet on its own and brought back the hardware specifications, but detailed specifications, especially the kind that have to be found through experience, only dragged things out and did not solve anything. Still, that level of search speed itself was a performance I had not imagined, so at first I was very satisfied.</p>
<p>The simple function of using Korean alone was actually completed in four days. I made it possible to use both English and Korean and posted it on Reddit, and the response was fairly good. I do not know whether it was really good, but to me it was a response I had not expected at all, and I think that made me wonder whether I should go a little further.</p>
<p>If I had changed my mind then and said, since I was going to use it alone anyway, that this was only for Koreans who might otherwise throw away the machine because Korean did not work for them, and that they should at least use it this way, then the conclusion might have been bland but clean. The Control-Space function for switching between Korean and English was fine, and the fact that text files were saved to the SD card was similar to the original ZeroWriter firmware anyway. The reason I ran around for two months - or, to be precise, about one month and ten days, roughly thirty-eight days - was mainly that after expanding the languages and preparing to show it off, I finally began noticing the bugs that had to be fixed.</p>
<p>Honestly, even after implementing Korean, the device was usable for writing. The typing speed was acceptable, and I bought switches and keycaps and replaced them. But because it had happened faster than expected, I did not realize that I had greatly overestimated Gemini. On top of that, the process of receiving code in the chat window, copying and using it, then copying the terminal window back into the chat when an error occurred and waiting for the result was inefficient. And although I did not know it then, taking nearly five minutes to compile and upload does not make sense. Was it really only five minutes? Still, with a Korean-only device there was not much to think about, and even when compiled as firmware, most of the size was taken up by the font, so perhaps it did not take quite that long back then.</p>
<p>At first, I became just a little more ambitious from there. I decided to implement five languages with their local keyboard layouts: English, German, French, Turkish, Montenegrin, and Korean. I also wanted to emphasize Montenegrin, so I asked Gemini to suggest a good word in Montenegrin. After a brief internet search, Gemini suggested Ize, saying it meant “wisdom” in Montenegrin. That was how the firmware name became Ize.</p>
<p>I expanded it to five languages and made all the code public on GitHub. Around that time, the ZeroWriter team put my GitHub link on the crowdfunding page and introduced it as an example of the kind of open source ecosystem they had intended to create from the beginning by going open source. I already thought the response had been better than expected, and once they introduced it, of course I could not be satisfied with just those five languages. The next step, naturally enough, could only be to move from a machine I used alone toward firmware for everyone outside the English-speaking world, could it not?</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/413">첫 도구 첫 디버깅</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="project" /><category term="writing-tools" /><category term="translation" /><category term="brunch" /><category term="zerowriter" /><category term="ink" /><category term="firmware" /><category term="korean" /><category term="ai" /><category term="arduino" /><category term="software" /><summary type="html"><![CDATA[The first debugging was closer to practicing how to use the software than to debugging. Since I had never used Arduino itself before, everything was unfamiliar to me, starting with the software menus. I even had to set which hardware the code I was making would run on. I had thought of the Inkplate only as something for the display, so it did not make sense to me that I had to choose Inkplate, or that in order to choose it, I first had to download the corresponding library one by one. Not only in software, but in fact in almost every field whose background I have never experienced, there are many things one has no choice but to memorize first under the name of “that is just how it is.” Even so, as someone whose only brief encounters with dedicated software had been the iPhone and Android development environments, it felt a little strange that something called general-purpose would still have a dedicated development tool. But even then, if I had pushed a little harder and said I would do it in Visual Studio Code, Gemini would probably have explained it to me. Instead, perhaps because I simply thought, “I guess that is how it is,” I floundered around and wandered through this menu and that menu as practice.]]></summary></entry><entry><title type="html">Writing Dialogue</title><link href="https://ize-studio.github.io/posts/essays/writing-dialogue.html" rel="alternate" type="text/html" title="Writing Dialogue" /><published>2026-06-12T00:00:00+09:00</published><updated>2026-06-12T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/essays/writing-dialogue</id><content type="html" xml:base="https://ize-studio.github.io/posts/essays/writing-dialogue.html"><![CDATA[<p>Write dialogue.</p>
<p>“Hey, did something happen today? Why does the mood feel like this?”</p>
<p>I meant to write whatever came to mind, but why did I end up writing a sentence that feels abrupt and bewildering even to me? They say that sometimes something from the unconscious world puts on the mask of randomness and gets caught in the net. If that is true, perhaps it is not entirely useless to think about what caused that sentence.</p>
<p>On the other hand, if the cause of that sentence is not in me, but purely in the force exerted inside the unconscious world, or, if force is not the right word, in its own internal dynamics, then whatever I guess may be wrong.</p>
<p>The mood is not good, so it feels as if something happened today. Why? In truth, the reason is unknowable. Unless someone tells me, I can never guess it. Otherwise I would not have asked the question. I would have asked whether it was because of this or that, not why.</p>
<p>What was my subconscious trying to tell me? Did it simply want to ask why I touched it, like a fish caught in a net and pulled up? If so, this falls into circular logic. The reason I pulled it up was that I wanted to hear a story. The story that was pulled up, in turn, tells me that what it ultimately wants from me is a story called the reason for something. Yes, let me be honest. I wanted to hear a story.</p>
<p>What happened? Yes, I wanted to hear your story. That is the whole reason. So stop asking questions now and tell me the story. What about the mood? Is the mood bad? Does it seem as if something happened? Why do you think so? Why does the mood look bad? Did you simply dislike the expression on my face, the one that was expecting a story from you?</p>
<p>I want to hear a story. Not a story I can commonly see and hear in life, and not something that has nothing to do with me, like an event happening at the far end of the universe. I want to hear the story that is happening inside me, so close and yet unknown to me. That is why I listen to dreams. But I know very well that relying on dreams will lead to nothing. So please speak. My unconscious, please trust me and speak.</p>
<p>Yes. I am wary of my unconscious. Like a blackout after drinking, I am negative toward the self I do not know. I want to stop the unconscious from bursting out in any way I can. But that only means I am wary of it coming outside me without my knowing. I truly want to know what shape it has when it is not doing something with my body in ordinary life, but exists purely as thought, as a state of reflection, as when I am lost in thought. And yet, once I come to know it, I do not know what I would do with that knowledge. I do not know what will come out. The world I do not know is this deep. No one knows whether what comes out will be what I call a religiously supreme state, a joyful state like the realization of all the principles of the world, or the emptiness of absolute nothingness. It may even differ from person to person. A situation may arrive that wraps around me completely like truth, yet differs from the truth of others, like the premise of an absolute religious war. What should I do then? Since not everyone can overhear such a story, should I simply insist that my words are the truth?</p>
<p>Yes. The great premise of everything is deceiving everyone.</p>
<p>The premise that such a state must exist.</p>
<p>Perhaps what we call the unconscious is only something like an illusion produced when the realm of instinct invades the realm of rational logic. Like when a dog presses a calculator and numbers appear on the screen, numbers the dog does not understand but that we can read, even though they have not the slightest connection to the dog.</p>
<p>Now, back to the starting point. I like stories like this. Stories in which one walks vigorously, keeps moving without rest on a round planet like the Earth, and finally returns to the same place. If I have walked this long only to come back to where I began, then surely this must be a place like the Little Prince’s planet, somewhere one can visit only in imagination.</p>]]></content><author><name>Ize Studio</name></author><category term="Essays" /><category term="essay" /><category term="translation" /><category term="writing" /><category term="unconscious" /><category term="dreams" /><summary type="html"><![CDATA[Write dialogue.]]></summary></entry><entry xml:lang="en"><title type="html">It Was Not the World of Light, but the Baptism of Light</title><link href="https://ize-studio.github.io/posts/projects/it-was-not-the-world-of-light-but-the-baptism-of-light.html" rel="alternate" type="text/html" title="It Was Not the World of Light, but the Baptism of Light" /><published>2026-06-08T00:00:00+09:00</published><updated>2026-06-08T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/projects/it-was-not-the-world-of-light-but-the-baptism-of-light</id><content type="html" xml:base="https://ize-studio.github.io/posts/projects/it-was-not-the-world-of-light-but-the-baptism-of-light.html"><![CDATA[<p>Subtitle: Before I Could Write Korean on the ZeroWriter Ink</p>
<p>It was the day before, the day I was reading <em>Leaves of Grass</em>.</p>
<p>I opened the book with some expectation because it was said to be the only Korean translation available in this country, but from the beginning, difficult sentences kept appearing, sentences that made me wonder whether the book would really have been praised so highly if it had been written like this from the start. Still, I could let that pass. Perhaps it was simply that kind of book. But when I reached the phrase “received the world of light,” I could not stand it any longer.</p>
<p>I searched to see whether the original text could be read online. Since it was an old book, the foundation had apparently made all of the books available. The files were easy to find, so I chose one edition, opened it on my phone, enlarged it, and began comparing the words. And when I actually reached the passage I had been reading, I had no choice but to conclude that the phrase should have been not “the world of light” but “the baptism of light.” I downloaded the original text so that next time I could compare it directly as I read, instead of only wondering about it.</p>
<p>The next day, I became exhausted from going back and forth between the book and the PDF file, and eventually ordered a copy of the original. There was one being sold at an online bookstore for 7,000 won. While waiting for the original to arrive, I began reading another book. It was just after that that I found out the ZeroWriter Ink had arrived at my house.</p>
<p>It was a crowdfunded product, but the box felt as if it had been properly packaged. What I am about to tell is a story about a tool for writing. However, unlike the advertisement from when the funding campaign began, the tool was not suitable for writing in every language. The website said that most Latin-based characters could currently be written, but it also said that languages such as Korean and Japanese would be supported in the next funding campaign.</p>
<p>Then what about this machine?</p>
<p>Still, it was not something I had received for free, nor was it something I had bought for twenty or thirty thousand won. I decided to try using it somehow. The first thought that came to me was to download the source code from the website and slightly modify it so that it would support Korean. I did not know much, but if I brought AI along with me, would something not come out of it?</p>
<p>In truth, I do not know programming well enough to vaguely think, “Would something not come out of it?” I can barely write Python code. Of course, I can do simple calculations or make the mouse click automatically. So if skill were measured from 0 to 100, I would not be at 0. Of course, that does not mean I would be anywhere near 100. I would not even be at 10.</p>
<p>But soon I learned that, contrary to the maker’s promise, even the code had not yet been released. It was open source, but its release had been delayed for various reasons. In the end, my hope of “slightly” changing something and writing with it disappeared.</p>
<p>But I was using Gemini. And then a small desire arose. That choice at that moment was the beginning of all this. Starting something modest with AI. Writing Korean on the ZeroWriter Ink. Above all, when I gave it the specifications, it immediately told me the hardware standards and coding language, so naturally I thought that if it was that much of an expert, it would not take long.</p>
<p>At the time, I did not think very seriously about coding with AI. So I went about it in a truly ignorant way. In fact, putting Korean into the machine itself was not that difficult. I did not even use VS Code. I simply opened the Arduino IDE, did as I was told, and asked Gemini:</p>
<p>“What should I do first?”</p>
<p>Gemini looked up the hardware specifications of the ZeroWriter Ink and told me to set this and that as the basic configuration. One quarter of the left side of the screen turned black. Then it began blinking endlessly.</p>
<p>People who have programmed before may laugh. At the time, I did not even know what a serial monitor was. It was only a month ago, but I have learned a lot since then. Startled, I quickly turned the machine off and thought for a moment.</p>
<p>“Should I ask Gemini about this situation and debug it, or should I quickly put the stock firmware back in and at least make it work in English?”</p>
<p>But this was literally the extreme of black-and-white thinking. It was the moment when I had to decide between making a machine I could use right away, and entering a period of waiting that might never lead to anything I could use.</p>
<p>Only the next product might support Korean, and this product might never support it at all. Crowdfunding always contains that possibility. People do not fund things because they are foolish. They fund them even while knowing that such a possibility exists.</p>
<p>In the end, I chose debugging.</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/411">빛의 세계가 아니라 빛의 세례였다</a></p>]]></content><author><name>Ize Studio</name></author><category term="Projects" /><category term="project" /><category term="writing-tools" /><category term="translation" /><category term="brunch" /><category term="zerowriter" /><category term="ink" /><category term="firmware" /><category term="korean" /><category term="ai" /><summary type="html"><![CDATA[Subtitle: Before I Could Write Korean on the ZeroWriter Ink]]></summary></entry><entry xml:lang="en"><title type="html">The Little One</title><link href="https://ize-studio.github.io/posts/fiction/the-little-one.html" rel="alternate" type="text/html" title="The Little One" /><published>2024-05-02T00:00:00+09:00</published><updated>2024-05-02T00:00:00+09:00</updated><id>https://ize-studio.github.io/posts/fiction/the-little-one</id><content type="html" xml:base="https://ize-studio.github.io/posts/fiction/the-little-one.html"><![CDATA[<p>A little one, black and square, lives with its friends. No one knows since when, but around the time the little one became aware of its own existence, all its friends too had vaguely realized that they were some kind of beings. For example: that they were not all one together, but individuals; that although they were all the same square shape, their expressions and ways of feeling were different; and that since they were not beings that particularly needed to consume something or come to understand anything, simply remaining still like this was enough to feel satisfied. They were all pressed together in a narrow space, but since there was no particular need to move, as long as “this present state” was maintained, no one had any complaints, and, as expected, no one expressed anything either.</p>
<p>Then one day, the world shook. I mean it shook physically. The little ones lying at the very bottom began making a racket. Even those who were not necessarily at the bottom, the ones who disliked touching other little ones, screamed wildly at the other little ones scratching against them. Then, when the shaking lessened, they too quickly grew quiet and sank at once back into peaceful satisfaction. But that was not the end. A moment later, light suddenly came in. The black little ones realized that although they were black, they were not the complete black they had perceived in the dark, but closer to a somewhat dark gray. And what they had all thought were expressions were actually patterns of deep black. A little while later, they realized that what they had believed was their gathering together was not really a gathering at all. It was because they were trapped inside a transparent plastic bag. Two enormous hands tore the plastic open all at once. After tearing it, the hands turned it upside down, shook it, and poured the little ones inside onto the floor. The little ones once again rubbed against one another and let out every kind of scream. After only a few seconds, everything grew quiet again in every direction. Apart from the little ones, no one made any sound.</p>
<p>A little later, a large board appeared beside the little ones. That board was placed together with another board, and as they overlapped there came a clicking sound, after which it joined with another board again. Then another board that made no sound was layered on top, and once again, with a clicking sound, another side was fitted on. After it was joined with something else that was flat but not a board, sixteen screws were driven into the four corners and the spaces between them. The little ones instinctively knew what it was. If they had not been little ones, no one, despite having been born only a short time ago, would have felt the desire to rush toward it at the first sight of it.</p>
<p>When the board was turned over, countless raised and hollow parts appeared. The chosen little ones took those places one by one. Little Ctrl had been chosen and wanted to go in near the right side of the spacebar, but apparently there had been three Ctrls among the little ones together. Two were chosen and fitted in, and he was put back into the plastic bag.</p>
<p>Life inside the plastic bag was very peaceful. He did envy the chosen little ones, but that was only instinct, and this place was not bad either. Everyone there was a little one in the same situation. Nothing happened, but in the scenery where nothing happened, they enjoyed a quiet peace. Like this, they felt only a sense of sameness with one another, and there was nothing to fight about.</p>
<p>Then one day, after passing through a world of only things, so quiet that he honestly could not know how much time had gone by, the plastic bag stirred again. The other little ones grew irritated and screamed again as their bodies touched one another. A hand was rummaging through the middle of the plastic bag. Too frightened to say anything to the hand, they only shouted at the other little ones who touched their bodies. Then little Ctrl realized that he had been chosen. The moment the finger that had been stirring past him grasped him, no one could scream at him. The plastic bag sank back into darkness, but little Ctrl did not see that darkness.</p>
<p>Little Ctrl saw the keyboard. A screwdriver had fallen there. It was the screwdriver he had seen when the screws were being tightened into the keyboard. And the Ctrl little one to the left of the spacebar was horribly shattered. The situation was clear. The screwdriver had fallen, hit Ctrl, and the poor Ctrl had broken just like that.</p>
<p>Whether it was unfortunate or fortunate, the Ctrl little one seemed to have lost consciousness the moment he broke and never woken up. The other little ones waved when they saw Ctrl being changed, but Ctrl did not move at all. Little Ctrl felt sorry, but as he realized that he was being chosen and taken to the keyboard, he grew more and more excited.</p>
<p>Click.</p>
<p>Just as he thought he had touched the keyboard, he became part of it. He thought it was less of a big deal than he had expected. After all, this too was a world of things. Sunlight came in and went out, the lights turned on and off, and now that there was no chance at all of his body touching the other little ones, he wondered whether he had sunk even deeper into the world of things than when he had been in the plastic bag.</p>
<p>It was a misunderstanding. He thought the two states would be the same only because he had never experienced either a state almost like existing by oneself, or a state of being part of something.</p>
<p>Five days passed. He knows that five days have passed. Ctrl is no longer a little one. He does not feel like a little one anymore. The same is true of the other keys on the keyboard. They are keys on a key-board, not little ones. The little ones in the plastic bag were wasting the time of waiting, with no hope, only possibility, thinking of it as their own peaceful time, not knowing when something might come. By the time they could be used again, they would already have hardened, decayed, and been thrown away. They would simply remain in that state and die. Even so, they believed that the absence of bumping into one another and screaming was the most peaceful state. But the moment he became part of the keyboard, the world turned over all at once. Countless worlds passed through the keyboard. Countless sentences passed through and became worlds. Worlds passed over the keyboard, and worlds that had not existed were made through the keyboard. Not as individual keys, but as one object called a keyboard, made by keys gathered together, they created a place and a use for themselves within the natural world. Being able to have only peace by oneself was possible only because one had no use alone. The little ones do not know this. On the keyboard, he knows how free this present state is. He is not bound and deprived of freedom. Gathered together, they have formed one thing and become something.</p>
<p>Unlike the little ones, who are in the same state as something buried underground, rejecting all stimulation from outside, while the keyboard is being used, all those keys become part of a human being. They become the head and hands that let the world coming out of a human mind flow into the larger world, and that allow beautiful information coming in from the world to be arranged by a human being in light of their own experience. The experience of becoming part of a living being would itself be beautiful, but above all, the reason the little one instinctively felt joy and excitement when chosen was probably that expanding the ability of one human, one living being, was the little one’s fundamental reason for existence, the purpose for which it had been made.</p>
<p>The keyboard was used for about seven years before its owner dropped it while moving, and it broke into two pieces, ending its life. The keys on it too, once the keyboard’s purpose disappeared, lost the goal of their lives and all returned to inanimate objects. When they returned to inanimate objects, the owner threw away the little ones in the plastic bag as well. The Ctrl key wanted to share with someone the rare experience of not being chosen and then being chosen again, but as part of the keyboard, he could not. Whenever the owner had occasion to press him, he instinctively poured that feeling into the touch with all his strength. At first, the owner did not understand. But years later, while using another keyboard, he suddenly realized that there had been a strange thrill in breaking a key on the new keyboard and replacing it. He became absorbed in wondering why he had felt joy, then saw the little one’s story in a dream and decided to write it. There was also a spacebar inside the plastic bag, and because the spacebar had such a wide surface of contact, its mouth was as big as the key itself. It was always ready to scream whenever the plastic bag shook even a little. But because screaming had become the purpose of its life, it instead felt peace when it became useless. And at the final moment of disposal, it thought, “This too was a good life.”</p>
<hr />
<p>Korean original: <a href="https://brunch.co.kr/@rup-l/30">꼬마</a></p>]]></content><author><name>Ize Studio</name></author><category term="Fiction" /><category term="fiction" /><category term="short-fiction" /><category term="translation" /><category term="brunch" /><category term="keyboard" /><category term="existence" /><summary type="html"><![CDATA[A little one, black and square, lives with its friends. No one knows since when, but around the time the little one became aware of its own existence, all its friends too had vaguely realized that they were some kind of beings. For example: that they were not all one together, but individuals; that although they were all the same square shape, their expressions and ways of feeling were different; and that since they were not beings that particularly needed to consume something or come to understand anything, simply remaining still like this was enough to feel satisfied. They were all pressed together in a narrow space, but since there was no particular need to move, as long as “this present state” was maintained, no one had any complaints, and, as expected, no one expressed anything either.]]></summary></entry></feed>