# Personal History of Programming

> A write-up focused on programming, drawn from records I kept for my own memory. (I’m still continuing to update it by dredging up memories and searching related records.)

A write-up focused on programming, drawn from records I kept for my own memory. (I'm still continuing to update it by dredging up memories and searching related records.)

## Before 1985

Before entering elementary school.

I still didn't know that such a thing as a computer existed. My experience playing games at arcades was my first experience using a computer (without even knowing that was what it was).

At the time I lived in Anam-dong, Seongbuk-gu, Seoul, and whenever my older brother (3 years older than me) and my older cousin (4 years older than me) went to the arcade, I tagged along. I think it was 50 won per play. Back then tteokbokki at the market was also 50 won per serving, but now one play of a game is around 500–2,000 won and tteokbokki is around 3,000–6,000 won, so tteokbokki has gone up more.

- I mainly played <Xevious>(<vertically scrolling shooter>, released by <Namco> in <1983>). My cousin controlled the stick (the most fun role), my older brother pressed the fire button (the hardest role), and I handled the bomb button (the most boring role).
- I also played [Pac-Man](https://wiki.g15e.com/pages/Pac-Man.txt). I had absolutely no idea at the time, but later, in my late twenties, while studying game design, I learned that the Pac-Man ghost characters all move differently depending on their color.
- <Exerion> was a shooting game that used a parallax effect to give a slight 3D feel, but I don't think I played it all that intensely.

My cousin's family ran a bag factory and was, comparatively speaking, fairly well off. At their house there was an MSX-based game console called <Zemmix>, and I played games like <Magical Tree> and <Antarctic Adventure>. They also had a portable VR game device, which fascinated me and made me incredibly envious. When I looked it up later, it turned out to be the <Tomytronic Planet Zeon>. Released by Tomy in <1983>. It did a very good job of expressing 3D with a crude LED display ([reference video](https://www.youtube.com/watch?v=BDhq8pC77QM)).

While wandering fairly far around the neighborhood following my brother, I saw an automatic revolving door or an automatically opening door for the first time in some building. It was a luxurious building with walls that felt like black marble. It wasn't a hotel, more like a commercial building, but I don't remember exactly. It was so fascinating that I kept going in and out of it, and I think I got scolded by the building caretaker (?). I don't remember whether it was 1985 or before that. It was probably the first case of <ambient intelligence> I ever encountered.

I remember getting homework in kindergarten to draw a pencil case in a sketchbook, and doing it at home. I remember having a terribly hard time because I couldn't properly depict a box-shaped pencil case. I don't remember exactly, but I think I crudely did a representation where multiple sides were visible at once, like ancient Egyptian painting (or Cubism). Not because I intended to, but because I didn't know how to depict three-dimensional form. Naturally, I didn't know terms or concepts like vanishing points, perspective, or depth. Looking back, painting is a technique for projecting and fixing onto a two-dimensional sheet of paper a world seen through two eyes(<Stereoscopic vision>), whose colors change depending on the kind and position of light source, and whose details vary depending on the observer's mood or attention—so of course there could never be one correct answer for such a technique.

It was the era when the insurrectionist <Chun Doo-hwan> was president, so he was on TV all the time, and every time my grandmother would say, "Yeombyeonghane!"—roughly, "What a load of bullshit!"—so at the time I thought "yeombyeonghane" meant something good.

## 1986

1st grade of elementary school.

My guardian changed, and I suddenly moved to a nice house in a rich neighborhood (the wealthy part of Jangwi-dong, Seongbuk-gu, Seoul). Before moving, my older cousin gave me a portable Pac-Man game device as a gift. Looking it up later, it was the <Tomytronic Pac Man>, released by Tomy in 1981. At night my older brother and I would often pull the blanket over ourselves and have fun with it.

I hear that <Chollian>, the PC telecommunications service of Dacom (now <LG Uplus>), started service in 1986. Of course I had no idea, and it had nothing to do with me.

## 1987

2nd grade of elementary school.

We bought a <Zemmix game console>. It would have been nice if we had bought a computer, but I still didn't know what a computer was. The Zemmix could take <MSX> cartridges, but every last one of them was a game.

- I really enjoyed a game called <Zanac>. Zanac was developed in <1986> by a Japanese company called <Compile>, and it had <dynamic difficulty adjustment (DDA)> implemented. The side panel displayed the quantified difficulty level under the name "ALC," and I used to "hack" the difficulty by watching that number while playing. It was easy to figure out what actions made the difficulty go up or down. Because of that, later when I worked as a planner, I was often reminded that "some system states may be better hidden from the user." When I later read <The art of game design>, I was glad to see a related discussion.
- <Majou Densetsu> was also fun. A game released by <Konami> in <1986>. I played it diligently, but never got to see the final boss.

I played games too much, so my guardian would hide the <joystick>. Even without a joystick, if you properly grounded the console terminal with a conductor like scissors, you could send signals, but it wasn't easy enough to control that you could really enjoy the game. If I'd had a bit more obsession or persistence then, I might have made a homemade joystick, which is a pity.

Even now, I lack obsession and persistence and always miss good opportunities. One of my lifelong flaws that never seems to get fixed is low conscientiousness (the "C" in the [Big Five personality traits](https://wiki.g15e.com/pages/Big%20Five%20personality%20traits.txt)), but in my late twenties I learned while reading <Personality: What makes you the way you are> that low conscientiousness isn't an all-bad thing. Apparently low conscientiousness can be advantageous in situations with high uncertainty.

## 1988

3rd grade of elementary school.

The mother of one of my brother's friends opened a "Bethes Computer Academy" in the neighborhood (Jangwi-dong, Seongbuk-gu, Seoul), and my brother attended it. The academy was around the top of the hill coming up from Changmun Girls' High School into Jangwi-dong. If you passed there and went down the hill, there was "Dongbang Computer Academy."

My brother learned <MSX-BASIC> (Microsoft Extended BASIC) at the academy and taught it to me. Since we didn't have a computer at home, we coded in notebooks, and my brother executed it in his head. We also put a life-size printed keyboard on the desk (it was a supplement from some computer magazine) and practiced typing on it. On weekends the academy was open, so I sometimes tagged along with my brother and got to practice there.

The MSX computers at the academy at that time had no storage device and only <ROM>. If you inserted a cartridge with a game on it (at the time it was called a "ROM pack") and booted, the game would run; if you booted without a cartridge, MSX-BASIC would run. Since it was BASIC loaded in the system ROM, it was also nicknamed ROM Basic, though I don't know whether only Korea called it that. Since you couldn't save anything even if you coded, I memorized several short BASIC programs and repeatedly typed them in; that was one of my little party tricks that made people find me fascinating. I remember that a few years later I was extremely fascinated when I saw an <SPC-1000> (Samsung Personal Computer) at a friend's house with a cassette tape-based storage device.

Back in '88 the academy had Apple II and MSX machines, and I liked the MSX. Probably because the MSX had a color screen and supported playback of synthesized music in three-part harmony (`PLAY` could take up to three arguments), whereas the Apple II was monochrome.

The first problem my brother gave me to solve was to print a right triangle using the character `*`, and I solved it like this:

```BASIC
10 PRINT "*"
20 PRINT "**"
30 PRINT "***"
```

I should have used nested loops, but I hadn't learned loops yet. Because my brother praised it as an excellent solution, I came to believe I had a talent for programming. If he hadn't praised me back then, my life might have turned out very differently.

I still remember how difficult the distinction between variables and constants was when I first learned programming. I also remember being very astonished by patterns like `a = a + 1` where a variable refers to its own value in order to update itself. Judging from memories like these, I sometimes think it would have been better if I had learned a pure functional language from the outset. The claim that functional languages are counterintuitive is probably false. It reminds me of <Jef Raskin> pointing out in [The humane interface](https://wiki.g15e.com/pages/The%20humane%20interface.txt) that people often mistakenly describe "familiar to me" as "intuitive."

Before learning conditionals or loops, I learned the `GOTO` statement first. [Dijkstra](https://wiki.g15e.com/pages/Edsger%20Dijkstra.txt)'s essay "[Go to statement considered harmful](https://wiki.g15e.com/pages/Go%20to%20statement%20considered%20harmful.txt)" had already come out in <1968>, so despite it having already been 20 years, nobody told us to avoid the GOTO statement at the time. Since MSX-BASIC already had `GOSUB` and `RETURN`, there was really no need to teach `GOTO`. For reference, `GOSUB` and `RETURN` are commands to support subroutines, and a subroutine in MSX-BASIC is a function without 1) local variables, 2) arguments, or 3) return values.

I vividly remember making a program that drew an infinitely tall apartment building in ASCII art. I didn't want to make it infinitely tall, but since I only knew `GOTO`, there wasn't any other way.

```BASIC
10 PRINT " /-------------\ " 
20 PRINT "/               \" 
30 PRINT "+-+-----------+-+" 
40 PRINT "  |           |  " 
50 PRINT "  |           |  " 
60 PRINT "  +-----------+  " 
70 GOTO 40 
```

Back then computer books translated keyboard as "piano keys" (geonban), file descriptor as "file technician," and mapping as "sasang" and so on. I had no idea what a "technician" was, or what "sasang" was supposed to mean, but I slogged through anyway and understood only part of it. There was no one around to ask, and there was no web. It was already the era of <PC telecommunications>, but not only did we have no computer at home, I didn't even know such a thing as PC telecommunications existed.

I also remember that in MSX-BASIC, doing `POKE 851, 1` turned Korean syllable composition on, and doing `POKE 851, 0` turned it off. It was a command to write 1 or 0 into memory offset 851, and I was doing memory mapped I/O, but at the time I had no idea and just memorized it and used it.

In some ways I was lucky: I lived in Seoul, and because my brother's friend's parents opened a computer academy, I was able to encounter computers. But in other ways I was unlucky: I was born in Korea rather than the United States, both my guardians had dropped out of elementary school, and they had little educational zeal.

My friend Son OO transferred into our school. Because I often went to his house to hang out, I became close with his younger sibling Son OO too. After my friend Son OO went on to middle school and we lost contact, I heard from him again in my late twenties when he contacted me saying he was getting married, and we met once. He said he was studying philosophy of law abroad.

## 1989

4th grade of elementary school.

Around this time, the computers at neighborhood computer academies changed from 8-bit to 16-bit. It was probably because 16-bit computers had been designated as the national standard at the time (during President <Roh Tae-woo>'s term), though I had no idea then. Unlike the MSX, which would run BASIC just by turning it on, had a color screen, and could play three-part harmony, these made a bad first impression: if you didn't insert a diskette, you couldn't do anything, the screen was monochrome, and they could only make crude beep sounds (though of course the frequency could be controlled).

I hear the first floppy diskette was 8 inches, though I've never seen one(<1960s>), and the first diskettes I used were 5.25-inch mini floppy diskettes. Inside the square <plastic> sleeve was a magnetic disk for recording, and inside the plastic there was (probably) a thin white fibrous layer to protect the disk from damage. If you stored it badly—bent it severely or left it near a magnet—data was very easily lost. The capacity was usually 360KB.

The computer's main memory (RAM) was 512KB or 640KB. Some games only ran with 640KB. As of now (2025), my MacBook Air's (unified) memory is 32GB, so that's about a 60,000-fold difference.

The <MS-DOS> version was 3.3. The shell used in MS-DOS was `COMMAND.COM`, and to save memory it worked by unloading the shell from memory when another command was executed, then running `COMMAND.COM` again when the program finished. Frequently used commands (CD, DIR, etc.) were classified as internal commands, while less frequently used ones (FORMAT.COM) were external commands.

Before long I became deeply absorbed in a collection of utilities called <PC Tools>. With a <Hex editor>, I could edit game save files to do a kind of "hacking," and I could also defragment disks. Later Peter Norton's <Norton Utilities> became the dominant product, but at this time (at least in our neighborhood), <PC Tools> was the standard.

My friend Son OO was planning to buy a computer and asked me whether he should buy an Apple-compatible machine sold by a company called "Aproman," or go with the <8086> line. At the time I thought 8086 was better, but because I was jealous that he was buying a computer, I deliberately recommended Aproman. But he bought the 8086. I was bitter.

My friend liked Koei's Romance of the Three Kingdoms games. They were hugely popular then, but I never played them even once. My friend's mother was a middle school English teacher, and when we played games in English she would help us with interpretation. Because I had learned programming, I was fairly familiar with the alphabet, and I did stammer my way through reading things, but I didn't really know what they meant. In some game back then, the word "Mystery" appeared, and I misread it as "Mister Lee," and my friend's mother corrected me.

My friend Son OO and I went to hang out at "Dongbang Computer Academy" and tried <Tetris>, which was wildly popular at the time, for the first time. Dongbang Computer Academy was down the hill from Bethes Computer Academy, which my brother attended. I'm not sure whether it was '89 or '90. I'm not even sure why we went there; all I remember is Tetris. At the time my friend didn't really understand the rules of the game and teased me, saying, "I already stacked everything up—why are you still playing?" which I found absurd.

At the time there was a huge craze around a computer virus called the <Jerusalem virus>. I saw a news report saying "the virus spreads through Tetris, a game made in the communist country <Soviet Union>," and whether that gave me a strong anti-communist spirit or not, I'm not sure; in my twenties, I would later read <Marx>'s <Communist Manifesto> with enjoyment. (I still haven't read <Capital>, but I did enjoy [Peter Singer](https://wiki.g15e.com/pages/Peter%20Singer.txt)'s [Marx: A Very Short Introduction](https://wiki.g15e.com/pages/Marx%20-%20A%20very%20short%20introduction.txt).)

<Ahn Cheol-soo>, who was both a doctor and a hacker, developed and released for free the <V2 PLUS> vaccine, which had the ability to treat the <Jerusalem virus>. V2 PLUS was the predecessor of V3. Among computer enthusiasts, Ahn Cheol-soo was a kind of hero. I remember that about 20 years later, during the 2011 Seoul mayoral by-election, when Ahn Cheol-soo united candidacies with candidate <Park Won-soon> in the so-called "beautiful concession," I felt tremendous respect for him. Of course that respect instantly turned into disappointment.

I attended an art academy with my friend Son OO. I'm not sure whether it was '89 or '90. We learned watercolor, but all we ever painted were still lifes and landscapes. I don't think I was particularly good at it. Whenever I entered some contest, I only ever got honorable mention. If I'd taken it a bit more seriously then, would I have developed aesthetic judgment? It's a real pity.

## 1990

5th grade of elementary school.

Right behind our house lived Jae-eun (a friend of my brother), and his family was even better off than ours. I think I heard that his father was a branch manager at some bank. Jae-eun had a dedicated word processor machine. It combined a printer, a computer, and a small monitor in one unit. I never saw it myself and only heard about it, but I envied it tremendously.

My brother bragged to me that the computer at Jae-eun's house had a color monitor and something called a hard disk, so it could boot without inserting a diskette. It was unbelievably fascinating. Later I finally went over to his house and saw it, and it really was astonishing. The computer turned on without any diskette, the boot speed was incredibly fast, and after booting, the <Norton Utilities> <NCD> program (a sort of file explorer) launched automatically (`AUTOEXEC.BAT`). I envied that blue screen so much.

Up to that point, every 16-bit computer I had seen was connected to a monochrome monitor via a <Hercules graphics card> (green, white, or orange). Jae-eun's computer must have had a <VGA> card. VGA's resolution of 640×480 was lower horizontally and higher vertically than Hercules's 720×348.

Around this time I studied ways of producing various effects by directly controlling the memory and ports of the <Hercules graphics card>. If you directly modified the graphics card memory, you could update the screen quickly, and if you changed the starting position of the monitor's scanline, you could shake the whole screen quickly without using the <CPU> and create an "earthquake effect." These days one byte corresponds to one subpixel, so calculations are fairly simple, but in Hercules graphics mode one bit corresponded to one pixel, so you had to use a lot of bit operations. I think around this period I became very familiar with binary and bit operations. Thanks to that, even now I can read and write binary fairly intuitively (not as well as decimal, but still), and it is very occasionally useful.

For reference, the text mode of the Hercules graphics card could display 80 characters on one line. "80 characters per line" was a venerable tradition going back to the typewriter era. Most typewriters could display roughly 70–90 characters on one line, <IBM> <punch cards> had 80 characters, <Fortran> coding sheets had 80 characters, and so on. (I've never seen punch cards or Fortran coding sheets in person.)

One day my brother bought the first issue of the monthly magazine "<Computer Junior>" (the <April 1990> issue). At the time there was also a monthly magazine called "Computer Learning," which had changed its name to "Mycom." The monthly magazine "Microsoftware" already existed too. Looking it up later, it apparently launched in 1983.

At last I enrolled in Bethes Computer Academy too.

By then the academy taught <GW-BASIC> instead of MSX-BASIC, but I was already familiar with it, and the college-student instructor didn't really know programming well, so I mostly studied on my own. Since I had no computer at home, I was happy simply because at the academy I could use computers as much as I wanted. Besides that, I learned how to use programs like <HWP> and <Dr. HALO>. At the time everyone called Dr.Halo "Doctor Halo," but apparently it was actually "Draw Halo."

When I made simple games, the instructor would copy them and pretend he had made them himself, and he would ask me to add this or that feature. One day I said I wanted to learn C, and the instructor told me, "With C you have to do this thing called compile, and every time you do it you have to swap dozens of diskettes for hours, so don't learn it." Of course that was a lie. I should have learned it then. I remember <Turbo C 2.0> existed at the time.

Young-chun, an older student at the same academy (I don't know his surname), would often obtain pirated games from Yongsan or <Sewoon Sangga>. He copied some games for me too, while there were others he absolutely would not copy and played only by himself. At the time all the software used at the academy was pirated, and the very concept that one ought to buy software was vague.

I saw the Daewoo <X2> computer displayed at <Kyobo Book Centre> in Gwanghwamun. I wanted it so badly, but I never even asked anyone to buy it for me. But in retrospect, it was an 8-bit computer out of step with the times. I don't know why I wanted it so much. Because the black exterior looked cool? Because it was flashier than the 16-bit computers with monochrome monitors? Because it had lots of games?

At the time I enjoyed <SimCity> (released in <1989>). Later I got so good at it that I would always achieve 100% approval in the in-game opinion poll. It was only in my mid-twenties that I learned that <Will Wright>, who developed SimCity, was influenced at the time by <Christopher Alexander>'s theories of urban design. Alexander's theories began to become known among developers around that period, and later led into things like [design patterns](https://wiki.g15e.com/pages/Design%20pattern.txt) and [agile methodologies](https://wiki.g15e.com/pages/Agile%20methodology.txt).

I also had a lot of fun with <Prince of Persia> (released in <1989>). The character's smooth movements stood out, and later I learned(<The Making of Prince of Persia>) that it had used a kind of motion capture. Amazing people.

<Uncharted Waters> was also popular at the time, but I didn't play it. Friends who played it were all very knowledgeable about world geography. It's a pity; I wish I had played it too. (Starting in 2025, 35 years later, I've been slowly memorizing world geography with <Anki>. By now I know fairly well what is where. It's late, but I'm glad I started. In everyday life it's useful when watching movies or the news, and when studying, place names connect to much more context, which is very useful.)

Around this period I used a <TSR> program called <Game Wizard>. For example, if you want to manipulate gold in a game, you do this:

1. Before playing the game, first load Game Wizard into memory.
2. Run the game you want.
3. Press a hotkey to bring up Game Wizard.
4. Enter how much gold you currently have. (Example: 1500)
5. Go back into the game and spend some gold.
6. Press the hotkey again to bring up Game Wizard.
7. Enter how much gold you currently have. (Example: 1400)
8. Game Wizard finds the memory region that changed from "1500" to "1400."
9. Change the value in that region, then return to the game.
10. Manipulation successful.

I realized that once you manipulate things, the fun of the game drops sharply. Because the [value embedded in the process](https://wiki.g15e.com/pages/Values%20in%20the%20process.txt) disappears. Much later I once bought and ran a <Diablo 3> macro (probably made in Germany), and I realized that in some games, if you manipulate them (use macros), the genre changes. If the original Diablo is a hack-and-slash genre, then Diablo with a macro becomes a puzzle-solving genre about finding the optimal item combination, or something like Football Manager.

I hear 1990 was the year the [Human Genome Project](https://wiki.g15e.com/pages/Human%20Genome%20Project.txt) began. Of course I didn't know that.

## 1991

6th grade of elementary school.

At the time there was no English in the regular elementary school curriculum, but my homeroom teacher would sometimes teach us English and even teach us things like Christmas carols. Looking back, I wonder if this too was one of those lucky experiences that positively affected my study of programming. I liked that teacher a lot, but thinking back, I think he may have sexually harassed female students. Pinching both armpits and pressing his body close, and so on. I remember that he often smelled of alcohol, often had bloodshot eyes, and that curly hair would often poke out from between his shirt openings.

<MS-DOS> 5.0 came out. I remember versions like MS-DOS 3.3 and 5.0, but not 4.0, so I looked it up later and found that 4.x was a somewhat experimental branch supporting things like multitasking.

MS-DOS 5.0 came bundled with a full-screen <text editor> called EDIT and an <IDE> called <QBasic>. Later I learned that EDIT was not a separate program but QBasic's "text editing mode" (the `QBASIC /EDITOR` command).

QBasic felt like a sort of sample version of <QuickBASIC>, and unlike QuickBASIC it couldn't compile. I was already using <QuickBASIC> 4.5, though I don't remember when I started using it. Looking it up later, QuickBASIC 4.5 was released in <1988>. Since I was definitely learning MSX-BASIC at the time, it must have been some point between 1989 and 1991.

One of <QBasic>'s sample programs was called `GORILLA.BAS`. It was a game where gorillas throw bananas, and in order to obtain the X and Y components from the velocity vector it used <trigonometric functions> (`COS`, `SIN`). At the time it looked like magical code I could not understand at all. I really wish someone had just given me a little help then.

People around me mainly used <Mdir> at the time, but I used <LS>. Compared to `MDIR.EXE`, `LS.COM` had fewer features and was less pretty, but it was small and fast.

The first version of [Python](https://wiki.g15e.com/pages/Python.txt) was released during this period (February 1991), but I had absolutely no idea. The first time I encountered Python was 10 years later, in <2001>, through a wiki-based community called <Nosmoke>. Nosmoke was implemented with a Python-based wiki engine called <MoinMoin>.

## 1992

1st year of middle school. Seoul Namdaemun Middle School.

For my extracurricular club, I chose the computer club. My art teacher said I had talent and suggested I try moving to the art club. In truth, I probably didn't have talent; I had just briefly attended an art academy in elementary school. It felt nice to hear, but I liked computers more, so I stayed in the computer club. Since I was going to keep studying computers anyway, I wish I had just chosen the art club. It's a pity.

At the time my family circumstances were very difficult. My daily allowance was 100 won (far too little to go to the arcade, so I often stole coins from the piggy bank), of course there was still no computer at home, and I couldn't attend an academy either. On weekdays I coded in notebooks, and every weekend I took the bus to Youngpoong Bookstore and practiced on the computers displayed in the basement. There were only two computers on display, so to secure one you had to line up before opening.

I read every BASIC-related book in the bookstore. There weren't many books, and even when I read them there was hardly anything new. I wish I had studied computer architecture, data structures, algorithms, or discrete mathematics instead of BASIC. No one around me could advise me. Friends who liked computers liked games, but none of them liked programming.

Because I wanted to do <game development>, I played around by putting dots on graph paper and calculating them to make fonts or character sprites and so on. I discovered a few computer graphics tricks, such as how to efficiently represent a cursor using the fact that the <inverse function> of XOR is XOR, or how to draw lines quickly with the <Bresenham algorithm>, but later I found out they were all already widely known methods. Still, I was proud to have discovered them on my own. In the end I failed to implement an algorithm to fill an arbitrary shape with a specific color. At the time computers were slow enough that in other painting software you could plainly see the procedure by which the fill algorithm worked, but even after seeing it I couldn't reproduce it.

I hung out at friends' houses playing North & South, Rampage, <The Secret of Monkey Island>, and so on. At arcades I mostly played Street Fighter II. I remember getting slapped by some older guy I didn't know for playing "cheaply." Even I thought it was cheap. But it wasn't something one should be hit for. There is nothing in the world that is worth being hit for.

## 1993

2nd year of middle school.

Our computer club (extracurricular club) went on a field trip to the computer lab at Kwangwoon University. That was because Namdaemun Middle School belonged to the Kwangwoon educational foundation. I don't remember anything else except sneaking off and playing <Lemmings> there(<1991> release). We also visited the computer room of some company in the Kyobo Building in Gwanghwamun (probably Kyobo Life?). I remember seeing a huge magnetic tape device.

Around this time our family situation improved a little (the reason the family situation kept changing abruptly was that my guardians changed often), and at last we got a computer. An 80386DX. It had a Sound Blaster card, and I used a mouse for the first time. It was a ball mouse with a trackball on the bottom.

At the time, Sound Blaster was being imported and sold by a company called JC Hyun. A competing product was a domestic sound card called <Oksori>. Back then people clearly distinguished between "domestic" and "foreign-made," and among foreign-made products there was a definite perception that "American-made" and "Japanese-made" were good. I heard here and there that the domestic Oksori had poor compatibility (a false rumor?), so I bought a Sound Blaster. Configuring the sound card—getting IRQ and DMA settings right and so on—was quite educational.

JC Hyun also provided a GUI program they had made themselves. To close a dialog box, you had to press a button labeled "Confirm," and because that was the first time I had seen that label, I remember wondering why it was "Confirm," what I was supposed to be "confirming," or what the computer was going to "confirm." A dialog box is literally a box in which the computer and the user have a dialogue. It is a UI that imitates the procedure where the computer says something to the user and the user replies, "Yes, I confirm." "Yes, I confirm" is too long, so it was probably shortened to "Confirm," but compared to the English "Okay" or "OK," "Confirm" seems excessively ambiguous. Since the 2000s, some UI guidelines have recommended more descriptive buttons (e.g. "Yes, delete it") instead of ambiguous buttons like "Yes," "No," "Confirm," or "Cancel."

Around this time I also enrolled in a computer academy in Donam-dong. There were many older girls attending commercial high schools. At the academy we mainly learned <Lotus 1-2-3>. Perhaps one of the standard career paths for women back then was still to graduate from a commercial high school, work in accounting, and then "get married." But I found Lotus 1-2-3 boring. At the time I was trapped in the prejudice that the only real work you could do with a computer was programming, and everything else was trivial.

Because there was nobody at school who knew how to program, I represented the school in the regional preliminary round of the Informatics Olympiad. I think we loaded the computer into my father's car and went to Sunrin Commercial High School (now Sunrin Internet High School). Why did we bring the computer? Was that the normal thing? Anyway, we brought it, and my results were poor. I had no idea what the Olympiad even was and did no preparation at all. At the time I was dissatisfied, thinking, "They said it was a computer competition, so why are they giving us something like math problems?" Back then I didn't understand the connection between programming and mathematics very well. Looking back, it's very regrettable.

I studied <MASM> using a book from Infobook called "Macro Assembler Bible." I'm not sure whether it was '93 or '94. It was a book about assembly language, but remarkably it also covered <OOP>. At the time it felt fresh to read an explanation that you could do object-oriented programming even in a language that was not object-oriented.

I think this was when I first tried <Dune II>. It was a genre I had never experienced before (I hear it was the first game to popularize <RTS>), and it was excellent in many respects: realistic voices, natural-looking facial movements (by the standards of the time), and background music that changed with the game situation.

I downloaded the shareware version of [DOOM](https://wiki.g15e.com/pages/DOOM.txt) from a PC telecommunications file archive and played it for the first time. Even on a <386> computer, if you lowered the rendering detail level and reduced the screen size somewhat, it was playable. From the name alone I thought it might be some "ripoff" of <Dune II>, but it was an incredible game and a tremendous shock.

I also enjoyed <Prince of Persia> 2, though I never saw the ending.

I used <PC telecommunications> intensely, and the phone bills got high. At first I wandered around private BBSes, then used free services like Infoserve ("Infoserve" or "Infoserve Junior"—I don't remember exactly) and Sincheonji. For reference, Sincheonji was not <Lee Man-hee>'s Shincheonji, but a service run by the religious group <Jeungsan-do>. After connecting to `01410`, you could get in by typing `jsd` (Jeungsan-do?). I don't think it felt particularly religious.

I used <Iyagi> 5.3, a <terminal emulator> made by <Haneulso>, the computer club of <Kyungpook National University>. I kept using it until later, when I switched to <Saerom Dataman> after I started using Windows.

I used <Windows 3.1> occasionally. Other than Minesweeper, I don't really remember what I did with it. I wish I had studied Windows programming, but I was too deeply absorbed in DOS. It was a good opportunity, which is a pity. At the time Windows was not yet an independent operating system, but an application that ran on DOS. The consumer line remained in that form through <Windows 98> and even <Windows Me>, and only with <Windows XP> did it become something that could boot independently without DOS. (The business-oriented <Windows NT> line was already an independent operating system unrelated to DOS from <1993>'s NT 3.1.)

## 1994

3rd year of middle school.

I began using <PowerBASIC>. Unlike <QuickBASIC>, it didn't require a heavy runtime library, supported various memory models (QuickBASIC only supported the MEDIUM model), allowed code pointers (QuickBASIC only allowed data pointers), and supported inline assembly (not <MASM> but <TASM>, though there wasn't much difference). Thanks to that I could make efficient <TSR> programs, and I spent a lot of time improving code performance. It's a pity that I had absolutely no concept of the [computational complexity](https://wiki.g15e.com/pages/Computational%20complexity.txt) of algorithms and just did things in a rule-of-thumb way.

By around this time I was using <Hungarian notation> diligently, and I think I had more or less internalized <structured programming>. Since I had never used a language with good support for <namespaces>, I invented and used a convention of putting a three-letter prefix in front of every name. Looking back, that was admirable. Of course I didn't know terms like <Hungarian notation>, structured programming, or namespaces. I also had a weak notion of dependencies, but I only learned later from books that one should avoid <circular dependencies>.

I signed up for the PC telecommunications service <Nownuri>, and I downloaded from the public archives the lists of MS-DOS <interrupt service routines> and BIOS interrupt service routines and studied them(<Ralf Brown's Interrupt List>). It seems like from this point on I had a good environment for studying, but I think I played more games than I studied.

<MS-DOS> supported two kinds of executable files: one was `EXE` and the other was `COM`. `COM` works by simply loading the entire contents directly into memory with no header or anything and then sending the instruction pointer there. The shortest program I ever made (in binary terms) was a 2-byte `COM` code that calls `int 19h`. When executed, the computer reboots quickly, skipping <POST>.

I often played Doom II over the network with "Namomo," the <Nownuri modem-play club>. I even got up to second place. At the time somebody bought expensive equipment with their own money and operated a telephone network that let up to four people connect simultaneously, but the latency was severe, so you couldn't really play an FPS smoothly. Because of that, I became interested in modem and serial cable programming. I learned how to directly connect computer to computer with an RS232 cable, and I would bring my computer to friends' houses to play network games. There was absolutely no latency, so it was very comfortable. I remember that while studying various things at the time, I bought and read a book on the <16550 UART>. Looking back, it's amazing there was a translated book on something like that back then.

The phone bills were high, and I often got scolded by my guardian.

Around this time my <ball mouse> stopped moving properly. I turned the mouse over, took out the trackball, and looked inside, and saw what looked like black bands coated onto the two rollers (the X-axis roller and Y-axis roller), and this coating seemed old and as if it were about to peel off. I thought that was the problem, so I was extremely careful not to let the coating peel. Later I learned that this wasn't old coating at all, but grime stuck to the rollers. Once I removed the grime I had mistaken for coating, it worked well again.

To play <X-Wing>, I went to Sewoon Sangga and bought a <joystick> for 15,000 won. Since I had bought a joystick, I studied how to process joystick input. I remember scanning port addresses because I couldn't find relevant materials at the time.

I pestered an older cousin who worked at a large company and got a pirated copy of <Visual Basic>, but I didn't really do much with it. At the time my cousin told me something like, "Visual Basic is used in companies to make work programs, so it'll probably be boring."

In <October 1994>, the <W3C> was founded by <Tim Berners-Lee>. Of course I had no idea that something called the web existed, and I only learned about it a year later, in 1995.

## 1995

1st year of high school. <Seoul Yongmoon High School>.

For my school club activity I chose the computer club again. The teacher in charge of the computer club told me there was something called <HTML>, and that was how I first learned about the web. That was also the first time I saw an SGML-style markup language, and I remember thinking its syntax was extremely strange. Looking back, there wasn't really any reason to think it so strange. At the time I didn't think <the web> was all that impressive, and I didn't study it deeply. (I think I had come down with the "HTML isn't a language" disease.)

One senior in the club told me about MINIX(<Andrew S. Tanenbaum>). I also studied it briefly, but I didn't find it especially interesting. I was too deeply absorbed in DOS. It was a good opportunity, which is a pity.

I slogged through the "<dragon book>" (the famous introductory compiler text) that my brother, who had become a university student, told me about. The cover showed a knight armed with all kinds of theory fighting the dinosaur of compiler design. Since I hadn't studied the necessary prerequisites like <discrete mathematics> or <formal language theory>, I didn't properly understand it, but I slogged through it anyway. Even so, what I studied then continued to help me steadily afterward. My brother was in the computer engineering department at Inha University and was active in a club called Incom, where <Hwang Byung-sun> was at the time. Hwang Byung-sun was also a co-translator of the dragon book.

I had fun playing <Puyo Puyo>. A friend and I entered a Puyo Puyo tournament together (I remember it being held in Dongdaemun), but we were eliminated in the preliminaries. You had to rack up a certain number of wins to advance to the main tournament, and because there were so many people, the preliminaries were run in a bizarre way where you basically had to cut in line in order to play enough games. We didn't cut in line, and since we couldn't reach the required number of wins, we didn't make it to the finals. Then again, even if we had, I don't think we would have gotten very good results.

I played a lot of Duke Nukem 3D in <Namomo> and sometimes placed first. Looking back now, it was a game full of <misogyny>. Still, because of Doom and Duke Nukem, I got heavily into modding, and learned a lot about how to design programs flexibly. I also became a little more accustomed to reading technical documentation in English. I made custom maps, but because I had no sense of planning, I focused on making them look superficially cool or packing in all kinds of tricks (strange combinations of various triggers and textures, etc.). Naturally, the maps I made were not popular. Making them was fun, but actually playing them was not. That was only natural: I had never studied <game design>.

During one class I was secretly reading documentation about modding Duke Nukem or [Doom](https://wiki.g15e.com/pages/DOOM.txt), and a teacher caught me, but because I was reading technical documents in English, he praised me and allowed me to keep reading. At the time I felt smug, but thinking about it now, it would have been better if he had praised me not for reading English, but for studying proactively.

Even during evening self-study ("evening" aside, every part of that phrase is wrong), I secretly studied computers.

I played <Warcraft: Orcs & Humans> from <Blizzard> (unauthorized copy). It was a game that more or less copied <Dune II> almost exactly and just changed the skin. The balance was off too, so the orcs had a one-sided advantage (or maybe I just wasn't good at finding other strategies). The biggest difference from Dune II was that it supported multiplayer via modem.

## 1996

2nd year of high school.

A place called "Internet Cafe" opened in Hyehwa-dong. It was a café with a neat interior, and it had computers connected to the <web>. There was also a printer, so you could print things. I think they charged by the hour. From then on I started occasionally connecting to the web from home too, via PPP. I used <Netscape Navigator>. At the time <Internet explorer> 3.0 was an ambiguous browser.

I began using <Hitel> by borrowing someone else's ID. I enjoyed reading the evolution-vs-creation discussion board in the Culture Criticism Club (Banmundong). I liked posts by Bulgasari (Mr. Lee Jong-won) and magie (Mr. Ryu Seong-won), but later I thought Bulgasari's writing may have been excessively aggressive and harshly mocking toward opponents. I also imitated this style of argument for a while.

I saw a case where one of the people arguing for creationism changed his position after a long debate and accepted evolution. Cases where someone is actually persuaded in online discussion are rare, and thinking about it, that's quite remarkable.

For the school festival I planned two exhibits, and they got a bit of word-of-mouth attention from nearby schools (proud).

- I made Donam-dong subway station using the <Duke Nukem 3D> map editor, and using its stereo-vision rendering feature I exhibited a 3D experience demo. (I modded the shareware without buying Duke Nukem, so I don't know whether that was copyright infringement or not.)
- I downloaded an entire X-Files website and made it browsable on the school computers via the `file://` protocol as an "Internet experience" exhibit. (This probably was copyright infringement.)

I got conned for the first time in my life. It was a part-time job transcribing paper documents into the computer. They said that to do the job you had to type over 1000 keystrokes per minute, and to do that you needed to buy a special keyboard. In the end it was a scam to sell overpriced keyboards. My uncle came along and listened to the explanation with me, and he got fooled too and ended up buying the keyboard. It had separate consonants for onset and coda, so you typed by pressing several keys at once (for example, to input "an," you would press the onset "ㅇ," the vowel "ㅏ," and the coda "ㄴ" all at once), and there were hotkeys for frequently entered tokens (for example, if you pressed "ㄱㅅㅓㅏ" all at once, it would input "thank you").

Since middle school I had had a <library> I was building by mixing PowerBASIC and inline assembly, and it was lost when my hard disk broke. I was very upset at the time, but on the other hand, I think that loss allowed me to stop doing DOS programming. Everyone else was doing Windows programming, and I felt that I alone was behind the times, doing assembly in DOS. Thinking I should get ahead at least now, I started studying [Java](https://wiki.g15e.com/pages/Java.txt), which was cutting-edge technology at the time. Since I still wasn't used to reading English documents then, I remember reading a Korean tutorial written by people called the "Three Sleepyheads." I searched for it and found that the document is still floating around. The three were Shin Jeong-ho, Jegal Young, and Mr. Cho Guk. (Thank you to all three of you.)

I wasn't originally the type to adopt new technologies quickly, but I think the library-loss incident may have turned me into what people call a "tech hipster." Whether "rapid adoption and broad exploration" is a good strategy probably depends on the situation([Exploration-exploitation dilemma](https://wiki.g15e.com/pages/Exploration-exploitation%20dilemma.txt)), but since humans tend to become more conservative as they age, these days I make an effort to maintain a hipster tendency even deliberately.

## 1997

3rd year of high school.

Reading "Java Quick Reference" (a translation of <Java in a nutshell>), I finally became comfortable with Java. It was the age of JDK 1.1. A book called "Maximum Java" was also useful because it contained many of the things I needed at the time. I think somewhere in the middle there was an example applying the Factory method pattern, but since I hadn't yet read <Design patterns: Elements of reusable object-oriented software>, I didn't really understand it and just passed over it.

I joined a study group formed in the Hitel Java club and studied with older university students. I still occasionally keep in touch with two of them. We mostly studied <GUI> programming such as AWT and Swing. This was before <Java applets> died.

A lot of difficult but interesting writing was posted in Hitel's AI club. I remember slogging through it just because the phrase "computational-representational theory of mind" sounded cool, even though I didn't know what it meant. I think it was around this time that I read <Douglas Hofstadter>'s "Conversations with Einstein's Brain."

PC bangs started springing up here and there.

I worked the night shift at the newly opened "Dokkaebi PC Bang" near Korea University and practically slept at school during the day. It was the very early period when PC bangs were first being introduced, before the systems and culture around them had settled. In the early days there were some businesses with an ambiguous feeling somewhere between a café and an arcade, but Dokkaebi PC Bang was a place seriously specialized for games, with big monitors and so on. They only sold drinks, which made the part-time job easy. Like today, it was charged by time, but unusually, like a billiard hall, you could press a red button and the monitor would turn off and the time would pause. Everyone smoked at their seat, and one of the biggest jobs was replacing ashtrays. Since people still didn't really know what a PC bang was, police officers on night patrol came in several times to check whether it was some sort of sleazy business or illegal gambling den.

Since middle school I had shown absolutely no interest in school classes, which is such a pity. What I particularly regret is not studying mathematics, history, geography, philosophy, ethics, physics, chemistry, and biology diligently.

Around this time existing PC telecommunications service providers seem to have started announcing one or another internet strategy. Various companies made browsers under their own brand names, but I doubt they had implemented rendering engines themselves; I suspect they were Internet Explorer wrappers.

## 1998

Age 20. First year of working life.

Since I hadn't studied at school, of course my CSAT score was terrible, and I couldn't get into university. There was no money anyway, and I wasn't good enough to get a scholarship. It's not that I had some plan; I simply had no thoughts at all.

Sometime in January or February I went to a seminar of the <Hitel> Java club, happened to meet the owner of a small company who had come looking for a developer, and got employed by accident. My salary was 200,000 won. Even by the standards of the time, I think that was a violation of labor law. It was a small web hosting company, and they made homepages for small businesses for around 100,000 to 200,000 won. I was the only employee. I got off work about once a week and practically lived at the company. If it hadn't been for the laundry problem, I wouldn't even have had to go home.

I was able to learn <HTML>, [CSS](https://wiki.g15e.com/pages/Cascading%20Style%20Sheets.txt), <CGI>, <TCP/IP>, and so on, and I did a lot of <Java applet> programming. Because of that I became interested in interface design, and afterward went through <Flash>, RIA, and <Ajax>, eventually becoming able to seriously study <HCI> and <UX design>. Depending on the period, I also became absorbed in server programming, but if I absolutely had to choose one, I think the side closer to the user is a bit more fun.

Until I got that job, I had thought that to study TCP/IP programming you needed to have at least two computers. But once I actually got a job and studied in an environment with multiple computers, I found that wasn't true. I learned that the belief that in order to study something, some prerequisite thing must first be prepared, is very likely false.

I became interested in <UML> and <RUP>. It was probably due to the influence of the Hitel Java club. The first book I read was a translation of <Martin Fowler>'s <UML distilled>. At the time, reading books in English required a dictionary and cost much more mental energy than reading Korean books, so I mostly read translations. I only read English when sitting at a computer and reading web documents. UML and RUP felt at first as though they assumed programming was "business." Terms like "user" or "business logic," for example.

<Windows 98> came out, and it was tightly integrated with <Internet Explorer>. It seems they worked hard to unify the desktop interface with the web browser interface. For example, icons on the desktop or in Explorer opened with a single click, address bars appeared all over the UI, and "Back" buttons were added here and there. For reference, this was also the period when <Netscape Navigator>'s market share was declining, and Microsoft was facing antitrust lawsuits over its "browser bundling" strategy. I too switched from NN to IE starting around the release of IE 4.0. Around this time Netscape released most of its code under an open-source license, and the open-source Mozilla project began.

About six months later I quit that company and got my second job by searching for the company closest to my home. Back then it was really easy to get hired as a programmer. It was a company that did both web hosting and SI, and we mainly used <Classic ASP>. Windows NT 4.0, <IIS> 3.0.

At the time <e-commerce> was starting to become popular, and at this company too they were struggling to create a web-based card payment solution. When I joined, the company had been trying to implement that functionality in [ASP](https://wiki.g15e.com/pages/Active%20Server%20Pages.txt) and was stuck on something. I knew nothing at all about ASP, but because I was familiar with <CGI> and BASIC (Classic ASP supported a BASIC-based scripting language called <VBScript> and a JavaScript-based scripting language called <JScript>, but most people used VBScript), I was able to solve the problem easily, and because of that I got the nickname "genius boy."

One of our main clients was the owner of an online flower shop called "Fragrance Nation." Later I remember they also launched a follow-up lingerie shopping mall called "Underwear Nation." Our company provided web hosting and electronic payment integration (based on an electronic payment service provided by Dacom), among other things.

Thinking about it now, it was a company with a lot of problems.

- The head of the design team had to empty the boss's ashtray every day because she was a woman, and if she didn't, she got scolded by the boss's mother (we called her Director). At the time I did not recognize this as a problem at all.
- One day there was an urgent need to deliver a CD-ROM to a client, so at night we used a hospital ambulance to make the delivery (illegal). The boss's father was the hospital director, the company was in a small building in the hospital's back lot (?), and I think they occasionally used the ambulance for company business. Again, at the time I did not recognize this as a problem at all.
- At the company I played <StarCraft> very intensely with the boss. Some days we even played during work hours while the other employees were working. Only employees who enjoyed StarCraft could enter the boss's "inner circle." I had a faint sense that there was something wrong, but I never said it aloud.

At the time there was briefly a discourse (?) that <VR> was the future, but looking back, the gap between the ideal and the technological reality was far too large. There was something called <VRML>, and a few crude demos floated around, but it did not succeed commercially.

<Kim Eo-jun>'s <Ddanzi Ilbo> was launched. At the time I got deeply into it and read it with great enjoyment. For a very long time afterward I was a fan of Kim Eo-jun, and only came to my senses in 2015.

At the end of the <Kim Young-sam> administration, the "<IMF crisis>" occurred (1997), and right after the launch of the <Kim Dae-jung> government, large-scale investment in the IT industry began as part of a New Deal policy (1998). There must have been all kinds of opportunities at the time, and I regret that I was out on the periphery of the industry (tiny web hosting companies, tiny SI companies, and so on) without any strategy whatsoever.

Even now (as of 2025), when [AI](https://wiki.g15e.com/pages/Artificial%20intelligence.txt) is advancing enormously, maybe it's similar: I still seem to be on the periphery without much strategy. Back then I at least had excuses—I was young, I had few information channels, and so on—but now I don't even have excuses. Is it that I don't care about money? No, that's not it.

## 1999

Age 21. Second year.

I studied <CORBA> hard using the "<alien book>." At the time I was full of dreams that the combination of CORBA and Java applets might complete an intergalactic network. It was still before <Netscape Navigator> collapsed, and <Java applets> were still a technology with potential.

I was dispatched to a certain publishing company and used MS-SQL 6.5 for the first time. At first I didn't even know about PKs, and I also didn't know about <normalization>, so I designed the DB terribly. But in the course of the project, I learned gradually and improved it. The planning was done by Mr. Kim OO, the webmaster of that publisher's IT team, and I did the implementation by myself. In 2000 or so it received the "Korea Internet Award," but only the IT team manager (Lee OO), who had done nothing at the time, appeared in the newspaper. During work hours the manager would often ask me to teach him StarCraft, and sometimes we played together for hours. Then when it was time to leave work, he would ask me, "How much work did you get done?" In other words, stay late.

There were two major incidents.

- Because I didn't know the concept of transactions, there was a case where data consistency was broken.
- I once completely wiped out the order-line table, out of the order table and the order-line table. In the end several employees had to call every customer one by one to confirm what they had ordered.

The nice thing about working at that publisher was that the users of the software I made were in the same building. Since it was a shopping mall site, I also made admin functions, and I could often talk with the person in charge of order processing and customer support. When I improved some inconvenience or added a function they said they needed, they were so delighted. It felt unbelievably good. Up to then, the pleasure I had felt from programming had mostly been something like "the pleasure of puzzle solving," but the pleasure of seeing actual users happy was new and intense.

I spent that year deeply immersed in <evolutionary theory>. [The Selfish Gene](https://wiki.g15e.com/pages/The%20selfish%20gene.txt) influenced me, but the Hitel Banmundong also had a big influence, and above all the greatest influence was chopin's website. chopin (Jung Sung-young) was independently researching topics like <artificial life> and <evolutionary neural networks> at the time and sharing the progress on his homepage. He also occasionally wrote short fiction on themes of <philosophy of mind>, and it was as enjoyable as <The mind's I>.

Using an <evolutionary algorithm>, I clumsily made a program that learned by itself how to play gomoku and ran it on the computer at home. It was gradually improving, but the learning was too slow. Since I had built it recklessly with no theoretical knowledge at all, of course it wasn't going to work, but I vaguely believed that if I just let it run for a long time, something would happen. Even so, I did get to see individuals evolve to the point of using patterns like placing stones in a horizontal line, placing them in a vertical line, placing them diagonally, and blocking the opponent from placing consecutive stones.

During various experiments, there was even a time when I set things up so that the mutation rate itself could change. I observed all populations' mutation rates dropping to 0 and evolution stopping. Thinking about it, that was obvious, but experiencing it had a deep resonance.

I think my interest in <evolutionary theory> and my interest in <HCI> later led, a few years afterward, to an interest in <linguistics> and [evolutionary psychology](https://wiki.g15e.com/pages/Evolutionary%20psychology.txt) while reading books by [Steven Pinker](https://wiki.g15e.com/pages/Steven%20Pinker.txt). For a while I was deeply immersed in evolutionary psychology, but from the late 2000s onward, as I studied [embodied cognition](https://wiki.g15e.com/pages/Embodied%20cognition.txt), my thinking gradually changed.

[Evolutionary psychology](https://wiki.g15e.com/pages/Evolutionary%20psychology.txt), heavily influenced by classical cognitivism, tends to enthusiastically present cases showing low [neuroplasticity](https://wiki.g15e.com/pages/Neuroplasticity.txt) or high influence of <genes>. [Embodied cognition](https://wiki.g15e.com/pages/Embodied%20cognition.txt), by contrast, enthusiastically presents cases showing high neuroplasticity or strong effects of learning. Because of that, I think I was able to acquire a balanced perspective. These days, since the times are what they are, my mind seems to tilt a bit more toward embodied cognition([embodied cognition](https://wiki.g15e.com/pages/Embodied%20cognition.txt)'s research tradition connects well with [artificial neural networks](https://wiki.g15e.com/pages/Artificial%20neural%20network.txt)).

At the time Microsoft's developer site MSDN Online was revamped, and it implemented a technology using ActiveX to dynamically load the document tree on the left side of the site. It was a predecessor of <Ajax>.

For several years already, <Macromedia>'s <Flash> had been hugely popular. At the time there were various limitations in the interfaces you could make with JavaScript or CSS, and Flash occupied that place. But a few years later Macromedia was acquired by <Adobe>, and like other companies acquired by Adobe, it stumbled along and disappeared. The decisive moment, I think, was the event in <2010> when Apple officially declared it would not support Flash on the iPhone ([Thoughts on Flash](https://web.archive.org/web/20170615060422/https://www.apple.com/hotnews/thoughts-on-flash/)).

Short pieces of content made in Flash became popular. Kind of like web dramas today. If you had ideas and talent, anyone could make "content," release it on the internet, and make their talent widely known. There was not only story-based content but also all kinds of experiments (design experiments, interaction experiments, etc.).

Among the events of 1999 that I didn't know about or didn't care about at the time, but which now seem important:

- <Stanford University> released the ontology editor <Protégé>
- Construction of <The Gene Ontology>

## 2000

Age 22. Third year.

At company H, I made a "fireworks simulator" to use in sales for fireworks displays. I used AWT/Swing. I didn't make or use a physics engine; I just tried to make it look similar "on the surface." Looking at it now, it was at a level even below the particle simulations in <The Nature of Code>.

I was also able to go to a gunpowder factory in Incheon and talk with an actual expert who made fireworks. I learned that the United States monitors Korea's gunpowder usage, and that even the gunpowder used to manufacture fireworks has to be reported. Whenever I encounter books about [agile methodologies](https://wiki.g15e.com/pages/Agile%20methodology.txt) that emphasize conversation with actual customers, I often think of this period.

I was dispatched to work in H company's building in Jongno, and the H company department head, who was dissatisfied that I was often late, called in both me and the assistant manager from H company who was managing me, made us stand there, verbally abused the assistant manager, and physically assaulted him. Inside that building, an incredible number of people smoked.

I also worked on a project to encrypt and decrypt Ministry of National Defense materials. It wasn't first-class classified, but I remember it as second-class classified. Since the work had to be done in an "isolated space," the company put up temporary walls, covered the windows with blackout curtains, and insisted that counted as isolated. The whole time I was working, someone from the Ministry of National Defense sat beside me monitoring (?) me, but he slept all the time. When work ended, they would remove the hard disk and take it away, then bring it back the next day. At the time there was an introductory <cryptography> book in Korean, so I hurriedly studied it and implemented things, and there must certainly have been many problems. It was a project I should never have been doing in the first place. But thanks to it I was able to study the major concepts of cryptography. I couldn't understand individual algorithms deeply, though, because I didn't know <number theory>. Even now I don't know what the numbers in the DES S-box mean.

I made an <FTP> server for a service by some large corporation whose concept was to make it easy for anyone to create a homepage. They advertised it loudly (though of course the term FTP did not appear in the ads). It was the first time I made a program while reading RFCs(<RFC 959>). Only after making an FTP server did I really realize how many clients there are that do not comply with the standard. Thanks to this project I became accustomed to reading RFCs and gained experience with network programming, thread control, and so on. However, in JDK 1.1, non-blocking I/O had not yet been added (`nio` was added in JDK 1.4), so there were many constraints on how many simultaneous connections one server could handle.

Because the server in this project was Windows, instead of the standard JDK we used a mongrel called <Visual J++>, which <Microsoft> had released with the aim of wrecking the [Java](https://wiki.g15e.com/pages/Java.txt) platform (the "<Embrace, extend, and extinguish>" strategy). It was the work of <Anders Hejlsberg>, who also developed [TypeScript](https://wiki.g15e.com/pages/TypeScript.txt) and <.NET>. VJ++ was actually quite good, especially its GUI framework, "Windows Foundation Classes" (also Hejlsberg's work). WFC would soon evolve through "Next Generation Windows Services" into the WinForm framework of <.NET>. Besides that, things like <COM> support and good integration with the Windows environment were nice.

I went to install the server in that company's building near Yongsan, and when they heard that I had made the whole thing by myself, they offered to recruit me. I didn't move.

By this period I was able to read technical documents in English without difficulty. But it did not occur to me to look up and read papers, and for writings outside technology (philosophy, history, etc.) it took much longer before I could read them without a dictionary. It was two years later, while studying in Mr. <Kim Chang-jun>'s <Renaissance Club>, that I began reading papers in English.

At the time a P2P-based music download program called <Soribada> was popular (it was illegal). I too got hooked on the idea of <P2P> and in my spare time at work I was making a P2P file-sharing program, but I never managed to release it. For reference, America's <Napster> (a P2P music-sharing program) and <SETI@Home> (a Berkeley-developed P2P extraterrestrial signal analysis program) were both released in 1999. Apparently P2P was globally popular at the time. <Sun Microsystems>, which owned [Java](https://wiki.g15e.com/pages/Java.txt), also proposed a Java-based P2P framework called "JXTA" the following year, in 2001, but I remember it not being widely adopted. Looking it up again recently, I found out it was shut down in 2010.

At the time I remember agonizing over how to solve the peer discovery problem better than others, but not finding any particularly good method.

The short film <Dachimawa Lee>, directed by <Ryoo Seung-wan> and starring <Im Won-hee>, was released on the internet. <Ryoo Seung-bum> appears in it in a supporting role named "Washington" (the villain role). I remember that making a film and releasing it on the internet felt like a fresh attempt at the time. It was the era when the internet was beginning to devour the world.