|Site Info:||Favorites:||C++:||Fun:||Newer Stuff:||Old Fun:||Old Tech:||Old Other:|
|News||Links||MinGW Distro||Image Hacking||SF Reviews||Origami Polyhedra||bwtzip||Archived News|
|News: 2009||Webcomics||Modern C++||Paper Airplane||Random Work||Quotations|
|News: 2008||Rating System||Stephan T. Lavavej||Deus Ex||PNG||Book Reviews|
|News: 2006||Foundation||Mersenne Primes||Wallpaper|
|Jump To:||nuwen.net:||Education:||My History:||My Views:|
|The Most Significant Bit||About This Page||Primary||Family||Atheism|
|How To Contact Me||Site History||Secondary||Birth Defect||Politics|
|Computer Science||What I Want|
I am Stephan T. Lavavej; my name is pronounced "Steh-fin Lah-wah-wade". nuwen.net is my personal website; I pronounce it "noo-when".
What's your name?
What's your real name, John?
My real name is STL. I use my initials because they're short and don't suffer from a banana problem. Despite a certain happy coincidence, I was using my initials long before I ever heard of the Standard Template Library.
I was born in Illinois 29 years ago and moved to Colorado almost immediately afterwards. I received my degree of Bachelor Of Science With Honor in Computer Science from the California Institute Of Technology in 2004.
I'm a Senior Software Development Engineer at Microsoft, maintaining Visual Studio's C++ Standard Library implementation. I live in Redmond, Washington.
My profession happens to be that of a software engineer, but that's not who I really am. I'm a conceptual architect (or a "concept machine" in the words of others), and nuwen.net is a record of what I've designed and built.
Also, I like cats.
|Stephan And Peppermint, October 1992||Stephan And Peppermint, September 2003|
E-mail me at email@example.com and I will reply within a day or two. (No, really! For quite some time, I had a backlog of E-mail that was up to two years old, but I finally got around to taking care of it.)
I don't use instant messaging, as it is inherently interruptive and synchronous, although not as much as the telephone. E-mail allows me to put an arbitrary amount of thought into composing my replies.
"There is a building. Inside this building, there is a level where no elevator can go and no stair can reach. This level is filled with doors. These doors lead to many places. Hidden places. But one door is special. One door leads to the source" - The Keymaker, The Matrix Reloaded
On my website, one page is special - this page. My other pages describe my interests. On this page, I attempt to describe myself, my history, and my point of view as accurately as possible.
My website is neither a journal nor a blog. It predates the popularity of both of those Internet phenomena. Journals are especially vile blogs where boring people talk about themselves endlessly. I don't consider who I am to be interesting in and of itself, so I don't talk about myself on my other pages that much. Even when blogs cover interesting topics, they're presented in a confusing stream of consciousness. Chronological organization is not navigable. Instead of chronological organization, which is really no organization at all, I structure each page and the website itself so that they can be efficiently browsed.
My website is also unlike Wikipedia, as I am one person and I do not have to follow their ridiculous Neutral Point Of View policy. The NPOV policy is probably the only way to get large numbers of people to work on something and end up with a vaguely coherent product, but it doesn't apply to a single person. On my website, I present my opinions freely. Of course, while my Modern C++ page is an appropriate place for me to rant about the evils of archaic C++, it isn't an appropriate place for me to rant about the evils of the Republican Party.
On this page, I talk about myself to make the nature of my other pages clearer to you, my happy readers, who are privileged to live in Space. Understanding my history and this site's history should provide the chronological context that I have intentionally not provided elsewhere for reasons of clarity. My website is closest in nature to a book; when reading a book, you want to read only the final draft, but when analyzing a book, you want all of the drafts. Finally, for reasons of completeness, I describe views of mine that are relevant to understanding the other things that I've written but don't necessarily belong in those other places.
John Walker's fourmilab.ch served as the inspiration for nuwen.net. My site records the things I've done, explains the things I've learned, and stores the things I've built. I put a lot of time and energy into those things, and I magnify them by putting a lot of time and energy into working on this site.
It's probably impossible to understand nuwen.net's history independently from my own. This website dates way the hell back to 1997 or 1998, I think, when I was a high school sophomore. It was hosted on AOL - these were the bad old days, mind you - and was automatically generated by a tool called Personal Publisher II. Needless to say, it was absolutely horrible, as it contained virtually no interesting content whatsoever. Its design was also craptacular - not only did it have complex background images, it had music playing on every page. I committed many great acts of evil.
When I graduated from high school, I realized that my website was an unsalvageable mess. I began the Great Reorganization on June 5, 2000, which consisted of deleting everything except for my quotations page. I also stopped using Personal Publisher II. I took the HTML that it generated and started modifying it by hand, throwing away unnecessary things. In this manner, I slowly learned how to write HTML. In fact, I am entirely self-taught; I have never even read a book about it. (This is not a celebration of ignorance - by now, I know a whole lot about HTML. Nor is it an admonition to avoid books, even books about HTML. I shouldn't have to point out how much I love books. It's simply a historical fact that I learned this stuff informally.)
When I arrived at Caltech, I was given an account with their Information Technology Services (ITS) cluster. By this time I had begun using my real name, so my account name was stl. (It still is, everywhere I go.) I wrote a lot of pages when I was at Caltech, and soon rigged it so that my website, hosted on my ITS account, was accessible at stl.caltech.edu. I thought that this was neat.
Eventually, I had so much content that I ran into the space limitations of my account. I had to span my website over all three of my Caltech accounts (ITS, UGCS, and CS). In May 2003, I became competent enough with GNU/Linux to create my own server. I used my old PIII-600 personal computer and began hosting my website on it. This was a great improvement for two reasons. First, it freed me from all space limitations and allowed me to deal with a single account again. Second, it gave me complete control over the webserver. This control allowed me to begin using Server Side Includes (SSI) aggressively.
Around this time, I began learning a lot more about writing HTML. I started to write pages in XHTML 1.1 and CSS 2, with liberal use of SSI. SSI allowed me to solve the worst problem with my website, which had plagued me since before the Great Reorganization. My website's structure has always been that of a complete graph; every page uses its site directory to link to every other page. As a result, adding a new page required modifying every existing page, which was quite tedious with over a dozen pages. Now, every page includes its header and footer through SSI, so modifications to the site directory can be performed in O(1) time instead of O(N) time.
When I began hosting my website on my own server, I still referred to it as stl.caltech.edu, but made nuwen.net a synonym for it. When I graduated, nuwen.net became its only name, and I moved its hosting over to Rackspace. That was a tricky move; to ensure continuity, I actually left my PIII-600 at Caltech with a graduate student friend, and it continued to operate between June 2004 (when I graduated) and November 2004 (when Rackspace took over).
That brings us to the present day: nuwen.net is hosted on my managed server at Rackspace. I write it completely by hand in Metapad. I avoid all things dynamic, so my website exists as reasonably plain XHTML 1.1, styled with some CSS 2. My unique machinery is built with SSI. For example, one of my favorite features is the automatic coloring of tables. For readability, I color my tables with a pattern of eight colors. One such table is the site directory itself, which went through several revisions before reaching its current state. The body of an autocolored table has alternating light and dark rows. It also has alternating desaturated and saturated columns. The first row usually contains column headers, so it is colored blue. Similarly, the first column is usually important, so it is colored greenish. The coloring itself is accomplished through CSS 2, so I can easily change the color scheme or override it for certain types of tables. However, tagging the table cells in the right pattern is difficult. Tagging them by hand makes the table fiendishly tedious to edit, since adding a single row or column causes the rest of the rows or columns to be recolored. To solve this problem, I use an SSI trick that I invented to stamp out each table cell with the proper tag. This allows me to edit autocolored tables in O(1) time.
Once upon a time, I was able to work on my website simply by keeping a local copy, editing it, and viewing the result in my web browser immediately. This method of working is so clean and simple; I consider it far superior to using any sort of integrated program. Of course, this isn't possible with a website that uses SSI, since SSI must be rendered by a webserver. Now, I run Apache on my personal computer, which allows me to use the same method of working that I've always used. When I finish a site update, I use one click to bonk a shortcut that executes WinSCP with a synchronization script. This makes the remote copy of nuwen.net match my local copy by uploading only those files which have changed.
The design and evolution of nuwen.net illustrates rather well how I do things. I reject unnecessary complexity, such as dynamic websites, scripting languages, and WYSIWYG editors. I focus on usability, readability, and clarity, and I reject imitating others who don't know what they're doing or who have different focuses than I do. (For example, I will never imitate the unreadably narrow columns of text that blogs seem to prefer.) Usability refers to the mechanics of a website, such as how easy it is to navigate between pages. Readability, a part of usability, refers to how easy it is to read the text of a website. This is an extremely important thing, and so many people get it so wrong for reasons that are so stupid. I use the sans-serif font Verdana, as serif fonts are harder to read on computer monitors. I also tune the spacing between lines so that they are readable - many websites use either too little spacing (in which case their text runs together into a visual mess) or too much spacing (in which case they look content-free; blogs do this often). I use dark text on a light, low-frequency background. As I don't crunch my text into ridiculously narrow columns, my website scales properly to high resolutions. Most importantly, I reject the use of text that cannot be resized. A common crime against humanity is to use measurements of pixels, which do not scale when text is resized. Other crimes include mixing images with text in such a way that things break when the text is too large, or simply specifying a ridiculously small size for text in the first place. These practices are hateful to seniors and other people with limited vision. The text on my website can be resized without breaking anything. That's the way it should fucking be, shouldn't it?
I attended Skyview Elementary School (K-6) and Northeast Middle School (7-8), public schools in Colorado. I skipped 2nd grade and continued to excel academically. This was especially true for math; even after skipping a whole grade, I remained one grade advanced in math. As a result, I took algebra in 7th grade. In 8th grade, I took geometry at a nearby high school (not Thornton High School).
My primary schools changed their compositions as I went through them. As I finished 6th grade at Skyview, they became a K-5 school, while Northeast went from being a 7-9 school to being a 6-8 school. Therefore, I spent only two years in middle school.
Nothing about my primary education particularly stands out; the American public school system is simply not built to cater to individuals who are three standard deviations from the mean. The best thing that I can say about Skyview and Northeast is that they didn't crush the love of learning out of me. My truly important education happened at home. What set me on the path that I follow today is that my parents read to me when I was young. This has defined my existence.
I started to learn how to read when I was three years old. At the same time, my mother taught me how to count with coins. (Coins are a good mechanism for this sort of thing. Different types of coins have different values, unlike simple objects such as blocks. The damned arbitrary nature of American coinage is an advantage here - a dime is worth two nickels, even though a dime is significantly smaller than a nickel. Abstract reasoning is my most powerful skill.) When I was five years old, I could read the newspaper - as I understand it, this is when most children are taught how to read simple words.
Furthermore, my parents bought me books about science, mathematics, and technology. Although they were aimed at a young audience and explained things simply, they didn't unnecessarily dilute their subjects. They included an illustrated dictionary of physics and chemistry, a book on lasers, and The Changing Face Of Nuclear Warfare. Having been able to read and having known about science for as long as I can remember are things that I take for granted, but I now realize that my education was very unusual.
I attended Thornton High School (9-12), a public school in Colorado. It offered the International Baccalaureate (IB) Diploma Program. At the end of 8th grade, I applied to and was accepted into this program. That was a very important event. Inside an otherwise unremarkable public high school, I gained access to an internationally standardized program that offered a unified and rigorous education. (Also, several of the teachers who taught my IB classes were very skilled.)
IB is an experience that is difficult to understand if you've never been through it. There isn't really anything else like it. It's what the Advanced Placement Program would like to be, but isn't. The IB Diploma Program itself is taken during the junior and senior years of high school. To prepare students for it, Thornton High required them to take a nonstandardized Pre-IB program during their freshman and sophomore years. This consisted of somewhat more intense classes than the ones taken by general population freshmen and sophomores. In effect, I completed a normal high school education in two years.
Because I was advanced in math by one year, I started the IB Diploma Program's Mathematical Methods course in my sophomore year and finished it in my junior year. The system of IB courses is somewhat complicated. IB courses are either Standard Level (SL) or Higher Level (HL). SL courses are said to take one year, while HL courses are said to take two years. In practice, that's not how it always works, especially when a school offers a Pre-IB program. Adding to the complexity, there are several different IB math courses. The least advanced one is Mathematical Studies (which was offered at Thornton High). Mathematical Methods is a more advanced version of Mathematical Studies. Both Math Studies and Math Methods are considered SL courses, although both of them took two years at Thornton High.
At the end of each IB course, an internationally standardized test is administered. The results from all of the tests which were taken are used to compute the final IB Diploma score. At the end of my junior year, I took the Math Methods test. At the end of my senior year, I took Mathematics HL as an extra test (one which does not count towards the IB Diploma); it was not ordinarily offered at Thornton High. There is also a Further Mathematics SL test, which is the most advanced; if taken, the course for it is meant to be taught simultaneously with Mathematics HL. However, I was not aware of its existence at the time and I did not take it. (In fact, it may have been introduced after I graduated from high school - I don't know.)
These are the classes (and, by extension, the tests) that I took:
(Although I took the SL test, I studied Russian for four years.) The "chosen topics" were chosen by the IB coordinator and teachers for the entire program at my school. As IB Physics wasn't offered at Thornton High, I took IB Chemistry HL and AP Physics C: Mechanics instead. I wrote my Extended Essay in Mathematics, becoming the first person to do that at Thornton High.
Modulo plus/minus, I got an A in every class that I took at Thornton High. (My unweighted GPA was 4.0. I don't remember my weighted GPA.) At graduation, I was an IB valedictorian along with my friend Aaron Lee. (Thornton High separated the IB and non-IB valedictorians because IB classes were weighted.) Actually, Aaron and I took essentially the same classes during those four years. There were trivial differences: I took slightly fewer non-IB classes than he did, because I had no interest in music and I had already taken geometry. As a result, my weighted GPA was very slightly higher than his even though he did more work than I did. This annoyed him and pleased me endlessly.
I did very well at standardized testing. (I didn't study electromagnetism formally until Caltech Ph 1b.) However, only two of these scores matter to me. Doing well on the SAT is like arm wrestling a 3rd grader: even if you win, eh.
The first score that matters is my IB Diploma score. It is computed as the sum of the scores on the six tests taken and 3 possible bonus points. Each test is scored from 1 to 7 inclusive; 4 is average, 5 is good, and 6 is excellent. The bonus points are awarded as a function of the scores on the Extended Essay and the Theory Of Knowledge course. The conditions which must be met to receive the IB Diploma are complex; the minimum score required is 24. Before I graduated, the highest score that anyone at Thornton High had ever achieved was 36. I got a score of 43, 2 points away from the maximum score of 45. I took the IB program very seriously and worked very hard for four years - that's why I'm proud of my score.
Skipping ahead to my Caltech years, the second score that matters is my GRE General Verbal score. Although I got 770 out of 800, that was in the 99th percentile for that test. I consider myself to be a good judge of standardized test difficulty, and let me tell you, that test was next level hard. At the time that I took it, it was an adaptive test administered on a computer. It threw some incredibly difficult vocabulary at me. I even got a couple of questions correct because I had read so much science fiction at Caltech; for example, I knew the meaning of the word "truculent" only because I had seen it in A Deepness In The Sky by Vernor Vinge. I still don't understand why the verbal test was so hard and the math test was so easy, considering that the GRE is used for graduate school admissions. (I maxed out the math test, but even that was only 92nd percentile.)
These standardized tests are always changing, so it wouldn't be very useful to relate my specific experiences to current students, even if I remembered the test formats well (which I don't). Except for the electromagnetic portion of the SAT II Physics test, which I prepared for by flipping through an EM book before the test, and of course the IB tests, which I prepared for extensively, I never studied for standardized tests beyond taking the example tests provided in the booklets. Therefore, I have nothing useful to recommend about test preparation either. I do have one recommendation for high school students which remains valid: take the SAT and ACT early and often. Taking them once a year starting in freshman year is excellent. Don't wait until junior or senior year! Some portion of your score is attributable simply to your familiarity with the structure of the test and the procedure by which it is administered.
It is a mistake to recount history in such a way that earlier events are said to foreshadow later events, as if the later events were "meant to happen". A given person has intentions and can perform actions with a desired result in mind. History itself has no intentions; it is guided by only causality and randomness.
I did not intend to go to the California Institute Of Technology (informally called Caltech, without BiCapitalization). When I was in high school, I wanted to go to MIT. I applied to MIT, Caltech, Stanford, and the University Of Colorado At Boulder. I was accepted everywhere except MIT. (I don't know why, but I suspect that they found my extracurricular activities to be anemic, which they were.) Given that, Caltech was the obvious choice for me. I selected it without ever having visited it.
At the time that I applied to Caltech, I didn't fully understand how selective it was. Caltech is an extremely small university; it has approximately 900 undergraduates and 1200 graduates. For comparison, when I graduated from Thornton High, it had over 2000 students. I don't know why Caltech accepted me, but I'm glad that they did. I'm not sure that I would have enjoyed MIT. Caltech is different from other universities. There are three terms in each Caltech academic year: fall, winter, and spring. All classes taken in the first two terms of freshman year are graded pass/fail. Also, virtually all quizzes, midterms, and finals at Caltech are take-home and self-timed. Collaboration on homework problem sets is encouraged in virtually all classes, with the caveat that you have to write up the solutions yourself and understand them. Sometimes, collaboration is essential; in CS/Ma 6ab, Introduction To Discrete Mathematics, I struggled on a few of the sets because I didn't know enough of the other people taking the course. Of course, even given collaboration, some sets are insanely hard or long. Ma 2b Analytic, Linear Algebra, Statistics, And Differential Equations, which was the last core math class that I had to take, had one set that took me nine hours of continuous work to finish.
My advancement in math came to a screeching halt when I entered Caltech. At Caltech, quantum mechanics is a required course; graduating without taking QM is impossible. From the very first hour of class that I attended (Ma 1a Analytic, Probability And Calculus Of One And Several Variables, at 10AM in Baxter Lecture Hall), Caltech hit me hard and fast with equations. Obviously, I was reasonably competent at dealing with difficult mathematics; otherwise, I wouldn't have been able to graduate. However, I quickly discovered the limits of my competence. For the first time, other people had mad skills that exceeded my own. (In high school, Aaron and I were equals. We were fiercely competitive, but in the sense of trying to outdo each other's high scores at a game, not in the sense of trying to pound each other into submission. Aaron was always cooler than I was, though.) My intense work in high school turned out to be only average preparation for Caltech. Had I been any less diligent in IB, I probably could not have succeeded at Caltech.
When I started Caltech, I had no idea what I wanted to do. My major was initially declared as Chemical Engineering, of all things. I had always wanted to be a scientist of some sort or another, but I never had a specific preference. I was interested in many fields of science, mathematics, and technology. When the time came for me to actually choose a major, I had narrowed it down to four fields: math, physics, chemistry, and computer science. I knew that math, theoretical physics, and theoretical chemistry all involved difficult mathematics. When I discovered that my competence with equations was moderate, I ruled those fields out. Math was the first to go when I found that its version of rigor burned me like a flamethrower. Experimental physics and experimental chemistry (as well as chemical engineering) involved building and manipulating physical objects, something I was never very interested in and held no delusions of competence about. Scientists have been my heroes during my entire life. Yet, for all my love of understanding the basic structure and behavior of our universe, early at Caltech I realized that I just wasn't really good at understanding the details, much less discovering new ones.
Only after encountering the limits of my intelligence did I understand its strengths. To state it mildly, I'm really fucking good at understanding and manipulating concepts (as MC Hawking put it, "The gate is down and the lights are flashing but there ain't no train coming"). Discovering my mad skills allowed me to select my major. I like details to a finite extent, but past that, they bore or confuse me. I'm still interested in all of the fields of science, mathematics, and technology that fascinated me during high school, as well as other fields that I discovered later (e.g. petroleum geology). But they're not the thing that I do. Computer science became my thing.
At the time, Caltech didn't have an actual CS major for undergraduates. Instead, I had to declare my major as Engineering And Applied Science (E&AS) and simply take a lot of CS courses. Fortunately, by the end of my junior year, Caltech had developed an undergraduate CS major as well as transitionary requirements for students who had started Caltech before the major was developed. I switched to this new major as soon as possible. (Unfortunately, I had already taken ACM 95ab, the first two terms of a grueling three-term complex analysis course required for the E&AS major. It had nothing whatsoever to do with CS and was not required for the new CS major. I escaped having to take ACM 95c, and was able to use ACM 95ab to satisfy some miscellaneous requirements, but I had already went through hell.)
Skipping back to the third term of my freshman year when I decided to major in CS (but had to declare it as E&AS), that left one more decision to make. I had to choose whether to focus on theoretical computer science or to focus on software engineering. Initially, theoretical computer science had a greater appeal to me because it seemed to involve fewer grubby details. Algorithms, complexity classes, computability, and so forth fascinated me. Becoming a code monkey and grinding out code day after day didn't really interest me. It didn't seem to involve enough creativity for my liking, and grubby details appeared to be plentiful.
My initial impression of software engineering was wrong. It involves tons of creativity, and although it involves some grubby details too, most of them aren't essential. This is the key insight that I gained in the middle of my sophomore year. Many complex things in software engineering aren't inherently that complex - it's just that they've been made more complicated than they have to be, either because of historical limitations (e.g. hardware wasn't powerful enough, or we didn't know any better) or because of stupid people with no vision. And bozos abound.
After I graduated from high school, I began teaching myself how to program in C. Eventually, I successfully wrote a very small program that calculated SHA-1 hashes. During my freshman-sophomore summer, I attempted to write a C program that used dynamic memory management (to recompress PNG files). This attempt failed miserably; the program never came close to working correctly. It collapsed under the weight of its own complexity.
Caltech's CS courses were taught with many different programming languages, except C and C++. The university was simply not interested in teaching software engineering. However, during my sophomore year, I took the C and C++ "tracks" of CS 11, Programming Workshop. Although each track of this course consisted of only 3 units (for comparison, a normal course consists of 9 units, which is theoretically the number of hours spent each week on lecture, lab, and homework), these tracks of CS 11 were probably the most important classes that I took at Caltech. The C track gave me my first formal introduction to C and helped me to sharpen up my skills. For a long time, I had avoided C++ because I believed that it was unnecessarily complex for programs of small to moderate size. When I took the C++ track of CS 11, I quickly realized that I had been wrong. I saw how C++ gave me the power to abstract away unnecessary complexity, and as a result I learned the language extremely fast.
CS 11 served as an introduction to modern C++. I began voraciously learning about modern C++ from there. Of course, I had a little problem: Caltech didn't teach what I wanted to learn. I had to teach myself everything outside of class. During my junior and especially senior years, I was burnt out. I still had to graduate, but I didn't want to take any more classes than absolutely necessary. This is how I went from taking 51 units during the first term of my freshman year to taking 17 units during the last term of my senior year. (A normal load consists of approximately 45 to 48 units of courses.)
In the end, I managed to graduate with a GPA of 3.6. Looking back on it, I liked Caltech. It gave me a strong education in theoretical computer science, which is highly relevant to software engineering. It also gave me the freedom to learn modern C++ by myself. Other universities may teach more software engineering, but they don't necessarily teach good software engineering. Remember, bozos abound, and so does Java.
One useful thing that I learned at Caltech was Scheme. Scheme is a functional programming language, which is to say that it's an oddball programming language with critical flaws and fanatical adherents. Not only did I learn Scheme during the first two terms of my freshman year, I acted as a teaching assistant for CS 1, the introductory CS course at Caltech, during my sophomore, junior, and senior years. As a result, I learned far more about Scheme than I ever would otherwise. This experience with Scheme has influenced how I write modern C++. Scheme contains certain constructs that deliciously simplify the process of expressing certain other things, and it is possible to replicate these constructs in modern C++. When I realized this, I went from loathing Scheme to having a grudging respect for certain parts of it. I also came to understand its critical flaws, which gave me an improved understanding of modern C++'s strengths. (One of Scheme's critical flaws is that it cannot elegantly express modifiable state.)
When I was at Caltech, it seemed like it would never end. And then, thwam - I graduated. Reviewing the courses that I took at Caltech wouldn't be very useful to current or prospective students, because the courses have changed so much since I took them. I will mention a few random memories from my time at Caltech:
|The Lavavej Family, August 2005|
I was born on June 2, 1983 (an Avogadro Day) in Illinois. Within a few days I moved to Thornton, Colorado (a suburb of Denver) because my father's company had transferred him there. As a result, I grew up far away from my extended family and I rarely visited them.
My mother, Mary, was an English teacher in Illinois. She's American, and of Polish ancestry if you trace it back far enough. My father, Thavatchai (pronounced "Ta-watch-eye"), worked for a manufacturer of X-ray equipment. He was born in Thailand and came to the United States for college, where he met my mother. For a long time my father was a resident alien, but he eventually became a naturalized citizen. Although my father speaks English, Thai, and Cantonese, I speak only English.
I describe myself as an American and I consider ancestry to be irrelevant. It is, however, responsible for my unusual last name, which is Thai and means "family of the doctor". When my paternal grandparents moved from China to Thailand, they invented this last name and gave it to their children. My grandparents thought that Lavavej, instead of Loh, would allow their children to fit in better at school.
My middle name, Thomas, is derived from my father's name. Informally, he goes by Tom, and when it came time to give me a middle name, he insisted that Thomas and not Thavatchai be put on my birth certificate. Therefore, while my full name is reasonably complicated, it could have been even more so. Although I don't permit the mangling of my first name, I do prefer to crunch it all down to STL.
I have one sibling: my sister Kristen, who is slightly less than two years younger than I am. She's into graphic design. Her personality and interests are very different from mine, although we have certain commonalities. For example, we both love Deus Ex and Celtic knots.
My extended family is relatively large, as my mother has seven siblings and my father has a few. I have something like over twenty cousins. If I were to meet members of my extended family on the street, it would be unlikely that I could recognize more than half a dozen of them. I visited my paternal grandparents in Thailand when I was 2 years old, and I don't remember my maternal grandmother as she died from a noninheritable brain tumor when I was very young. I've seen my maternal grandfather, who worked as a draftsman, several times.
Many people gain great satisfaction from being part of a group, especially when that group is a family. With an extended family scattered across the world and a small immediate family, I've never felt like part of such a group. Although my family gets along together much better than most other families, I gain the greatest satisfaction from things such as books and computers. My parents introduced me to these things at a very early age, for which I am grateful to them. The environment which my parents provided to me while growing up was relatively free of influences from family, culture, religion, and even politics. My extended family was far away and my parents never pressured me to follow any specific direction. (They didn't even pressure me into doing well at school. They were actively interested in my academic success, and encouraged and assisted me at all times, but never made me feel that poor performance would disappoint them. Conversely, my success has never surprised them. Other children might have been rewarded with trips to the ice cream parlor for bringing home a report card with straight A's, but that was a bog standard performance at the Lavavej household. They let me buy plenty of books and the occasional computer game, so I was happy.) My sister went to the same primary and secondary schools that I did, and was sometimes frustrated to grow up in my academic shadow, but I did not experience those sibling order effects. Having grown up with a Caucasian mother and an Asian father, I've never considered myself to be part of mainstream American culture, nor have I ever known very much about Thai culture. (I probably have a greater affinity to the Russian culture.) Additionally, my parents are atheists and political moderates. In my unusual childhood, I was far more influenced by the books that I read.
Some, but not all, of the people who meet me in person notice that there's something unusual about my eyes. I was born with a birth defect, unilateral microphthalmia (pronounced "mik-rop-thal-me-uh"). It is a very rare disorder, and I have never met anyone else who has it.
Essentially, my microphthalmic right eye is significantly smaller than my normal left eye and is not fully formed. In fact, my right eye's malformed iris is blue, as opposed to my left eye's brown iris. In public, I wear a scleral shell, which is an ocular prosthesis loosely referred to as an artificial eye. It's not a "glass eye" because it's made of plastic - polishing or altering glass is difficult. My scleral shell resembles an extremely thick hard contact lens, or a marble with a large chunk missing. It's far from spherical, as the back has to accomodate my microphthalmic right eye, and the front is shaped to keep my eyelid open (otherwise, I look half sleepy). When I'm not wearing the prosthesis, my right eye remains closed - it's very difficult for eyelids to open without the physical bulk of an eye to keep them open. Conversely, my right eye doesn't blink without conscious effort when the prosthesis is in place.
The scleral shell is extremely detailed, being custom-made to simulate my left eye. The only noticeable difference is that the prosthesis never moves, which makes good photographs of me rare. Unfortunately, it is made of plastic, and the sensitive surfaces of the eye do not like being in contact with hard artificial material for hours on end. This is a lot like how people are irritated by contact lenses, although I have an additional problem - the surface of the shell dries out, unlike a real eye which blinks often to wet and clean itself. As a result, wearing the prosthesis becomes increasingly uncomfortable as each hour passes. Unlike people who have entirely lost eyes and have permanent orbital implants, my scleral shell is trivially removable. I clean it nightly with standard contact lens equipment (enzymes and saline, as well as nonstandard baby shampoo). When I'm at home, I never wear my prosthesis.
My right eye is completely blind - no signal from it has ever reached my brain. As a result, my vision is entirely monocular, with a restricted field of view and no stereoscopic depth perception. However, as I have always lived with this, it is entirely normal for me. My entire visual cortex is dedicated to processing input from my left eye. Therefore, while you can experience a restricted field of view and a lack of stereoscopic depth perception by closing your right eye, your experience will not be the same as mine.
Of course, if medical science ever perfects functional artificial eyes and their attachment to optic nerves, I'll still have monocular vision. My brain will never be able to accept binocular input. That is, barring some revolutionary advancement in recreating brain plasticity, or mind uploading coupled with the ability to make invasive alterations. I expect that we'll have functional artificial eyes at some point. While massively altering the brain (in vivo or in silico) is in principle possible - nothing in the laws of physics prevents it - I don't think that humanity will gain that ability before the technological singularity.
All things considered, unilateral microphthalmia is one of the least disruptive disabilities to have. My appearance is almost normal when I'm wearing my prosthesis (and I don't care too much about my appearance to begin with). The hassle of dealing with the scleral shell is minor. The absence of stereoscopic depth perception is remarkably irrelevant - I can navigate three-dimensional space perfectly fine, and I never found driving a car to be difficult (back in Colorado, before I let my driver's license expire, I drove the family's Buick LeSabre occasionally). I hate sports, so no problem there. The most inconvenient thing is my narrower than normal field of view - it gets in the way of using as many monitors as I would otherwise like.
In the long term, my birth defect is a significant badness, because it means that I have no backup. As a result, I see an ophthalmologist frequently, not only to continue treating my right eye's allergic reaction to my prosthesis, but also to ensure that my left eye remains normal. Aside from high myopia and slight astigmatism, I am an intraocular pressure suspect for glaucoma. My visual field remains normal, but I undergo frequent testing. (Ophthalmologists are the big guns, medical doctors who specialize in treating diseases of the eye. I've never even bothered with optometrists.)
DNA fucking sucks. My birth defect appears to be sporadic (a random error) rather than genetic (an inherited error) or environmental (an error caused by some specific insult before I was born), because it affects only one eye. Microphthalmia often occurs along with a host of other nasty defects, both physical and mental. I was fortunate to have a unilateral case with no other defects.
My birth defect is not important to who I am. There's no one to blame, no axe to grind, and no way to fix it. The limitations that it imposes on me are not onerous. Although I never mention it out of my own volition, it's not a sensitive issue for me (nothing is). I'm happy to explain it, as I have done here. One could endlessly speculate on how it shaped my childhood experiences and personality, but that'd be a useless exercise. If you were to ask a hundred people who know me to describe me in one sentence, I'd bet that not even one person would say "He's that guy with one eye".
Until I went into computer science at Caltech, I didn't know very much about computers and programming in any formal sense. However, I had deep informal knowledge of computers and some informal exposure to programming, as I had lived with computers since I was very young. Initially, my parents owned a 286, which I barely remember. Home computers were uncommon and expensive things at the time, but for some insane reason, my father let me play on the 286. In this manner, I learned rudimentary things about DOS, like how to change directories. I am relatively reluctant to try new things, so I believe that my early exposure to computers was very important. Using a computer has always felt natural to me.
After the 286 broke, my family upgraded to a 486 DX/33, which had 4 MB of RAM and a 120 MB HD. It was later upgraded with an 8-bit Sound Blaster and a 340 MB HD. Although my entire family used the 486, I used it the most by far. I also maintained its software, especially as time went on. (Any machine that ran DOS 5 and Windows 3.1 was a finicky thing.) The 486 was the golden age of computer gaming for me; on it, I played Syndicate, Raptor, Commander Keen, OMF 2097, and so much more. Around the time that I was in middle school, I worked on greatly enhancing a primitive game, DOUBLE, written in QBASIC by my friend Uche Akotaobi. I committed many great acts of evil.
I associate my early computer experience with the 486 most strongly, since I used it for something like over five years. Near the end of its useful life to me, its lack of a CD-ROM drive became particularly annoying. The 486 remained operational, but we bought a Pentium 200 MMX which ran Windows 95. This computer was eventually damaged when lightning struck the pad-mounted residential distribution transformer that serviced our house. With insurance, we replaced it with a PIII-600 which ran Windows 98 SE. I eventually took this computer to Caltech. At Caltech, I constructed my computers Northwood and Reason, both of which ran Windows XP, from scratch. After I moved to Northy, I no longer needed the PIII-600, so I reformatted it with GNU/Linux and used it to host nuwen.net for quite some time.
Relativism is the view that a belief or action must be understood with respect to the person who holds or performs it. I hate relativism. I am an absolutist; absolutism is the view that whether a belief or action is right or wrong, good or evil, hot or sour, etc. can be understood independently from the person who holds that belief or performs that action. This doesn't mean that things are either completely right or completely wrong with nothing in between; there exists a relativity of wrong, and some things are more wrong than other things. It also doesn't mean that actions are right or wrong independent of the context in which they are performed. It does mean that even if you believe something very strongly and it makes you very happy, you can still be very wrong.
Because I am an absolutist, I describe things in absolute terms - this is X, that is Y, Z is evil. Of course, this is shorthand for "I believe that this is X, I believe that that is Y, I believe that Z is evil". I omit "I believe that" because it's unimportant. If I say that "A is B", then either A actually is B, in which case my believing so is irrelevant, or A actually isn't B, in which case I'm wrong and I'd be just as wrong had I said "I believe that A is B" (except in the most literal way).
Although I describe things in absolute terms, you are free to disagree with me. You're also free to be wrong. Of course, I always believe that I'm right, although with varying degrees of certainty. (Sometimes I don't know enough to hold a view either way.) This doesn't mean that I've always been right. From time to time I've realized that I've been wrong about something, at which point I've promptly changed my beliefs to fit reality. Still, I like to think that I'm right the vast majority of the time, especially about the things that matter. With that said, I'll proceed.
I am a pure mechanist: the universe is a machine, and I view it as such. The machine that is the universe, by its very nature, obeys predictable laws that have so far proven to be discoverable and understandable by human intelligence. Humans, being inside the universe, are also machines and are not exempt from physical laws. Quantum mechanics and general relativity are the best approximations we have so far to the fundamental laws of the universe. Together, they encompass a vast domain and have been repeatedly confirmed to the limits of our technology and experimental ingenuity. Although their domains of applicability are mostly mutally exclusive, and we don't yet understand gravity at the quantum level, this doesn't mean that the universe isn't obeying predictable laws at that level or that we'll never be able to discover or understand those laws. Science is a work in progress.
The universe also obeys higher-order laws, studied by the sciences beyond physics. Atomic theory and evolutionary theory rest on the same solid ground as QM and GR. (Indeed, we know that atoms exist and that organisms evolve, while at the same time we know that QM and GR are incomplete.) I accept the existence of the underlying fundamental laws, as well as the higher-order laws. I also accept the validity of science's methods to determine these laws, and the validity of science's current understanding of the universe insofar as we have tested that understanding. I've phrased this carefully - I don't "believe in science" any more than I believe in atoms. Atoms exist, and science works, and I accept that.
Being a pure mechanist implies that I am an atheist. Although the term "atheist" correctly describes me insofar as it means one who does not believe in the existence of gods, it is an incomplete description. Pure mechanism is not only a description of how [I believe that] the universe works, it also means that [I believe that] no supernatural forces whatsoever exist. Other terms, such as "skeptic" and "secular humanist", also correctly describe me, but inventing my own terminology is my kind of thing. (I do agree with almost everything at The Council For Secular Humanism. In particular, they say that "secular humanists reject supernatural and authoritarian beliefs", which definitely describes me.)
I am utterly convinced that I am correct about how the universe works. The belief that the universe is ultimately comprehensible by human intelligence defines who I am. The only doubt that I hold, which I mention in the interest of completeness, is whether human intelligence is sufficient. Although I consider it unlikely, it may be the case that a superhuman intelligence is required to understand certain things about the universe. By "superhuman", I refer to the Vingean concept of an intelligence beyond the Technological Singularity, not anything supernatural. Because it is possible to, in principle, continuously amplify human intelligence through the Singularity (as opposed to constructing a superhuman artificial intelligence, which would leave us meatbags intrinsically unchanged), I don't consider this possibility to have any grand meaning. If it's truly the case that pre-Singularity intelligence can't understand the universe at its deepest level of operation, that just means that pre-Singularity intelligence is insufficient - it doesn't mean that the universe is fundamentally incomprehensible or mystical. A middle-class person can't buy a teraelectronvolt particle accelerator, but that doesn't mean that such accelerators can't be purchased. (What would be even more surprising is if the deepest laws of nature aren't discoverable by human intelligence, but are comprehensible - that is, if only a superhuman intelligence could notice the laws, but could then go explain them to off-the-shelf humans.)
Of course, many other people are also utterly convinced of the correctness of their beliefs, and many of them are wrong. People who believe in supernatural forces don't particularly offend me as long as they don't talk about it at length or make stupid decisions because of it. The more religious that someone is, the less that their world has in common with my world. Some of my friends were exposed to religion in childhood, but later became atheists. They know stuff about religion, even if they don't believe in it any more. My childhood was somewhat unusual in that my parents were atheists and I grew up with science and rationality. Children are endlessly gullible, but in my case I was taught the right stuff. As a result, I have no experience of what it's like to become an atheist. I've always been one. This, combined with the fact that I'm far better at explaining than arguing, means that I don't attempt to convert anyone to my way of thinking. I do attempt to explain my way of thinking, which is what my website is for.
Reality denial is evil.
I am highly liberal. (Readers outside of the United States should note that I refer to American politics only. "Liberal" and "conservative" have location-dependent meanings.) The most important things to me are science policy and energy policy. For the former, I advocate massively increased funding and the elimination of restrictions on research. (Currently, conservatives like to target stem cell research for ridiculous restrictions, but as science advances, they'll doubtless find something else to sink their claws into.) For the latter, I advocate building nuclear fission power plants again, as well as research into serious replacements for hydrocarbons. (By this, I mean that I don't consider biofuels to be interesting, nor distributed electricity generation schemes.)
The single most important issue to me is within the intersection of science policy and energy policy: nuclear fusion research. ITER is truly the way, and I consider Greenpeace's opposition to ITER to be idiotic.
The Democratic Party's support for increased scientific research and a sane energy policy is severely lacking. Of course, the Republican Party is actively wrong on virtually every issue. The Green Party is not only ineffectual, it's also wrong about nucleics, and the Libertarian Party is really wrong about how economies should be regulated. Therefore, in practice I am a Democrat. On issues other than science and energy (e.g. gun control, reproductive rights, business regulation, etc.), I almost always agree with the Democratic Party.
I won't exhaustively list my political views here, but I vehemently oppose all forms of discrimination. (The American Anthropological Association's Statement On "Race" is an excellent summary of my views.) Another area where the Democratic Party doesn't go far enough is the issue of gay marriage. As of 2004, their platform was that it should be left up to the states, and that it should not be prohibited by an amendment to the Constitution. That's ridiculous. I believe that gay marriage should be made legal at the national level. Of course, I don't think that this is going to happen any time soon in America.
I didn't start listening to music for enjoyment until I started high school, when I began to develop my own preferences. At Caltech, I discovered many artists through mp3.com, such as The Cynic Project. This wonderful website later became defunct and its domain name was acquired by another company.
The majority of music that I listen to lacks vocals. There are several reasons for this: I just don't like listening to most singers, most song lyrics are inane, and listening to vocals largely prevents me from getting any programming or writing done. I do like some songs with vocals, just not very many - this is why my music collection is often largely disjoint from the music collections of other people. Aside from MC Hawking's Entropy, whose phat lyrics are also scientifically accurate, Vienna Teng's My Medea (from her album Warm Strangers) has the best lyrics which I've heard, both in terms of singing and content. When she sings "for you I'd burn the length and breadth of sky", I believe it. That's some next level scary shit, yo. I lump all of the vocal music that I listen to into a single genre (imaginatively named "Vocal"). The actual genres of the artists that I listen to run the gamut from nerdcore (MC Hawking) to Russian (Doctor Watson) to disco (Bee Gees).
I broadly categorize the music without vocals that I listen to into anime, game, and movie, as well as trance and instrumental (since Rob Dougan's album Furious Angels Limited Edition couldn't fit under anything else). The anime music that I most frequently listen to is that from Full Metal Panic (both volumes of the original soundtrack, as well as the soundtracks from Fumoffu and The Second Raid). I particularly like the music from Deus Ex, Halo, Halo 2, One Must Fall (both 2097 and Battlegrounds), SimCity 3000, SimCity 4, and Tyrian. I also love the Star Control II remixes done by the Precursors.
Most of the time I listen to what I call trance. I'm not very discriminating when it comes to classifying music; what I call "trance", others call "techno", "dance", or "electronica". Probably the best-known trance artist that I listen to is Chicane. I also highly recommend Amethystium and Ulrich Schnauss. (These three artists sell CDs through Amazon.) I often listen to songs by Raymond Wave, Oxygenial, and The Cynic Project - all artists I discovered through mp3.com.
I don't know why other people like certain types of music. I especially don't understand how some people can define themselves by the type of music that they listen to. I prefer synthesized music with strong, multilayered, nonrepetitive melodies.
My own musical aptitude is nonexistent.
My personality type falls into the INTP category of the Myers-Briggs Type Indicator. I'm relatively obsessive, which I use as a strength. Precision of expression is very important to me; this serves me well when writing and programming. I'm highly, but not extraordinarily, intelligent - as I discovered at Caltech, I'm best at working with concepts. When I become rabidly interested in something, it consumes most of my thoughts for months or even longer. I'll keep working at it, long after someone else would have gotten bored and turned to something else. This has allowed me to build up ruthless competence even when nothing comes naturally to me at first.
In the physical world, I'm rather reclusive; as a general rule, the only reason that I leave my apartment is to go to work. I occasionally go to the nearby Redmond Town Center to shop, but only once or twice each month. I'm not agoraphobic or shy - I don't particularly fear the outside world. (I do fear getting hit by a car, but that is a purely rational fear.) It's just that I don't particularly enjoy going to other places or being around other people. Average people bore me, and I especially don't like to travel. As a general rule, I am much more interested in ideas than in people, places, or things. I do make exceptions for interesting places and my friends - for example, my favorite family vacation was when we visited Fermilab.
For several reasons, I neither own nor drive a car. Chief among them is the fact that I don't really go anywhere that requires a car. Other reasons include the expense (not only the cost of the car itself, but of gasoline and insurance as well), the danger (cars are obscenely dangerous, and I have no delusions of competency when it comes to driving), and the environmental and geopolitical consequences of consuming gasoline. Instead, I use a Segway to get to work and the Redmond Town Center. This wonderful piece of technology fits my personality perfectly. Fortunately, I live in an area where I can order groceries online from safeway.com. The only inconvenient thing that I have to endure is getting to doctors who have offices far away from my apartment, but that's an infrequent inconvenience.
In addition to cars, I reject a lot of other things. These include smoking (which is vile), drinking alcohol (which is also vile), playing and watching sports (which are boring, although I'm not opposed to other people playing and watching sports), and working with differential equations (vile continuity). My usual way of dealing with something which I don't like is to avoid it entirely if I can't just get rid of it. I especially detest personal conflict.
I describe myself as a nonpracticing heterosexual; I'd like to meet someone clever, fun, and interested in some of the things I'm interested in, but I've never dated anyone. Generally, I resign myself to pining away for fictional women - for example, Dr. Lindsey Novak from Stargate Atlantis. She's so awesome.
In my free time, for entertainment, I play computer games (both PC and Xbox) and read books (both fiction and nonfiction). Occasionally, but less frequently than other people, I watch video - usually SF and anime on DVD, with a select number of shows on television. I definitely don't enjoy parties, but I do enjoy games. I would never choose to go to a party with 15 other people that I hadn't met, but I would jump at the chance to play Halo 2 with them. Or any other game of interest to me - I'm not interested in poker, but I am interested in Go, even though I'm exceptionally lousy at it. I love chess, although I don't play it as much as I'd like to. Chess, which I've played since I was very young, appeals to me in part because it's a game of perfect information - the entire state of the game is always visible to all players.
I use some of my free time for activities that are still enjoyable, but are somewhat closer to the other end of the entertainment-work spectrum. I work on this website, programming, image hacking, and so forth. My website chronicles these creative endeavors. There are several reasons why I like to explain things. I'm good at it, and I always take pleasure in doing something well. Also, developing a clear conceptual explanation of something helps me to understand it more completely. Learning is hard work, filled with lots of trial and error; with a clear conceptual explanation, I can make the process easier for other people. I love to reduce and eliminate complexity.
Although it's not always obvious, I do in fact have a sense of humor. Throughout my writing, I scatter references to things which I consider to be amusing. These references entertain me and serve as rewards for readers who are attentive and knowledgeable. In this, I emulate the holy Jargon File. Usually, I find the juxtaposition of serious and silly things to be hilarious.
I don't really understand other people, so I don't know what they want out of life. I can speculate, though. Some people are focused on social interactions and want love (in a family), respect (in a community), or fame (in the media). Some people want to create beautiful things. Some people want money, and some people want power over other people. There are so many things that people want - some to achieve other ends, others as ends in themselves.
What I want most of all is power, but not power over other people. I want power over the material universe. I also want other people to have this kind of power - I don't want to keep it to myself. By this, I mean technological power and scientific understanding. A Saturn V rocket is one example of technological power, while Newtonian gravitation is an example of scientific understanding.
Such power is ethically neutral - neither inherently good nor inherently bad. However, it does inherently have an amplifying effect. A person with little power over the material universe has little effect, whether good or bad. A person with lots of power over the material universe can accomplish vast acts of greatness or vast evils. It goes without saying that although I want others to be powerful, I also want them to be good. It's easy to make someone more powerful, but hard to make them less evil. For example, I'm all for orbital spaceplanes, but I wouldn't want terrorists to get their hands on such devices. (Unlike some idiots, such as Bill Joy, I don't believe that the potential for misuse of technology should deter us from pursuing that technology. Caution, of course, is always prudent.)
Technological power is important because it gives people increased control over what will happen, both to themselves and to other things and people that they care about. Without power to affect the material universe, the things that you care about will be at the whim of someone else who does have such power, or worse, they'll be at the whim of nature. And the random events of nature are guaranteed to fuck you eventually. For example, antibiotics are powerful because they allow you to control whether your health is affected by bacterial infections. Without antibiotics, you might die of otherwise trivial stuff at any moment. Presidents Garfield and McKinley were assassinated by bullets, but they really died from the resulting infections. They had incredible power over other people, but not enough power over the material universe.
Scientific understanding is also important, even when it doesn't directly lead to technological advancement. (And who knows what will prove to be of value in the future.) Understanding how things work deepens our appreciation of good and beautiful things, and demystifies bad and vile things. Understanding can also help us to avoid bad things, even if we don't yet have the technology to deal with them after they happen. For example, we can't always cure cancer yet. But we do understand that smoking causes cancer. If you don't want to get cancer, then you shouldn't smoke. Of course, you haven't reduced your probability of getting cancer to zero, but at least you've exerted some control over your own fate.
Ultimately, I want to understand, master, and transcend my own limitations. And I want a kitty.
|Peppermint, May 2004|
http://nuwen.net/stl.html (updated 3/15/2010)
Stephan T. Lavavej
This is my personal website. I work for Microsoft, but I don't speak for them.