(I've decided to write a month in review for every month, to chart my progress in research and learning)
This month has been the month where I have really gotten down and dirty in the canon of programming language theory readings. Starting off with fairly little background in formal theory, i've worked up through Chapter 23 in TAPL which is approximately through the basics of pure System F (parametric polymorphism, or "generics" for you object oriented people). I'm no longer scared of small-step derivation rules in papers, although my chance of understanding everything is still fairly low.
Along the research front, things have rotated a bit, but overall little has been accomplished. We have decided to use a XMPP client library and application as a simple demo of the programming style, but it's not as simple as I thought at first. This requires we have XML parsing (since all XMPP communications are XML-based), and it requires sockets (which have not yet been implemented). This is concurrent to a new implementation of message-passing and isolation in the component model, so going too far down the sockets road may lead to a lot of debugging of the underlying component primitives and will have to rewrite a lot.
I started to write a DOM library wrapper for XML for the standard library, but I have run into a number of roadblocks as to the best way to implement things beyond the ECMA standard DOM. We would like to use extractors to simplify the syntax for matching on XPath, and dealing with nodes abstractly- but this requires some hard architecture decisions on the interaction between Thorn code and Java code. This has been complicated by hard-to-find bugs in the existing pattern-matching/extractor implementation.
Ideally, we'd like to have integrated XPath/regex support as described in Matchete: Paths through the Pattern Matching Jungle. I think for now though, actually having literals is something that can be deferred until more important things (like sockets!) are in a usable state.
As far as a project in the Kobayashi-Sumii lab, I have yet to really make any firm decisions as far as what project i'll be working on. I do not have many choices (between things that look both interesting and comprehensible). Early on, this indecision was compounded by the fact that I didn't know any basic type theory, which is what most of their research builds on top of. Lately, I've just been too busy with Thorn stuff and other classes to lay down a judgement.
On the Japanese front, I have nearly conquered the Kanji/Vocabulary book (40 lessons, 10 kanji and ~40 vocab per chapter). This has given me and average Anki load of 300 cards per day, roughly 40-80 new per day, which in total takes usually two to three hours to pound out. The rewards, however, make this a very good use of time. While I certainly have come a long way in my ears being able to keep up with fast native speakers (primarily, undergraduates and researchers), the injection of over a thousand explicitly studied vocabulary has made it a lot easier for my brain to parse all that my ear is hearing.
On the whole, my weekly classes have been frustrating. I had a poor showing for my Coding theory midterm, mostly because the midterm's questions were asked in a highly matrix/linear algebra style, while most of the lectures focused on the intuitive meaning of hamming codes and such. Worse, since the exam is done, the teacher is now teaching the more common way of approaching coding theory, through linear algebra and encode/decode.
Fortunately, most of the rest are only frustrating and have good grades to offset that. Listening class in particular has one of the most vindictive, petty teachers I've had since high school. The other day, I got chewed out in the front of class for writing too long of answers on the dictation quiz.
In the last month, i've also applied for several scholarships, such as the CRA Outstanding Undergraduate Award and the Goldwater Scholarship. The CRA is more of a practice run for next year, but I am very anxious to find out how the Goldwater selection goes. I felt that I had a very strong application this year (especially compared to last year), and my advisors seemed likewise optimistic.
In preparation for applying to graduate school and marketing myself once again, I've started to update my resume, begin work on a CV, and fill in a new web page design. None of these have been uploaded yet, but I think it's important to have an informative and timely homepage, neither of which describes the current incarnation.
As I write this post next month, I will be on my first vacation in a year with Steph. We will be spending the new year in Tokyo, followed by a few days in Kyoto then a week in the Sendai area. I hope to get through the remainder of the TAPL book and some graduate typing papers, and be able to begin the second volume. On the research side, my goal is to have a clear role in one of the lab's projects, and to be improving on a basic implementation of an XMPP client library.