Archive for the ‘Personal’ Category

Why Would a Programmer Like Latin?

My interests reside primarily in modern activities: programming, watching movies, and learning about math and science. However, I have another interest which, at first, appears to have no relevance to anything modern at all: the Latin language.

Starting this year in high school, I decided to drop French and take Latin instead. While this decision was primarily rooted upon my distaste for the school’s designated French teacher, it turned out to be a good decision for an entirely different reason; as it turns out, I find Latin fun.

But–you might ask–why would I think Latin is fun? Well, quite simply, for the same reason that some people believe mathematics to be fun, and for the same reason that I rejoice when I’m writing seemingly boring lines of source code. The joy which I get out of programming and math is because of one simple idea: there are a set of rules which can be applied to tons of situations.

In mathematics, the rules are fairly straightforward: there are operators, variables, functions, and then different sorts of more complex rules as you move down the road (e.g. rules for evaluating limits, sums, derivatives, etc.). These rules can be applied to creating formulas for all sorts of scenarios. In programming, there are variables, operators, functions, classes, and different notations for all of these ideas. With only these small components, pretty much any program can be put together.

Similarly in Latin, there are nouns, verbs, adjectives, etc., all which work together to express any sort of idea. Just like with programming and math, I can understand a set of rules the minute I learn them, but they don’t become a habit–a natural instinct–until I use them a lot. Consider algebra’s order of operations, for instance: at first they are something you know (to some people, they are known simply as PEMDAS), but then they become something you don’t have to think about. I went through a similar process when learning to type in Dvorak, but I won’t go into that here.

About half way through this last school year, I discovered that I actually liked Latin just as much as I typically enjoyed programming. This interest derived from learning the language through formally introduced ideas rather than simply hearing the language spoken and picking it up naturally.

This method of “analyzing” the language probably originated in classrooms as the result of Latin’s status as “dead,” or “unspoken.” However, the process of standardizing and labeling the language caught my interest far more than any living language could. Assigning a formal set of rules to explain a huge corpus of literature, literary dialog, and even Roman graffiti is the same kind of thing that Newton set out to do with his laws of motion (which, I might add, were originally published in Latin).

At some point in the school year, I realized that the classroom wouldn’t thoroughly indulge my interest. For one thing, Latin class only took place five blocks a week with each block lasting 35-40 minutes. Secondly, what ever was I to do in the summer?

As a response to these dilemmas, I bought a textbook and readily began to teach myself Latin. I probably spent several hours a day studying Latin, with no intention of improving my English vocabulary or getting an edge up in class. It was purely for the sake of pursuing my interest. I did, however, notice that I no longer had to do any studying or work for the class; nonetheless, this should be expected if you triple or quadruple your external study time.

This summer, I’ve continued to pursue my interest to the extent of finishing the textbook which I had bought during the school year. This textbook (Wheelock’s Latin) covered many grammatical concepts, although I’m sure that there are still some pieces of literature which I would find significantly difficult to understand. Now I spend some time every day translating various Latin literature for the sake of practice and enjoyment.

Latin opened my eyes to many new ideas of linguistics. On top of this, it made me realize that something doesn’t have to have blinking lights and a metallic exterior in order to be interesting. While I realize that most programmers and mathematicians probably wouldn’t share my same interest, I encourage all of you who find mathematics or programming fun to also try out Latin. In fact, any language may satisfy your interests, so long as you study it in terms of pure rules.

My Progress With Dvorak

I made my last post right after I began learning Dvorak. Now, I am going to give a little update on the experience I had learning it, and the problems that I ran into. First off, let’s get something out of the way: I am typing this article in Dvorak, and I am typing at about 50 words per minute, a speed that I have perceived to be above-average for only 1-2 weeks of practice. So, how did I come this far in such little time? Simple. I immersed myself.

Two weeks ago began my spring break, and, as a programmer with a limited range of interests, I was inclined to spend pretty much all of my time in front of a computer, either typing out code or messaging friends online. Because both of these activities require lots of typing, it is safe to say that I spent at least 10 hours a day pounding away at my keyboard. Of course, being the huge geek that I am, I did not let this time go to waste. Instead, I spent every moment of it with my computer set to the Dvorak keyboard layout, despite the agony that I knew I would experience in the midst of my slowness.

However, such a task as immersing oneself in Dvorak does yield dangerous consequences. There was a point a few days ago when I wondered how my QWERTY typing was being affected, so I flipped back over to give it a try. Now, I may have been a rare case, since I never typed correctly in QWERTY to begin with. I typically find that, when using QWERTY, I use the wrong hand for keys such as Y and B, and I sometimes even use my index fingers in the place of my pinkies. Because of this, touch-typing 100% correctly in Dvorak seemed to have adversely affected my QWERTY muscle memory, leading to the trouble that I encountered. In fact, I could not type anything comprehensible at all. However, after several hours of looking at the keyboard and thinking when I got confused, I completely regained my QWERTY abilities. However, once I proved my ability to recall QWERTY if necessary, I transitioned once again to Dvorak and continued my immersion.

One of the interesting things I found when learning Dvorak was this: there are really three unique stages of learning to type with Dvorak, or any other keyboard layout, for that matter. The first stage is what I like to call the “Visual Stage.” This is the stage when, having been previously unexposed to the Dvorak layout, a typist needs to look at a diagram of the keyboard layout or the keyboard itself for the sake of pressing the right key.

The next stage comes around when the typist comes to know the position of the keys, but still must use some sort of mental process to recall the location of any given key. The time that the typist takes to do this could range from a quarter of a second to 3 or 4 seconds, but the idea remains the same: the typist must think about every individual key. This stage seems to carry the most rapid improvement, and the typist should notice an increase from something like 12 WPM to something more like 25-30 WPM. This change reflects on the decrease in response time for each individual key. Remember, during this stage any improvements are usually on a key-by-key level. However, a transition is made to the next stage when the typist begins to get more used to typing any given sequence of letters at once, and begins thinking more in the context of words than in letters.

When the next phase comes around, which I like to call the “Word Phase,” it is best to practice by thinking of English sentences and typing them out. Once in this phase, all improvement pretty much reflects on the typist’s ability to type a common sequence of letters without thinking about doing so. This muscle memory can only be gained by repetition, and such repetition is easy to obtained by typing sentences, thoughts, words, etc. I found that writing code was not particularly helpful in this stage. Instead, I downloaded a list of common English words and typed them repetitively for several hours, phenomenally increasing my speed for those particular words, and even words with similar patterns to them.

All and all, learning Dvorak was a frustrating yet rewarding experience. I am still nowhere near as good at Dvorak as I am with QWERTY, but I am now to a point where my conversations, programs, and writing is not limited by my keyboard layout. I anticipate that I will continue to use this layout in the future, and that I will someday use Dvorak to surpass my QWERTY record of 106 WPM. I wish any of you out there who attempt to do likewise the best of luck. Such a process is easiest if you think not of the final goal, but instead calmly observe the process through which your skills develop.

Why Focus on What You’re Good At?

Recently, I haven’t been programming as much as I should have been, mainly because of school and general overall laziness. There could be many opinions about this change, such as those from educational boneheads who would say something like “yeah, that’s good, what’s the computer gonna do for you anyway?” There are also those opinions of people who would say “well, that’s ashame, but it’s a good thing that you’re focusing on school, anyway.” Well, it’s opinions like these that caused me to dig myself into a psychological rut in the first place. The fact of the matter is, I am not smarter than anyone else, and I am no better at doing things such as studying history, or writing about literature than anybody else. What I am better at is programming, and in general I find that programming is pretty much the only activity that I genuinely enjoy doing.

Last year we took a survey at school that featured questions such as “do you find yourself excelling above your peers in any academic subjects?” It also included other questions such as “do you believe yourself to be a valuable member of society?” The thing is, I answered “No” for the first, and “Yes” for the second. Although I never found myself excelling in any particular subject in school, I programmed a whole lot, and was aware that other people were envious of my programming abilities.

This year, however, I managed to focus all of my energy on school, which in turn lessened the amount of energy that I focused on programming. After a while the pattern of not programming became imposed on my brain in such a way that I no longer had any motivation to program, since I had not experienced the thrill of it for such an extended period of time. I noticed this phenomenon after winter break this year when I looked back on what I had coded during that time, and realized how little I had done compared to last year’s winter break. Given this realization, I began to worry that I was no longer interested in programming, and that the one thing that I was really good at was beginning to slip away.

Unfortunately, right after this year’s break, teachers began piling work on students, which was probably driven by a feeling of a lack of accomplishment that was left from two weeks of not teaching. This made it difficult for me to get any programming time at all. Without anything to turn to for comfort or stability, with which programming used to provide me, I managed to get very depressed during the course of the past two weeks. I won’t go into the details of what I felt, but I can tell you that I would not have felt that way had I programmed more during those two weeks.

Finally, though, this weekend arrived and I saw a great opportunity. Because Monday (Jan 16, 2012) is MLK day, it was a three day weekend, and I was finally able to get in some quality programming time. Starting on Friday night, I worked on a typing test application for Mac, which I had started a few weeks before but had not made much progress on since. I also worked on an iOS application that I called GuessNumber, about which I wrote another post to this same blog. I also worked on a Connect4 application for HTML5, which was a rather moot project as I realized on Sunday morning. But, I didn’t let anything stop me from working on another application. For all of Sunday and into Monday (today), I worked on an application called ABCleaner, that clears out duplicates from the user’s AddressBook. For this app, it was especially fun to design the GUI, which is usually a nice treat, given that I don’t program GUIs regularly.

Overall, I wrote at least a thousand lines of code this weekend, if not more. And, to be honest, it was the most fun I’ve had since the summer. I mean, I probably had some school work to do that I haven’t done yet, but honestly I needed to get school and people out of my mind and focus on what actually makes me happy. Right now I have more self-confidence and feeling of accomplishment than school will ever be able to provide me with, and it’s all because I did something that I love, and that I’m good at. So, my message to all that are reading this is simple: do what makes you happy, even if it’s not what other’s think you should be doing. You’re not going to be able to accomplish anything if what you’re trying to accomplish won’t make you feel good about yourself, because even if you do “accomplish” an uninteresting task, did you really accomplish anything?

Return top